8

これが機能することに困惑しました:

if 5 % 2 == 0:
        print "no remainder"
else:
        pass

しかし、これではありません:

print "no remainder" if 5% 2 == 0 else pass

SyntaxError: invalid syntax
4

1 に答える 1

17

後者はifステートメントではなく、式です (printつまり、ステートメントですが、残りは式として解釈され、失敗します)。式には値があります。passそれは声明なので、そうではありません。

あなたはそれを 2 つのステートメント ( print or pass) として見ているかもしれませんが、インタープリターはそれを別の方法で認識します。

expr = "no remainder" if 5% 2 == 0 else pass
print expr

最初の行は、式とステートメントが混在しているため問題があります。

1 行のifステートメントは別のものです。

if 5 % 2 == 0: print "no remainder"

ifこれは、1 行のステートメントと呼ぶことができます。

PS三項式は、公式ドキュメントでは「条件式」と呼ばれています。

三項式は、使用しようとした構文を使用しますが、2 つのと条件 (式も) が必要です。

expr1 if cond else expr2

expr1ifbool(cond) == Trueとotherの値を取りexpr2ます。

于 2013-04-19T21:51:17.330 に答える