![](/img/trans.png)
[英]'global name <function in same namespace> is not defined' - why is this happening?
[英]Is the global name 'a' in the same namespace as the module?
import math
a = 1
def my_func():
print('don\'t downvote')
my_func()
我相信 function 調用my_func( )位於為 function my_func( )創建的本地命名空間中 - 准備更正。 名稱a是否包含在為數學模塊創建的同一個全局命名空間中?
不,假設您的文件名為foo.py
。 導入模塊后,會為foo
創建一個新的全局命名空間,它包含(除其他外)三個名稱:
math
,指的是math
模塊`my_func
,指的是您的 functiona
,它指的是 1 調用 function 的位置並不重要。 如果my_func
包含任何自由變量,它們將始終引用foo
的全局命名空間,而不是調用它的命名空間。
math
模塊有自己的全局命名空間。 (“全局”確實不是一個好詞;每個模塊都有自己的模塊級命名空間。)
Python 中唯一的“全局”命名空間是內置命名空間,可從所有模塊訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.