グローバル変数はPythonでどのように機能しますか? 私はグローバル変数が悪であることを知っています。私はただ実験しているだけです。
これは Python では機能しません:
G = None
def foo():
if G is None:
G = 1
foo()
エラーが発生します:
UnboundLocalError: local variable 'G' referenced before assignment
私は何を間違っていますか?
グローバル変数はPythonでどのように機能しますか? 私はグローバル変数が悪であることを知っています。私はただ実験しているだけです。
これは Python では機能しません:
G = None
def foo():
if G is None:
G = 1
foo()
エラーが発生します:
UnboundLocalError: local variable 'G' referenced before assignment
私は何を間違っていますか?
global次のステートメントが必要です。
def foo():
global G
if G is None:
G = 1
Python では、割り当てる変数はデフォルトでローカル変数になります。globalそれらをグローバル変数として宣言するために使用する必要があります。一方、参照しても代入しない変数は、自動的にローカル変数にはなりません。これらの変数は、囲んでいるスコープ内の最も近い変数を参照します。
Python 3.x は、nonlocalに類似したステートメントを導入しglobalますが、変数を最も近い外側のスコープにバインドします。例えば:
def foo():
x = 5
def bar():
nonlocal x
x = x * 2
bar()
return x
この関数は、呼び出されると 10 を返します。
その関数内から、G をグローバルとして宣言する必要があります。
G = None
def foo():
global G
if G is None:
G = 1
foo()
print G
単純に出力する
1
次のように関数内で G をグローバルとして定義します。
#!/usr/bin/python
G = None;
def foo():
global G
if G is None:
G = 1;
print G;
foo();
上記の python は1.
このようにグローバル変数を使用することは、悪い習慣です。