簡體   English   中英

Python 導入和全局變量

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

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