首页 > 解决方案 > 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 没有定义同样适用于 nzero2,ntrue,ntrue2

标签: python

解决方案


由于您的代码已经在全局范围内,因此无需使用global. 所有变量都已经是全局的。

您会收到错误,因为某些变量是在 if 语句的范围内定义的。如果该 if 子句未执行,则该变量稍后将不可用。要解决此问题,只需在 if 语句之前将变量初始化为合理的值:

nzero = False
if admin.isUserAdmin():
...

推荐阅读