ホームページ  >  記事  >  バックエンド開発  >  Python の __builtins__ 組み込みオブジェクトの詳細な分析

Python の __builtins__ 組み込みオブジェクトの詳細な分析

WBOY
WBOYオリジナル
2016-07-06 13:30:001756ブラウズ

パッケージとモジュールについてすでに学習している場合。
興味がありますか: Python では、str() int() dir() などの一部の組み込み関数を明示的にインポートせずに直接使用できるのはなぜですか?
その理由は、Python インタープリターが初めて起動されたときに、__builtins__ がすでに名前空間に存在しているためです (注: が存在します)

シェルに入って以下を確認してください:

リーリー


__builtin__ を再度インポートできます (注: はありません):

リーリー


この時点で、追加の __builtin__ オブジェクトがあり、それらが同じかどうかを判断できます:

リーリー


次に、ファイルからインポートします:

リーリー


結論:
__builtins__ は組み込みモジュール __builtin__ への参照であり、次の 2 つの違いがあります:

メインモジュール内、つまり他のファイルによってインポートされません。 __builtins__ は __builtin__ 自体への参照であり、この 2 つは同一です。

__builtins__ による推測は __builtin__.__dict__:
非「__main__」モジュール、つまりモジュールがインポートされた後、__builtins__ は __builtin__.__dict__ の一部である必要があり、組み込み自体ではなく、__builtin__.__dict__ への参照になります。現時点では、builtins Type はどこにでも表示されます。辞書。

組み込み関数を装飾する
公式 Python ドキュメントでは、組み込み関数を修飾する方法について説明しています:

リーリー

注: Python3.X バージョンでは、組み込みモジュールの名前が buildins に変更されており、Python2.X とは異なります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。