Python如何在一个if语句中检查变量是否存在及其长度?
这是我的情况:
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
的值为真,并且长度为5var
的值为假(比如它是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