この記事は 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ドキュメントでは
条件式 (しばしば "三項演算子" と呼ばれます)と書かれており、「条件式」が正式名称のようですが、ここでは他言語でも一般的に使われている「三項演算子」という表現を使います。 ↩