Python 为什么会产生名称错误?

Python 为什么会产生名称错误?,python,python-2.7,nameerror,Python,Python 2.7,Nameerror,运行此代码会产生一个名称错误,表示未定义ret。为什么ret在if action=='state'块中工作,而在elif action==list块中不工作 if action == 'stat': ret = pp.stat() print ret sys.exit() elif action == 'list': for i in range(1, ret[0]+1): mlist = pp.top(i, 0) print 'line: ', l

运行此代码会产生一个名称错误,表示未定义
ret
。为什么
ret
if action=='state'
块中工作,而在
elif action==list
块中不工作

if action == 'stat':
   ret = pp.stat()
   print ret
   sys.exit()
elif action == 'list':
  for i in range(1, ret[0]+1):
      mlist = pp.top(i, 0)
      print 'line: ', len(mlist[1])
  ret = pp.list()
  print ret

如果action=='stat'
为false,则永远不会定义
ret


因此,当执行elif时,在变量在for循环中实例化之前,永远不会定义ret

您正在引用的
ret
。在for循环之前向上移动
ret=pp.list()
,就可以了

elif action == 'list':
  ret = pp.list()
  for i in range(1, ret[0]+1):
      mlist = pp.top(i, 0)
      print 'line: ', len(mlist[1])
  print ret

请张贴与您描述相符的代码;目前发布的示例不完整。这并不意味着发布更多的代码,而是意味着编辑代码,直到它按照你所说的去做。为了证明行为,构建一个包括回溯(如果有)的模型。