簡體   English   中英

Python Import Star創建隱藏的命名空間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM