Python 如何检查全局范围内是否存在变量?
请帮忙解决这个问题Python 如何检查全局范围内是否存在变量?,python,python-3.x,Python,Python 3.x,请帮忙解决这个问题 #а = 'dg' try: a except: print('y') else: print('n') 下面的代码应该检查全局范围中是否存在变量。由于变量“a”不存在,则屏幕应显示“n”。但是是一个“y”我想你倒过来了'y'和'n': try: a except NameError: print('n') else: print('y') 如果您尝试使用a而不定义它,它将引发错误并打印'n'实际上,您正在检查全局和局部范
#а = 'dg'
try:
a
except:
print('y')
else:
print('n')
下面的代码应该检查全局范围中是否存在变量。由于变量“a”不存在,则屏幕应显示“n”。但是是一个“y”我想你倒过来了
'y'
和'n'
:
try:
a
except NameError:
print('n')
else:
print('y')
如果您尝试使用
a
而不定义它,它将引发错误并打印'n'
实际上,您正在检查全局和局部范围,但这没关系
try:
a
except NameError:
print('n')
else:
print('y')
Python在所有可用名称空间中搜索该变量,顺序如下:
- 本地命名空间-特定于当前函数或类方法。如果函数定义了一个局部变量x,或者有一个参数x,Python将使用它并停止搜索
- 全局命名空间-特定于当前模块。如果模块定义了一个名为x的变量、函数或类,Python将使用该变量、函数或类并停止搜索
- 内置命名空间-所有模块的全局命名空间。作为最后手段,Python将假定x是内置函数或变量的名称
>>> n = 'print'
>>> if 'n' in globals():
... print 'n'
... else:
... print 'y'
...
n
>>> del n
>>> if 'n' in globals():
... print 'n'
... else:
... print 'y'
...
y
>>>
对于本地,您也可以签入
locals()
:除了:,不要使用,至少定义除了例外:
@Tupteq是的,我已经为此编辑了我的帖子,无论如何谢谢:)@fede1024namererror
已经是一个内置名称,无需导入。@AshwiniChaudhary Edit.com,错误消息已被理解。但是,即使定义了所有相同的变量,也不会对其进行检查。以下代码显示“n”。а='dg'try:a除:print('n')外,其他:print('y'))
>>> n = 'print'
>>> if 'n' in globals():
... print 'n'
... else:
... print 'y'
...
n
>>> del n
>>> if 'n' in globals():
... print 'n'
... else:
... print 'y'
...
y
>>>