如何检查Python中是否存在两个变量?

时间:2014-02-24 06:57:47

标签: python

我想在Python中编写类似这个javascript的语句:

if (variable1 && variable2) { // do something only if both variables exist }

我正在尝试:

if not (variable1 and variable2) is None: # do something only if both variables exist

但它不起作用...当我调试时,变量2没有定义,但函数仍然试图运行。出了什么问题?

3 个答案:

答案 0 :(得分:7)

try:
    variable1
    variable2
except NameError:
    # Not there
else:
    # They exist

这是一件非常难得的事情。在你做之前确保它确实是一个好主意。

请注意,设置为None的变量与不存在的变量不同。如果你想检查变量是否是None,你只是弄乱了布尔逻辑语法:

if variable1 is not None and variable2 is not None:
    do_whatever()

如果保证在布尔上下文中将not - None值视为true,则可以简化此操作。例如,如果variable1variable2re.search次调用的结果,则它们可能是匹配对象或None,您可以使用:

if variable1 and variable2:
    do_whatever()

答案 1 :(得分:4)

你可以用Python做同样的事情。

if variable1 and variable2:
    ...

但这意味着,两个变量都包含Truthy values

注意:使用尚未赋值的变量是Python中的错误。

如果你真的想检查变量是否已经定义,你可以使用这个hack但是我不会推荐这个

if (variable1 in locals() and variable2 in locals()):
   ...

如果您想检查更多变量,

if all(var in locals() for var in (variable1, variable2, variable3)):

答案 2 :(得分:2)

通过布尔运算符连接两个变量。你真正想要的是and两次比较的结果。

if variable1=!None and variable2=!None:
    # do something

除此之外,不存在的变量不是None但不存在。 如果要检查变量是否存在,请检查它是否在globals()locals()中定义:

if "variable1" in locals() and "variable2" in locals():
    # do something

请注意,这里引用了变量,因为您不想评估它们!