亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中的全局變量名稱未定義錯誤

python中的全局變量名稱未定義錯誤

MYYA 2023-09-19 17:35:29
if admin.isUserAdmin(): # This is on zero indent it's not inside a function or any other block  if n == 0:    global nzero    nzero = df.to_string()    print(nzero)  elif n > 0:    global ntrue    ntrue = df.head(n).to_string()    print(ntrue)  while live_update:    if n == 0:      global nzero2      nzero2 = df.to_string()      print(nzero2)    elif n > 0:      global ntrue2      ntrue2 = df.head(n).to_string()      print(ntrue2)print(nzero) #error nzero is not defined我有更復雜的代碼,但為了方便起見,我簡化了事情。在上面的程序中,我想讓nzero、nzero2、ntrue 和 ntrue2 成為全局的,即它應該在 if 塊之外可用。但是當我在外面使用它時,它給我錯誤說 nzero is not Defined 同樣適用于 nzero2、ntrue、ntrue2
查看完整描述

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)


查看完整回答
反對 回復 2023-09-19
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

由于您的代碼已經在全局范圍內,因此無需使用global. 所有變量都已經是全局的。


您會收到錯誤,因為某些變量是在 if 語句的范圍內定義的。如果該 if 子句不執行,則該變量稍后不可用。要解決這個問題,只需在 if 語句之前將變量初始化為合理的值即可:


nzero = False

if admin.isUserAdmin():

...


查看完整回答
反對 回復 2023-09-19
?
繁花如伊

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永遠不會被定義。


查看完整回答
反對 回復 2023-09-19
  • 3 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號