0

私は時々 Python を使用しますが、この構文を機能させる方法はありますか?

import math

print (value1 = math.factorial(5))

それはエラーを与えます:

print (value1 = math.factorial(5))
              ^

SyntaxError: 無効な構文

それとも、長い道のりをしなければなりませんか?

import math

value1 = math.factorial(5)
print value1
4

5 に答える 5

4

割り当てを式に埋め込むことはできません。式とステートメントの区別は Python の設計の基本であり、Guido にどうすればよいか尋ねると、彼はそれを 2 行で行うように指示します。または、別のレベルにステップアップして、あなたがしようとしていたことを行う別の方法があるかどうかを確認してください.

たとえば、式で変数を割り当てる最も一般的な理由は、whileorforループを単純化することです。Python では、通常、イテレータから次の値を取得するorループforの代わりに、代わりにイテレータのループに変換する必要があります。whilefor

これについては、公式の Python Design and History FAQ のWhy can't I use an assignment in an expression の下で説明されており、次の例が明示的に示されています。

while (line = readline(f)) {
    // do something with line
}

for line in f:
    # do something with line

FAQ はまた、これが C や Perl のような言語から「行ごと」に翻訳することを難しくしていることを認めており、なぜこれが Python の悪い点ではなく良い点なのかを説明しています。

nonlocalそうは言っても、クロージャーまたは変数を使用して、それを偽造する方法があります。例えば:

def set_value1_to(new_value):
    global value1
    value1 = new_value
    return value1

print(set_value1_to(math.factorial(5))

ただし、これが正しい解決策になるケースは考えにくいです。

于 2013-04-01T21:38:15.333 に答える
2

いいえ、Python はこれを許可しません。割り当てはステートメントのみであり、式に埋め込むことはできません。

于 2013-04-01T21:38:07.090 に答える
0

いいえ、ありません。割り当ての結果をそのまま印刷することはできません。

于 2013-04-01T21:38:05.620 に答える