2017-06-19 5 views

答えて

2

Hrm、私はかなりそこに浮かんでいる質問への答えがあるはずだと確信していましたが、私はそれを見つけることができないようです。それでは、ここに行きます:

from shared import *sharedモジュールのすべての(エクスポートされた)フィールドを現在の名前空間にインポートします。これは、モジュールからのフィールドを反復し、変数を現在の名前空間に、モジュールと同じ名前で割り当てることによって行います。

>>> dir() 
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__'] 
>>> from shared import * 
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a'] 

私たちの現在の名前空間は、今aという名前の変数が含まれていることに注意してください。

aの値はshared.a(インポート時)と同じですが、それ以上の接続はありません。ネームスペースにaを再割り当てしても、インポートされたモジュールには影響しません。あなたは、モジュールから再び名に引っ張った場合

実際には、あなたのローカル値を上書きします:

>>> a = 5 
>>> a 
5 
>>> from shared import a 
>>> a 
1 
+0

は説明をありがとう! それでどうすればいいですか? 'import *'を使用せず、 'shared.a'を代わりに使用しますか? – Iliaspice

+1

@Iliaspiceもしあなたが 'shared.a'を再割り当てしたいのなら、基本的にあなたの唯一の選択肢です – dhke

関連する問題