2

Python は「lisp」スタイルで簡単にコーディングできることがわかりました。

式:

通常の方法:

if a:
    do_something()

「関数」の方法:

(a and do_something())

通常の方法:

if not a:
    do_somthing()
elif b:
    do_otherthing()

「関数」の方法

((not a and do_something()) or (b and do_otherthing()))

通常の方法:

a = bla.get_a()
if a is None:
    a = A()

「関数」の方法:

a = (bla.get_a() or A())

この機能は非常に魅力的で、通常の方法では数行に分けて記述しなければならない 1 行でコーディングできます。

しかし、それが「pythonic」であるか、通常よりも悪いかはわかりません。

ルールに準拠しているグーグルコーディングタイプも定義されていません。

4

3 に答える 3

7

絶対

if a: 
    do_something()

2 つ目 ( a and do_somthing())) は恐ろしくハックです。@limelights が言ったように、The Zen of Python はExplicit が Implicit よりも優れており可読性が重要であると述べています。まだ読んでいない場合 は、おそらくPEP-8を読む必要があります。

于 2013-04-02T08:22:14.787 に答える
3

((not a and do_something()) or (b and do_otherthing()))とは異なります

if not a:
    do_somthing()
elif b:
    do_otherthing()

次の方法で:

do_something()偽の値を返す場合、2 番目の式(b and do_otherthing())も評価されます。

このように機能する式は、Python 2.5 で導入されたb if a else c構文を使用する必要があります。

do_somethind() if not a else (b and do_otherthing())

ただし、あなたの場合は結果が必要ないため、そうすることを控え、ステートメント構文を:.

于 2013-04-02T08:40:49.820 に答える