python - 在 if 语句中依赖条件评估顺序是否安全?

标签 python if-statement

my_var 可以为 None 时使用以下格式是不好的做法吗?

if my_var and 'something' in my_var:
    #do something

问题是如果 my_var 为 None,'something' in my_var 会抛出 TypeError。

或者我应该使用:

if my_var:
    if 'something' in my_var:
        #do something

try:
    if 'something' in my_var:
        #do something
except TypeError:
    pass

换个说法,以上哪个是 Python 中的最佳实践(如果有的话)?

欢迎使用替代品!

最佳答案

取决于条件的顺序 (Python reference here) 是安全的,特别是因为您指出的问题 - 能够短路可能会导致一系列条件出现问题的评估非常有用。

这种代码在大多数语言中都会弹出:

IF exists(variable) AND variable.doSomething()
    THEN ...

关于python - 在 if 语句中依赖条件评估顺序是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752373/

相关文章:

带矩阵的 Python 回归

python - 如何使用 Mock 框架更改模拟方法的输出?

javascript - JS - 检测触摸设备不起作用 API 3

Javascript If 语句评估无法正常工作

python - 当列表值为字符串时,如何将 else 与列表理解一起使用?

java - 查找 2 个参数的最小值

python - 是否有内置方法来获取 ToggleButton 组的当前选择?

python - Python 如何建立对象之间的相等性?

c++ - 在球员评分程序中显示低于平均分数

python - 如何在 Windows 上为 Apache 安装 Python flip? (使 web.py 工作)