Pythonでの名前空間とスコープ
変数は、オブジェクトにマップする名前(識別子)です。名前空間は、変数名(キー)とそれに対応するオブジェクト(値)の辞書です。
Pythonステートメントは、ローカル名前空間とグローバル名前空間の変数にアクセスできます。ローカル変数とグローバル変数の名前が同じである場合、ローカル変数はグローバル変数をシャドウイングします。
各関数には、独自のローカル名前空間があります。クラスメソッドは、通常の関数と同じスコープルールに従います。
Pythonは、変数がローカルであるかグローバルであるかについて、知識に基づいた推測を行います。関数で値が割り当てられた変数はすべてローカルであると想定しています。
したがって、関数内のグローバル変数に値を割り当てるには、最初にグローバルステートメントを使用する必要があります。
ステートメントglobalVarNameは、VarNameがグローバル変数であることをPythonに通知します。 Pythonは、変数のローカル名前空間の検索を停止します。
たとえば、グローバル名前空間で変数Moneyを定義します。関数Money内で、Moneyに値を割り当てるため、PythonはMoneyをローカル変数と見なします。ただし、設定する前にローカル変数Moneyの値にアクセスしたため、結果はUnboundLocalErrorになります。グローバルステートメントのコメントを解除すると、問題が修正されます。
#!/usr/bin/python Money = 2000 def AddMoney(): # Uncomment the following line to fix the code: # global Money Money = Money + 1 print Money AddMoney() print Money
-
Pythonでグローバル変数を宣言する方法は?
グローバル変数とは何ですか? グローバル変数は、関数の外部で宣言される変数ですが、関数の内部で使用する必要があります。 例 def func(): print(a) a=10 func() 出力 10 ここで、変数aはグローバルです。関数の外部で宣言され、関数の内部でも使用できるため。したがって、変数aのスコープはグローバルです。 関数内にグローバル変数と同じ名前の変数を作成するとどうなるかを見ていきます。 上記の例では、変数aは関数の外部で宣言されているため、グローバルです。 関数内で同じ名前の別の変数を別の値で宣言した場合。その変数は関数のローカル変数と
-
Pythonの名前空間とスコープ
Pythonでは、変数、関数、ライブラリ、モジュールなどを扱います。使用する変数の名前が、別の変数の名前として、または別の関数や別のメソッドの名前としてすでに存在している可能性があります。このようなシナリオでは、これらすべての名前がPythonプログラムによってどのように管理されているかを知る必要があります。これが名前空間の概念です。 以下は名前空間の3つのカテゴリです ローカル名前空間:プログラムによって宣言された関数と変数のすべての名前は、この名前空間に保持されます。この名前空間は、プログラムが実行されている限り存在します。 グローバル名前空間:この名前空間は、Pytho