我想检查python中是否存在多个变量。我尝试了一些方法,但我不知道为什么这在 Python 中不起作用。
这是我的 Python 代码,我在 if 条件中使用“all”
feature = [{'a':'A'}]
table = 'demo'
if all(var in locals() for var in ('feature', 'table')):
print("all exist")
else:
print("at least one not exists")
这个输出应该是“全部存在”,但结果是“至少一个不存在”,这让我很困惑。
请您参考如下方法:
问题是您将生成器函数作为参数传递给 all 函数,因此 locals() 在该生成器函数的本地范围内被调用,不是你从中调用all的范围(定义了feature和table)。
为了诊断错误,我们可以试试这个:
>>> all(print(locals()) for var in ('feature', 'table'))
{'var': 'feature', '.0': <tuple_iterator object at 0x7fef8edc27f0>}
请注意生成器函数作用域中的局部变量是 var(它包含您要检查的键)和 .0,它包含对迭代器的引用元组 ('feature', 'table')。这些是进行迭代所需的唯一局部变量。
要解决这个问题,请从正确的范围调用 locals():
feature = [{'a':'A'}]
table = 'demo'
outer_locals = locals()
if all(var in outer_locals for var in ('feature', 'table')):
print("all exist")
else:
print("at least one not exists")
正如预期的那样,输出现在“全部存在”。
