为什么会产生nameError?

时间:2013-12-04 03:55:42

标签: python python-2.7 nameerror

运行此代码会产生nameError,表示未定义ret。为什么retif 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

2 个答案:

答案 0 :(得分:0)

if action == 'stat'为false,ret永远不会被定义

所以当执行elif时,从未定义ret

答案 1 :(得分:0)

在for循环中实例化变量之前,您正在引用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