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

时间:2020-09-29 19:30:25

标签: 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相同

3 个答案:

答案 0 :(得分:1)

由于您的代码已经在全局范围内,因此无需使用import React from 'react' // Function Searchbar //Looks for products function Search(props){ return( <input type="search" className="search" placeholder={props.placeholder} onChange={props.handleInput}/> ) } export default Search 。所有变量已经是全局变量。

出现错误是因为在if语句的范围内定义了一些变量。如果该if子句不执行,则该变量以后将不可用。要解决此问题,只需在if语句之前将变量初始化为一个合理的值:

global

答案 1 :(得分:1)

如果所有这些代码实际上都在模块范围内,那么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)

答案 2 :(得分:0)

问题出在这里:

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