私はモジュールから呼び出している関数を持っています。関数内で私がアクセスしようとしている2つの変数はグローバルになります。私がIDLEでモジュールを単独で実行すると、関数が終了した後でも期待どおり変数にアクセスできます。私がモジュールをインポートしたコードで関数を呼び出すと、変数にアクセスすることができません。インポートされたモジュール内の関数からグローバル変数にアクセス
#module to be imported
def globaltest():
global name
global age
name = str(raw_input("What is your name? "))
age = int(raw_input("What is your age? "))
単独で実行すると出力されます。
>>> globaltest()
What is your name? tom
What is your age? 16
>>> name
'tom'
>>> age
16
ここでコードをインポートします。
import name_age
name_age.globaltest()
しかし、私がそれをインポートしたコードの変数にアクセスしようとすると、私はモジュールをインポートまたは機能に「名前」や「年齢」変数にアクセスしているコードでは、変数のグローバルを作ることができますどのように
What is your name? tom
What is your age? 16
>>> name
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
name
NameError: name 'name' is not defined
>>>
。
スターの輸入はグローバルとして悪としてについてです。 @badathings:_dont_これを行う。 –
@ bruno desthuilliers:ありがとう、ありがとう。 –
[PEP8](http://legacy.python.org/dev/peps/pep-0008/#imports)より*ワイルドカードのインポート( import *)は、どの名前が存在するのか不明確なので避けるべきです名前空間では、読者と多くの自動ツールを混乱させる... "* –
SiHa