組み込み関数を隠してしまった場合

この記事は Python Tips Advent Calendar 2012 19日目の記事です。


Python には何も import しなくても使える組み込み関数がありますが、これらと同名の変数を定義することができます。

>>> id             # id 組み込み関数
<built-in function id>
>>> id = 10        # 同名の変数を定義
>>> id             # id 組み込み関数が隠れる
10

このように、同名の変数を定義すると、その組み込み関数は見つからなくなります。


もしこの状態で組み込み関数を使いたいなら、以下のように __builtin__ モジュールから取得します。

>>> import __builtin__
>>> __builtin__.id
<built-in function id>

__builtins__ (s 付き)を使うのは間違いです。これは実装の詳細であるため、ポータビリティは無く、動作は保証されません。


.