この記事は Pythonのコードを短く簡潔に書くテクニック Advent Calendar 2017 の16日目です。
はじめに
条件によって値を変えたいときは三項演算子1が便利です。
しかし、特定の条件のときは三項演算子をa or b
という書き方に置き換えることで簡潔に書き直すことができます。
if文で書いた場合
if a:
return a
else:
return b
三項演算子で書いた場合
return a if a else b
a or b
で書いた場合
return a or b
三項演算子でa if a else b
のようにif
の条件と結果で返す値が同じ場合にはa or b
という書き方に置き換えることができます。
a or b
と書いた場合、a
が真になる場合はa
を、そうでなければb
になります。
真になる条件
先ほど「真になる」という表現を使いましたが、これはa == True
ということではなく、bool(a) == True
という意味です。
bool(a) == True
になる条件は型によって違います。
組み込み型で代表的なものを挙げると以下のようになっています。
型 | 真となる条件 |
---|---|
int,floatなどの数値型 | a != 0 |
str,list,dictなど長さを持つ型 | len(a) != 0 |
詳細は[object.__bool__()
]を参照してください。
参考
- Pythonドキュメント
[object.__bool__()
]:https://docs.python.jp/3/reference/datamodel.html#object.__bool__)
-
Pythonドキュメントでは
条件式 (しばしば "三項演算子" と呼ばれます)
と書かれており、「条件式」が正式名称のようですが、ここでは他言語でも一般的に使われている「三項演算子」という表現を使います。 ↩