[英]Global variable changed by multiple functions - how to declare in Python
我在多個函數中使用了一些變量。
這包括通過每個函數更改變量值。
我已經在第一個函數中將變量聲明為'global'。
我應該在每個函數中一次又一次地聲明這個變量為global
(並且這不會覆蓋我在第一個函數中聲明的第一個global
變量),或者我不應該在所有這些函數中再次將它聲明為global
變量(但是那里的局部變量仍然存在)因為我已經第一次宣布這個變量,所以會被視為global
嗎?
您可以在每個函數定義中將變量聲明為global
變量。 這是一個例子:
def f():
global x
x = 2
print x
x +=2
# This will assign a new value to the global variable x
def g():
global x
print x
x += 3
# This will assign a new value to the global variable x
f()
# Prints 2
g()
# Prints 4
print x
# Prints 7
global關鍵字告訴每個函數的解析器在分配名稱時不應將名稱視為本地名稱。
通常,您在函數中綁定的任何名稱(賦值,用作函數參數,在函數體中的import語句中使用等)都會被解析器視為本地。
通過使用global
關鍵字,解析器將生成字節碼,而不是尋找全局名稱。 如果您有多個分配給全局的函數,則需要在所有這些函數中聲明該名稱為global
。 然后,他們將在全局命名空間中查找名稱。
請參閱global
聲明文檔 :
global
語句是一個聲明,它適用於整個當前代碼塊。 這意味着列出的標識符將被解釋為全局變量。
以及命名和綁定文檔 :
如果名稱綁定在塊中,則它是該塊的局部變量。 如果名稱在模塊級別綁定,則它是全局變量。 (模塊代碼塊的變量是局部的和全局的。)如果在代碼塊中使用了變量但在那里沒有定義,則它是一個自由變量。
我是否應該在每個函數中一次又一次地聲明此變量為全局變量
您根本不應該有任何全局變量,並將這些變量和函數放入一個類中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.