簡體   English   中英

NameError: name 'a' is not defined... 即使在我將變量轉換為全局變量后也會出現此錯誤

[英]NameError: name 'a' is not defined... gives this error even after I have converted variable to global

我收到此錯誤,無法找到任何適當的原因或解決方案

def change_a():
    global a
    for i in ['O','X']:
        if not(i==a):
            a=i
            break

這段代碼的目的是在 X 和 O 之間切換。

我得到的 output 是:

NameError: name 'a' is not defined.

我在 Python 3.9.0 中運行它

在比較(i==a)時,變量a尚未定義。 因此,您需要在此之前為a提供一個值。 此外,正如 Shannarra 提到的,您可以在兩個字符之間切換變量:

a = 'X'

def change_a():
    global a
    a = 'O' if a == 'X' else 'O'
    print(a)
change_a()

Output:

O

另外,請注意,使用全局變量被認為是不好的做法,因為它們使函數具有隱藏的(非顯而易見的、令人驚訝的、難以檢測和診斷的)副作用,導致復雜性增加,可能導致意大利面條式代碼。

如果您只想在這兩個字符之間切換變量,您可以:

a = 'O' if a == 'X' else 'X'

不需要 function、循環或全局變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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