1

これが私のコードです:

モジュール settings.py:

My_KEY = ""

この MY_KEY を別のモジュールで使用しています

my_module.py

from settings import My_KEY


def function_a():
    MY_KEY = "abcd"


def function_b():
    function_a();
    print My_KEY

function_b() を呼び出すと、出力に "abcd" が表示されるはずですが、どうして空の文字列が表示されるのでしょうか。私は完全に迷っています

4

3 に答える 3

0

スコーピングは問題の一部ですが、変数のインポート方法にも注意する必要があります。from settings import My_KEY元の文字列を指すローカル モジュールの名前空間に新しい変数を作成します。モジュールの My_KEY に別の文字列を割り当てても、設定モジュールの My_KEY には影響しません。変更可能なオブジェクトを変更するときは問題ありませんが、値を再割り当てするときはいつでも、モジュール自体をモジュールにインポートし、変数のドット名を使用する方がよいでしょう。

settings.py:

My_KEY = ""

次に、シェルでの簡単なテスト

>>> from settings import My_KEY
>>> def function_a():
...     global My_KEY
...     My_KEY="abcd"
... 
>>> My_KEY
''
>>> function_a()
>>> My_KEY
'abcd'
>>> 
>>> # here's where it gets funky... the original settings.My_KEY didn't change 
>>> 
>>> import settings
>>> settings.My_KEY
''
>>> 
于 2013-08-20T22:41:54.853 に答える