3
から変数を変更することはできませんおよび:は、私は<strong>Module1の</strong>で宣言された機能を持っているインポートモジュール
>>> from module1 import *
>>> a
1
>>> foo()
in : 1
out: 0
>>> a
1
ハイa
はまだ1ですか?
から変数を変更することはできませんおよび:は、私は<strong>Module1の</strong>で宣言された機能を持っているインポートモジュール
>>> from module1 import *
>>> a
1
>>> foo()
in : 1
out: 0
>>> a
1
ハイa
はまだ1ですか?
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
は説明をありがとう! それでどうすればいいですか? 'import *'を使用せず、 'shared.a'を代わりに使用しますか? – Iliaspice
@Iliaspiceもしあなたが 'shared.a'を再割り当てしたいのなら、基本的にあなたの唯一の選択肢です – dhke