3 回答

TA貢獻1828條經驗 獲得超3個贊
如果所有代碼確實都在模塊范圍內,那么該global關鍵字無論如何都不會執行任何操作。您只需要初始化所有名稱,因為并非所有分支都必須分配給它們。
nzero = None
ntrue = None
nzero2 = None
ntrue2 = None
n = None # Or something? Who knows?
if admin.isUserAdmin():
if n == 0:
nzero = df.to_string()
print(nzero)
elif n > 0:
ntrue = df.head(n).to_string()
print(ntrue)
while live_update:
if n == 0:
nzero2 = df.to_string()
print(nzero2)
elif n > 0:
ntrue2 = df.head(n).to_string()
print(ntrue2)

TA貢獻1836條經驗 獲得超13個贊
由于您的代碼已經在全局范圍內,因此無需使用global. 所有變量都已經是全局的。
您會收到錯誤,因為某些變量是在 if 語句的范圍內定義的。如果該 if 子句不執行,則該變量稍后不可用。要解決這個問題,只需在 if 語句之前將變量初始化為合理的值即可:
nzero = False
if admin.isUserAdmin():
...

TA貢獻2012條經驗 獲得超12個贊
問題就出在這里:
if n == 0:
global nzero
nzero = df.to_string()
print(nzero)
elif n > 0:
global ntrue
ntrue = df.head(n).to_string()
print(ntrue)
如果n不是0,則nzero永遠不會被定義。
添加回答
舉報