2

次のコードはPythonでは機能しません

x = 11
print(x += 5)

このコードは

x = 11
x += 5
print(x)

何故ですか?

4

3 に答える 3

8

x += 5 はステートメントであり、式ではありません。関数呼び出しでは、式のみを引数として使用できます。

x += 5 は式ですが、Python ではそうではありません。

于 2011-02-25T09:30:46.127 に答える
8

問題は、ステートメントと式の違いによるものです。 この質問には、違いを説明する優れた回答があります。キーポイントは次のとおりです。

式:値に評価されるもの。例: 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 はmyvar1 に設定されますが、式が必要な場所にステートメントがあるため、Python はコンパイル エラーで失敗します。

于 2011-02-25T09:44:04.863 に答える
1

Python では、関数呼び出しはステートメントではなく式のみを受け入れます。

等号を含むものはすべてステートメントです。

それはあなたができないのと同じ理由です:

if x += 5:
    print x

詳細については、Python 言語リファレンス (バージョン 3.2、バージョン2.7 ) を参照してください。

于 2011-02-25T09:29:55.157 に答える