アカウント名:
パスワード:
if condition: x = true_valueelse: x = false_value
x = true_value if condition else false_value
In many cases where a conditional expression is used, one value seems to be the 'common case' and one value is an 'exceptional case', used only on rarer occasions when the condition isn't met. --PEP 308: Conditional Expressions [python.org]
x = if condition then true_value else false_value
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
Conditional Expressions (スコア:2, すばらしい洞察)
英語圏の人からは読みやすく見えるのかなぁ……。
"Complex is better than complicated."なのがPythonのいいところだと思っていたので、ちょっと残念です。
Re:Conditional Expressions (スコア:3, 興味深い)
A and B or C
と書くとがよくありました。
しかしこの場合、BがFalseとして評価される時にCが実行されてしまう、というわかりにくいバグを生む原因にもなっていました。
今回の三項演算子は、これの対策という意味もあると思います。
Re:Conditional Expressions (スコア:0)
Re:Conditional Expressions (スコア:1)
Re:Conditional Expressions (スコア:0)
とかしていた・・・
Re:Conditional Expressions (スコア:1, 興味深い)
q, r = divmod(n, 10)
print "%d%s" % (n, "th" if q == 1 else "st" if r == 1 else "nd" if r == 2 else "rd" if r == 3 else "th")
みたいに条件がたくさん続く場合には読みやすいと思われ。
Re:Conditional Expressions (スコア:0)
perl じゃないんだから。
Re:Conditional Expressions (スコア:1, 興味深い)
読みにくいのは、この構文自体の根本的な美しくなさでしょう。
上の利用の仕方は、そのデメリットを、機能的なメリットで、多少なりとも挽回している感があります。
Re:Conditional Expressions (スコア:0)
Re:Conditional Expressions (スコア:0)
Re:Conditional Expressions (スコア:0)
Re:Conditional Expressions (スコア:1, 参考になる)
if condition:
x = true_value
else:
x = false_value
ではなく
x = true_value # デフォルト値
if condition:
x = false_value # 例外的な値
とすると納得いくのではないかな。
Re:Conditional Expressions (スコア:3, 参考になる)
Re:Conditional Expressions (スコア:0)
リスト内包表記もそうですが、自然言語としての英語的。
Re:Conditional Expressions (スコア:0)
同じく。
> 英語圏の人からは読みやすく見えるのかなぁ……。
どうでしょうかね? の方が英語圏の人にも分かりやすそうに思います。
推測ですが、「then」というキーワードを追加するのが嫌(変数名に使っている既存プログラムへ影響する)、conditionとtrue_valueの区切り文字に他に適切なものが無い、という理由から
に落ち着いたのだと思います。
Re:Conditional Expressions (スコア:2, 参考になる)
x = 1 if a > 0, otherwise x = 0
ですかね。elseなんて単語滅多に見ない。
Re:Conditional Expressions (スコア:0)
けどな。
互換性については、
・2.5 + from __future__ import および 2.6以降→エラー
・2.5 (from __future__ import なし)→警告
でどうか。
ちなみに colon は使えないの?
x = if cond1: val1 elif cond2: val2 else: val3
Re:Conditional Expressions (スコア:1, 興味深い)
「めったにない」かもしれないが「絶対にない」わけではないだろ?それが互換性を保つということだ。
「めったにない」から変えちまえ、というどこかの言語と一緒にしないでほしい。
> でどうか。
こんなとこで言って開発に反映されるわけないだろ?
Re:Conditional Expressions (スコア:0)
2.6で追加されたwithだって新しい予約語だろ?
http://docs.python.org/dev/whatsnew/pep-343.html
おなじみのやり方じゃだめなの?ってだけなんだが。
Re:Conditional Expressions (スコア:0)
Re:Conditional Expressions (スコア:0)
こう言う文法を許さないのがPythonだと思ってたけど。