簡體   English   中英

全局變量由多個函數改變 - 如何在Python中聲明

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

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