22

グローバル変数があるとしますa。また、関数定義内には、という名前のローカル変数もありますa。グローバル変数の値をローカル変数の値に割り当てる方法はありますか?

a = 'foo'

def my_func(a = 'bar'):
    # how to set global a to value of the local a?
4

4 に答える 4

36

組み込み関数globals()を使用します。

globals()

現在のグローバル シンボル テーブルを表す辞書を返します。これは常に現在のモジュールのディクショナリです (関数またはメソッド内では、これはそれが定義されているモジュールであり、それが呼び出されたモジュールではありません)。

a = 'foo'

def my_func(a = 'bar'):
    globals()['a'] = a

ところで、グローバルはモジュールのスコープ内でのみ「グローバル」であることに言及する価値があります。

于 2012-04-19T20:21:05.540 に答える
1

そもそもグローバル名前空間とローカル名前空間を混同しないでください。可能であれば、常にグローバル変数ではなくローカル変数を使用してみてください。スコープ間で変数を共有する必要がある場合でも、グローバル プレースホルダーを必要とせずに変数を渡すことができます。ローカル変数は、グローバル変数よりもはるかに効率的に参照されます。

いくつかのリンク:

Python で変数を共有する

可変性能

于 2012-04-19T20:25:29.503 に答える
1
>>> a = 'foo'
>>> def my_func(a='bar'):
...     return globals()['a']
...
>>> my_func()
'foo'
于 2012-04-19T20:23:03.383 に答える
0

グローバルバージョンが必要であることを python に知らせます。

def my_func():
    global a
    a = 'bar'
于 2012-04-19T20:13:04.410 に答える