1. ホーム
  2. python

[解決済み] if文の条件評価順序に依存しても安全か?

2023-06-13 14:38:34

質問

の場合、以下のような書式を使用することは悪いことでしょうか? my_var は None になるのでしょうか?

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

問題は 'something' in my_var は 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のベストプラクティスはどれでしょうか(あるとすれば)?

代替案も大歓迎です

どのように解決するのですか?

条件文の順序に依存するのは安全です( Pythonのリファレンスはこちら )、特にあなたが指摘する問題のためです。条件文の列で問題を引き起こす可能性のある評価を短絡させることができるのは非常に有用です。

この種のコードはほとんどの言語で出現します。

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