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

9 投票
3 回答
57466 浏览
提问于 2025-04-17 02:49

这是我的情况:

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

为了避免重复写同样的代码,我想把这两个if条件合并成一个。但是如果变量是None,我就不能检查它的长度……有没有什么好主意?我想要的效果大概是这样的:

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

3 个回答

0

好吧,这里的异常处理看起来没问题。

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

你说var可能是空的,所以会抛出一个TypeError异常。但是,如果var根本不存在的话,你应该去处理NameError异常。

3

你在问题中写的代码会在两种情况下执行:

  • var的值为真,并且长度为5
  • var的值为假(比如它是None或者False

你可以把这两种情况合并成一个条件,像这样:

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()
18

你试过这个吗?它是有效的:

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

and运算符的特点是,如果左边的条件(LHS)是假的,它就不会去计算右边的条件(RHS)。你可以试试这个:

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

撰写回答