在if语句中依赖条件评估顺序是否安全? [英] Is it safe to rely on condition evaluation order in if statements?

查看:124
本文介绍了在if语句中依赖条件评估顺序是否安全?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

my_var 可以是无?时,使用以下格式是不好的做法?

Is it bad practice to use the following format when my_var can be None?

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

问题是my_var 中的'something'会在my_var为None时抛出TypeError。

或者我应该使用:

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

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

要重新解释这个问题,以上哪项是Python中的最佳做法(如果有的话)?

To rephrase the question, which of the above is the best practice in Python (if any)?

欢迎替代方案!

推荐答案

依赖于条件的顺序是安全的(这里的Python参考),特别是因为你指出的问题 - 能够短路评估可能会导致一系列条件问题非常有用。

It's safe to depend on the order of conditionals (Python reference here), specifically because of the problem you point out - it's very useful to be able to short-circuit evaluation that could cause problems in a string of conditionals.

这种代码以大多数语言弹出:

This sort of code pops up in most languages:

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

这篇关于在if语句中依赖条件评估顺序是否安全?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆