NameError:在函数中使用try / except时未定义全局名称“AlreadyExists”

时间:2011-10-11 00:47:54

标签: python

我知道很多这些问题都存在,但我似乎无法找到适合我遇到问题的问题。

我有以下内容:

def function():
  try:
    # function to create a table on hbase
  except AlreadyExists, ae:
    print "WARN: " + ae.message 

当我从另一个python脚本调用它时它给了我

NameError: global name 'AlreadyExists' is not defined 

...但是如果我删除def function()并自行运行它,它就会起作用,并且不会抱怨全局名称。

我尝试放global AlreadyExists但这不起作用。我也看了这个similar problem,但我不确定如何应用它,因为它可以独立工作(没有我必须导入任何特定的东西,但只要我将它包装在一个函数中就失败了。)< / p>

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

Python仅在抛出异常时尝试访问该名称。当您在函数外部运行代码时,它可能没有抛出异常,这就是您认为它有效的原因。

您需要从任何位置导入AlreadyExists异常。

答案 1 :(得分:1)

更改

from hbase import ttypes   

...

except AlreadyExists, ae:

except ttypes.AlreadyExists, ae:

http://www.ros.org/doc/api/hbase/html/classhbase_1_1ttypes_1_1AlreadyExists.html