私が気付いたことは、複数のステートメントが出力されたときにprint()
が時々最終計算値を出力することです。説明するために:Python print()は出力より先に式を計算します
a = [1, 2, 3]
print(a, a.reverse(), a)
を出力[3, 2, 1] None [3, 2, 1]
ですが、a
の第1の出力は、[1, 2, 3]
すべきではありませんか?
プリントが分離されている場合、言う:
a = [1, 2, 3]
print(a, end=' ')
print(a.reverse(), a)
出力が正しい[1, 2, 3] None [3, 2, 1]
を与えます。
この現象は、バグを見つけようとするのに苦労しました。私は答えを探し回ってきたが、間違った方向に向かっていると思われる。
これは、の前にprint()
の値が計算されているためですか。もしそうなら、なぜ?
UPDATE:
私が原因で他の言語からの質問をしてきましたが、この理由は、私にとってそれほど明白ではありませんが発生します。たとえば、PHP:
$a = [1, 2, 3];
var_dump(
$a, array_pop($a), $a
);
は、事前に実行表現せずに出力を生成します。
array(3) {[0]=>int(1) [1]=>int(2) [2]=>int(3)}
int(3)
array(2) {[0]=>int(1) [1]=>int(2)}
質問は愚かなことかもしれませんが、私はSO上でこの1を除いて、周りのことにこれ以上の答えが表示されません。関数を呼び出す(とprint()
がここに機能以上のものではありません)
はい、 'print()'が出力される前に値が計算されます。 –
この情報はとても一般的です。誰もが気付いていますし、質問を下落させるべきですか?私はPythonのドキュメントを読んでいます:https://docs.python.org/3/library/functions.html#print – Nevertheless
'a.reverse()'はリストを変更します。 'list(反転(a))) 'あなたの元のリストを変更せずにあなたに逆のリストを与えるでしょう。 – melak47