Python 检查变量是否存在

Python 检查变量是否存在,python,Python,我使用下面的方法isset(var)来确定变量是否存在 def isset(variable): try: variable except NameError: return False else: return True 如果变量存在,则返回True。但如果变量不存在,我会得到以下结果: Traceback (most recent call last): File "/usr/lib/python2.7/runpy

我使用下面的方法
isset(var)
来确定变量是否存在

def isset(variable):
    try:
        variable
    except NameError:
        return False
    else:
        return True
如果变量存在,则返回
True
。但如果变量不存在,我会得到以下结果:

Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/lenovo/pyth/master/vzero/__main__.py", line 26, in <module>
    ss.run()
  File "vzero/ss.py", line 4, in run
    snap()
  File "vzero/ss.py", line 7, in snap
    core.display()
  File "vzero/core.py", line 77, in display
    stdout(session(username()))
  File "vzero/core.py", line 95, in session
    if isset(ghi): #current_sessions[user]):
NameError: global name 'ghi' is not defined
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.7/runpy.py”,第162行,在运行模块中作为主模块
“\uuuuu main\uuuuuuuuuuuuuuuuuuuuuuuuu”,fname,loader,pkg\u name)
文件“/usr/lib/python2.7/runpy.py”,第72行,在运行代码中
run_globals中的exec代码
文件“/home/lenovo/pyth/master/vzero/\uuuuuu main\uuuuuuuu.py”,第26行,在
ss.run()
文件“vzero/ss.py”,第4行,正在运行
snap()
文件“vzero/ss.py”,第7行,在快照中
core.display()
显示文件“vzero/core.py”,第77行
stdout(会话(username())
文件“vzero/core.py”,第95行,在会话中
如果isset(ghi):#当前_会话[用户]:
NameError:未定义全局名称“ghi”

我不想要所有这些错误。我只想让它返回False。没有输出。我怎样才能做到这一点呢?

而不是编写一个复杂的助手函数
isset
并调用它

if not isset('variable_name'):
    # handle the situation
在要检查变量是否存在的位置,请执行以下操作:

try:
    # some code with the variable in question
except NameError:
    # handle the situation

您的函数将无法工作,因为您正在向您的函数传递一个不存在的变量。否则,你的代码就可以了。实际上,你可能提到的堆栈帧是一个我甚至无法考虑的事情。1这是几种可能的解决方案之一。还有更多