[英]Python Import and Global Variables
假設我有一個文件:
# main.py
import foo
my_global = "global variable"
foo.print_global()
另一個:
# foo.py
def print_global():
global my_global
print(my_global)
當我運行main.py
時,為什么會出現NameError: name 'my_global' is not defined
? 如何使my_global
可用於foo.py
? 嘗試是不是一個壞主意 - 也許在這種情況下我應該總是將值作為函數參數傳遞?
Python 沒有進程范圍的全局變量,只有模塊級的全局變量。 foo.print_global
看foo.my_global
,而不是main.my_global
,這是你設置的。 也就是說, print_global
用於全局變量的范圍是在定義print_global
確定的,而不是在調用它時確定。
這會做你所期望的。
import foo
foo.my_global = "global variable"
foo.print_global()
請注意,在調用print_global
之前, foo.py
不應依賴其他人創建其全局變量; 至少, foo.py
應該將my_global
初始化為None
,如果不是其他一些默認值。
還要注意的是上面的解決方案是不一樣的
from foo import my_global
my_global = "..."
這造成當前模塊,這是使用的當前值初始化一個新的全局名稱foo.my_global
。 隨后的賦值更改了“本地”全局變量的名稱,而不是foo.my_global
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.