python中的全局变量名称未定义错误

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


MYYA
浏览 93回答 3
3回答

子衿沉夜

如果所有代码确实都在模块范围内,那么该global关键字无论如何都不会执行任何操作。您只需要初始化所有名称,因为并非所有分支都必须分配给它们。nzero = Nonentrue = Nonenzero2 = Nonentrue2 = Nonen = 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)

开心每一天1111

由于您的代码已经在全局范围内,因此无需使用global. 所有变量都已经是全局的。您会收到错误,因为某些变量是在 if 语句的范围内定义的。如果该 if 子句不执行,则该变量稍后不可用。要解决这个问题,只需在 if 语句之前将变量初始化为合理的值即可:nzero = Falseif admin.isUserAdmin():...

繁花如伊

问题就出在这里: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永远不会被定义。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python