次のコードはPythonでは機能しません
x = 11
print(x += 5)
このコードは
x = 11
x += 5
print(x)
何故ですか?
次のコードはPythonでは機能しません
x = 11
print(x += 5)
このコードは
x = 11
x += 5
print(x)
何故ですか?
x += 5 はステートメントであり、式ではありません。関数呼び出しでは、式のみを引数として使用できます。
x += 5 は式ですが、Python ではそうではありません。
問題は、ステートメントと式の違いによるものです。 この質問には、違いを説明する優れた回答があります。キーポイントは次のとおりです。
式:値に評価されるもの。例: 1+2/x
ステートメント:何かを実行するコード行。例: GOTO 100
print
ステートメントには、出力する値が必要です。したがって、括弧内に、出力する値を与える式を入れます。したがって、これは のような単純なものでもx
、 のようなより複雑な式でもかまいません"The value is %d" % x
。
x += 5
は に 5 を加算するステートメントですが、使用x
する値が返されませんprint
。
したがって、Pythonでは言うことはできません
print(x += 5)
あなたが言うことができる以上:
y = x += 5
ただし、他の一部の言語では、ステートメントは式でもあります。つまり、何かを実行して値を返します。たとえば、Perl でこれを行うことができます。
$x = 5;
$y = $x += 5;
print $y;
それをやりたいかどうかは別の問題です。
Python でステートメントと式の違いを強制する利点の 1 つは、次のような一般的なバグを回避できることです。
if (myvar == 1) {
//do things
}
あなたは間違って次のものを持っています:
if (myvar = 1) {
//do things
}
2 番目のケースでは、C はmyvar
1 に設定されますが、式が必要な場所にステートメントがあるため、Python はコンパイル エラーで失敗します。