私は Python を初めて使用し、他の人が作成したコードに取り組み始めました。
Pypi からダウンロードしたパッケージのソースで、次の使用に気付きました
import __module__
src
パッケージのフォルダーで定義された関数とクラスを使用します。
これは一般的な方法ですか?私は実際にこの種の構文を本当に理解することはできません。
私は Python を初めて使用し、他の人が作成したコードに取り組み始めました。
Pypi からダウンロードしたパッケージのソースで、次の使用に気付きました
import __module__
src
パッケージのフォルダーで定義された関数とクラスを使用します。
これは一般的な方法ですか?私は実際にこの種の構文を本当に理解することはできません。
これは、いくつかの組み込みオブジェクトの Python 規則です。PEP8 から:
__double_leading_and_trailing_underscore__
: ユーザー制御の名前空間に存在する「魔法の」オブジェクトまたは属性。例えば__init__
、__import__
または__file__
。そのような名前を発明しないでください。文書化されたとおりにのみ使用してください。
しかし、結局のところ、理解するかどうかは「一種の構文」ではなく、__module__
アンダースコアが含まれているだけの名前です。とは異なり、まったく関係ありませんmodule
。
単なる名前であることを示す例:
>>> __foo__ = 42
>>> print foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> print _foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_foo' is not defined
>>> print __foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '__foo' is not defined
>>> print __foo__
42
>>> type(__foo__)
<type 'int'>
それについて本質的に特別なことは何もありません。
ただし、これをどこで見たかについての詳細情報がなければ、作者の意図が何であったかを言うのは困難です. いくつかの python ビルトイン (例: from __future__ import...
) をインポートしているか、PEP8 を無視して、このスタイルのいくつかのオブジェクトに名前を付けているかのどちらかです。