Pythonでの3項演算子の記述はどうするのか?

単純なケースならばif文よりも簡潔に記述できるので、Pythonでも使いたいです。

JavaScriptの例

var x = (a == 1 ? 10 : 20);  #aの値が1のとき、xに10を代入。そうでないとき20。

同様のことをPythonで記述するには、以下のようになります。

x = 10 if a == 1 else 20

JavaScriptでの記述に慣れているとすごく違和感あります。

JavaScriptタイプの記述はJava, C言語などでも使われているため広く知られている記述方法です。それゆえPython方式の記述は変な感じです。
ただリスト内包表記でのifなども似ているので、Pythonに慣れ親しめばそうでもありません。

ちなみに

この条件的な代入方式の記述を、「3項演算子」って呼ぶのは不適切です。(正しくは条件演算子だそうです。)
3項演算子は「項が3つある演算子」という意味です。+演算子などの2項演算子に対して3つあるから3項演算子です。ですがJavaやC言語において項が3つある演算子はこの条件的な代入しかないため、3項演算子=条件的な代入と定着しています。演算子の種類として3項ではありますが、必ずしも3項演算子=条件的な代入とみなすのはおかしいと思っています。

ただ一般的に、検索したり会話に用いられるこの条件的な代入を「3項演算子」と呼ぶのは紛れも無い事実だと思います。もはや条件演算子の事を3項演算子って呼ぶのは、しかたのないことだと思っています。

関連記事:

Pythonでの3項演算子の記述はどうするのか?」への1件のフィードバック

  1. t

    「正しくは条件演算子」
    正しい用語が知れてよかったです。

    この条件演算子を if文 と書かれているところ、
    三項演算子 と書かれているところをみていて、
    そのため間違って覚えてしまいますが、
    正確な情報は大事です。

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)