[英]Python Import Star Creating Hidden Namespace?
我最近遇到了一些不尋常的行為。
foo.py
a = 0
def bar():
print (a)
安慰:
>>> import foo
>>> foo.bar()
0
>>> foo.a = 10
>>> foo.bar()
10
安慰:
>>> from foo import *
>>> bar()
0
>>> a
0
>>> a = 10
>>> a
10
>>> bar()
0
我推斷import *
實際上是創建兩個副本a
-一個全局命名空間和一個里面foo
不能訪問模塊。 這種行為是在任何地方解釋/記錄的 我在找出要搜索的內容時遇到了麻煩。
這似乎是import *
的顯着和意想不到的結果import *
但由於某種原因,我以前從未見過它。
在Python中沒有隱藏的命名空間,所描述的行為是正常的和預期的行為。
您應該閱讀https://docs.python.org/3/tutorial/modules.html#more-on-modules ,以便更好地了解全局變量的工作方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.