のは、a.pyが可能てみましょう:"import module"と "from module import *"のグローバル変数に関して動作が異なるのはなぜですか?
def foo():
global spam
spam = 42
return 'this'
コンソールで、私だけでimport a
場合、物事は私には意味をなさない:しかし
>>> import a
>>> a.foo()
'this'
>>> a.spam
42
、私はあまり人気ことを行う場合...
>>> from a import *
>>> foo()
'this'
>>> spam
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'spam' is not defined
>>> a.spam
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
名前空間が「from module import *
」のように人々が好きではないとの意見を読んだしかし、私はこの行動について何も見つけることができず、率直に言って、これが私が偶然に起こした問題であることを理解しました。
'a.py'で定義された' globals'はそのモジュール自体でグローバルになるので、インポートするグローバル変数は定義しません。 'foo .__ globals__'をチェックしてください。 –
[各モジュールには独自のプライベートシンボルテーブルがあり、モジュールで定義されているすべての関数でグローバルシンボルテーブルとして使用されます...](https://docs.python.org/3/tutorial/modules.html#more -on-modules) –