Web では python の名前について多くの混乱があり、ドキュメントは名前についてそれほど明確ではないようです。以下は、Pythonの名前について私が読んだいくつかのことです。
名前はオブジェクトへの参照 (どこにある? ヒープ?) であり、どのような名前が保持されているかはアドレスです。(Javaのように)。
Python の名前は C++ 参照 ( int& b) のようなもので、メモリ ロケーションの別のエイリアスであることを意味します。つまり、 for
int a
はa
メモリ ロケーションです。ifは、同じメモリ位置の別の名前であるint& b = a
ことを意味しますb
名前は、C の自動的に逆参照されるポインター変数に非常に似ています。
上記の記述のうち、正しい/正しいものはどれですか?
Python の名前にはある種のアドレスが含まれていますか、それとも単なるメモリ位置の名前 (C++&
参照など) ですか?
Python名はスタックまたはヒープのどこに保存されますか?
EDIT
:
http://etutorials.org/Programming/Python.+Text+processing/Appendix+A.+A+Selective+and+Impressionistic+Short+Review+of+Python/A.2+Namespaces+から以下の行を確認してください。 and+Bindings/#
(修飾されている可能性がある) 名前が代入の右側または単独の行にある場合は常に、その名前はオブジェクト自体に逆参照されます。アクセス可能なスコープ内でバインドされていない名前は、逆参照できません。そうしようとすると NameError 例外が発生します。名前の後に左右の括弧が続く場合 (カンマで区切られた式が間にある可能性があります)、オブジェクトは逆参照された後に呼び出されます。呼び出し時に正確に何が起こるかは、Python オブジェクトに対して制御およびオーバーライドできます。ただし、一般に、関数またはメソッドを呼び出すと何らかのコードが実行され、クラスを呼び出すとインスタンスが作成されます。例えば:
pkg.subpkg.func() # 名前空間から関数を呼び出す
x = y # 'y' を deref し、同じオブジェクトを 'x' にバインドします
これは理にかなっています.それがどれほど真実であるかをクロスチェックしたいだけです.コメントと回答をお願いします