如何在Python中使用外部變量,例如C中的extern int x;
?如何在Python中使用外部變量,如'extern int x;'在C?
例如,
main1.py:
from myfunc import print_a
a = 10
print a
print_a()
myfunc.py:在該模塊中
def print_a():
global a
print a
如何在Python中使用外部變量,例如C中的extern int x;
?如何在Python中使用外部變量,如'extern int x;'在C?
例如,
main1.py:
from myfunc import print_a
a = 10
print a
print_a()
myfunc.py:在該模塊中
def print_a():
global a
print a
只需重新分配變量:
import myfunc
from myfunc import print_a
a = 10
print a
myfunc.a = a
print_a()
否則這是不可能的。
Rememeber的方式,從C. 在Python不不在那個地方的文件的「複製內容」, 的import
完全不同了Python對待模塊,但它在執行代碼給定文件並創建一個module
對象。
模塊的全局變量是module
對象屬性,可以按照我所示進行修改。除了內置插件外,沒有像「全局變量」這樣的概念。
我建議重構你的代碼,這樣你就不必在所有修改這個全局變量的方式,移動使用myfunc.a
從main1
到myfunc
代碼。 事實上,你需要這樣的全局變量已經是代碼異味,你的代碼有問題,你應該嘗試修復它。
實際上有一種方法可以影響「全球範圍」,但它是如此駭人,我甚至不想提及它。相信我:你不想使用它。如果人們使用這種黑客來看你的代碼,你可能會面臨身體危險。
不同於C,在全局範圍內聲明的變量仍然在範圍上創建它們在模塊的限制,所以你需要用它生活在該模塊限定名稱a
。
的global
關鍵字時使用你要修改通過重新分配一個全局變量,當你只是引用一個全局變量時你不需要它。
如果您嘗試訪問其他文件的變量,你必須導入模塊,而且由於你的文件是結構化的方式,你有一對夫婦的方式來解決問題:
選項:1)移動myfunc.print_a
內部函數和import main1
內myfunc
的參考看到a
MAIN1。PY
import myfunc
a = 10
def main():
print a
myfunc.print_a()
if __name__ == '__main__':
main()
myfunc.py
import main1
def print_a():
print main1.a
選項2)建議移動變量(多個)到另一個模塊並同時具有myfunc
和main1
進口它。
vals.py
a = 20
main1.py
import vals
from myfunc import print_a
vals.a = 10
print vals.a
print_a()
myfunc.py
import vals
def print_a():
print vals.a
+1 「人身危險」。 – Matthias
但是OP想要使用'main1'中的'a'變量,而不是僅僅看到它的副本 –
@RyanHaining你在哪裏看到一個「複製」?在我的示例中,我只是簡單地添加/更改* reference *,它並不意味着複製任何內容,因此對其他模塊中的變量的更改會在asweel中看到,除非對象是不可變的(在這種情況下,您不應該無論如何關心身份)。 – Bakuriu