>>> import math
>>> math.pi
3.141592653589793
>>> math.pi = 3
>>> math.pi
3
>>> import math
>>> math.pi
3
最初の質問: なぜmath.pi戻れないのですか?
import定義されたすべての変数と関数を現在のスコープにインポートすると思いました。また、変数名が現在のスコープに既に存在する場合は、それが置き換えられます。
はい、それはそれを置き換えます:
>>> pi = 3
>>> from math import *
>>> pi
3.141592653589793
次に、インポートさ math.pi = 3れたプロパティが割り当てによって実際に変更された可能性があると思いましたmath class(またはそれmath moduleですか?) 。import math
私が正しかった:
>>> import math
>>> math.pi
3.141592653589793
>>> math.pi = 3
>>> from math import *
>>> pi
3
したがって、次のようになり
ます。そうすると、クラスのようなものとしてimport xインポートされます。xx.property に変更を加えた場合、その変更はモジュールに保持されるため、再度インポートするたびに変更されたバージョンになります。
本当の質問:
- なぜ
importこのように実装されているのですか?すべてimport mathのインポートで の新しい未変更のコピーを許可しないのはなぜmathですか? インポートさmathれたものを変更できるようにしておくのはなぜですか? math.pi実行後に戻るための回避策はありますかmath.pi = 3(もちろん、を除くmath.pi = 3.141592653589793)?- もともと私
import mathはよりも好ましいと思っていましたfrom math import *。しかし、この動作により、この方法でインポートしたモジュールを他の誰かが変更している可能性があるのではないかと心配になります...どうすればよいimportですか?