1. ホーム
  2. python

Python3の__builtin__モジュールはどこにあるのですか?なぜ改名されたのですか?

2023-09-02 18:16:55

質問

私が気になったのは __builtin__ モジュールとその使い方が気になったのですが、Python3では見当たりません!? なぜ移動されたのでしょうか?

Python 2.7

>>> import __builtin__
>>>

Python 3.2

>>> import __builtin__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named __builtin__
>>>

どのように解決するのですか?

この __builtin__ モジュールは builtins に変更されました。

この変更により、平均的なPython開発者にとっての2つの混乱の原因が解決されます。

  • それは '__builtins__' または '__builtin__' がグローバルな名前空間にある場合、それはどうなるのでしょうか? ダーンs!
  • __builtin__ a 特殊メソッド名 またはモジュール? 私は はわかりません。

このような混乱が生じるのは、主に違反した pep8 の規約に違反するためです。 また、モジュールに複数形がないことも、コミュニケーションを妨げています。 この2つは、Guidoが次のように説明しなければならない長さによって、大いに説明されます。 http://mail.python.org/pipermail/python-ideas/2009-March/003821.html :

[CPython]は、特別なマジック・エントリを含むグローバルに注目します。 __builtins__ (s'がついている) という特別なマジックエントリがあり、これが組み込み関数が検索される dict です。この dict が デフォルト である) 組み込みのディクショナリ (これは __builtin__.__dict__ ここで __builtin__ -- はビルトイン関数を定義したモジュールです。 スーパーバイザー権限が与えられます。

例えば

Python2.7

>>> import __builtin__
>>> vars(globals()['__builtins__']) is vars(__builtin__)
True
>>> 

Python3.2

>>> import builtins
>>> vars(globals()['__builtins__']) is vars(builtins)
True
>>>

関連リソース :

その他の名称変更 http://docs.pythonsprints.com/python3_porting/py-porting.html#name-changes

の簡潔な説明のために __builtins__ が名前解決にどのように使われるかを簡潔に説明します。 Pythonの__builtin__モジュール