tgr*_*ray 66 python if-statement
my_var可以是None 时使用以下格式是不好的做法吗?
if my_var and 'something' in my_var:
#do something
Run Code Online (Sandbox Code Playgroud)
问题是'something' in my_var如果my_var为None ,则抛出TypeError.
或者我应该使用:
if my_var:
if 'something' in my_var:
#do something
Run Code Online (Sandbox Code Playgroud)
要么
try:
if 'something' in my_var:
#do something
except TypeError:
pass
Run Code Online (Sandbox Code Playgroud)
要重新解释这个问题,上面哪一项是Python中的最佳实践(如果有的话)?
欢迎替代方案!
Dan*_*Lew 84
依赖于条件的顺序是安全的(这里是Python参考),特别是因为你指出的问题 - 能够短路评估可能会导致一系列条件问题非常有用.
这种代码在大多数语言中弹出:
IF exists(variable) AND variable.doSomething()
THEN ...
Run Code Online (Sandbox Code Playgroud)
var*_*tec 32
是的,它是安全的,它在语言参考中明确且非常明确地定义:
表达式
x and y首先评估x; 如果x是false,则返回其值; 否则,y将评估并返回结果值.表达式
x or y首先评估x; 如果x为真,则返回其值; 否则,y将评估并返回结果值.