【发布时间】:2020-04-01 02:22:13
【问题描述】:
我正在尝试检查变量是否存在,但在函数内部。 我被告知,要做到这一点,你唯一需要做的就是:
'a' in locals()
不幸的是,事情比我预期的要困难一些。
我试图定义一个包含这个方法的函数。
q=[1,2,3]
def f():
print('q' in locals())
当我运行这个函数时,它返回:
False
问题是,正如我们所见,q 是一个变量,所以当我运行相同的命令,但在函数之外:
'q' in locals()
返回:
True
有没有办法解决这个问题?
【问题讨论】:
-
def f(): print('q' in globals())应该打印True。 -
你需要检查变量名作为一个字符串吗?您可以尝试/排除变量并捕获 NameError 吗?
-
根据docs.python.org/3.8/library/functions.html#locals,“请注意,在模块级别,locals() 和 globals() 是同一个字典。”这就解释了为什么当你在函数外运行时
locals()是True。