Python如何在一个if语句中检查变量是否存在及其长度?

时间:2011-09-22 05:44:11

标签: python if-statement

这是我的情况:

if var:
    if len(var) == 5:
        do something...
else:
    do the same thing...

为了避免重复同一段代码,我想将这两个条件合二为一。但如果var是None,我无法查看它的长度......有什么想法吗? 我想要这样的东西:

if var and len(var) == 5:
    do something...

3 个答案:

答案 0 :(得分:15)

你试过那个吗?它有效:

if var and len(var) == 5:
    ....

如果LHS为假,and运算符不会评估RHS。试试这个:

>>> False and 1/0
False
>>> True and 1/0
ZeroDivisionError: division by zero

答案 1 :(得分:3)

您在问题中编写的代码在两种情况下执行语句:

  • var评估为真,长度为5
  • var评估为false(例如,NoneFalse

您可以将这些组合成一个条件,如下所示:

if not var or len(var) == 5:
    ...

其他一些答案建议的条件var and len(var) == 5仅在第一种情况下评估为True,而不是第二种情况。不过,我会说,你选择的两个案例是一种不同寻常的组合。只有当变量的值为并且的长度为5时,您确定不打算执行语句吗?

此外,正如6502在评论中所写的那样,函数仅用于这种情况,即制作可重用的代码块。所以另一个简单的解决方案是

 def f():
     ....
 if var:
     if var.length == 5:
         f()
 else:
     f()

答案 2 :(得分:0)

嗯,这里的例外情况似乎非常好。

try:
    if len(var) == 5:
        do_something()
except TypeError:
    pass

您说var可以为null,因此会抛出TypeError异常。但是,如果事实上var根本不存在,那么你应该抓住NameError例外。