グローバル変数があるとしますa
。また、関数定義内には、という名前のローカル変数もありますa
。グローバル変数の値をローカル変数の値に割り当てる方法はありますか?
a = 'foo'
def my_func(a = 'bar'):
# how to set global a to value of the local a?
グローバル変数があるとしますa
。また、関数定義内には、という名前のローカル変数もありますa
。グローバル変数の値をローカル変数の値に割り当てる方法はありますか?
a = 'foo'
def my_func(a = 'bar'):
# how to set global a to value of the local a?
組み込み関数globals()
を使用します。
globals()
現在のグローバル シンボル テーブルを表す辞書を返します。これは常に現在のモジュールのディクショナリです (関数またはメソッド内では、これはそれが定義されているモジュールであり、それが呼び出されたモジュールではありません)。
a = 'foo'
def my_func(a = 'bar'):
globals()['a'] = a
ところで、グローバルはモジュールのスコープ内でのみ「グローバル」であることに言及する価値があります。
そもそもグローバル名前空間とローカル名前空間を混同しないでください。可能であれば、常にグローバル変数ではなくローカル変数を使用してみてください。スコープ間で変数を共有する必要がある場合でも、グローバル プレースホルダーを必要とせずに変数を渡すことができます。ローカル変数は、グローバル変数よりもはるかに効率的に参照されます。
いくつかのリンク:
>>> a = 'foo'
>>> def my_func(a='bar'):
... return globals()['a']
...
>>> my_func()
'foo'
グローバルバージョンが必要であることを python に知らせます。
def my_func():
global a
a = 'bar'