2

関数がどのように機能し、どのように変数に割り当てることができるかについて、十分に理解していると思いました。しかし、数か月前に読んだ Learn Python the Hard Way 演習 (最も顕著なのは演習 21) を調べていたところ、インタープリターの出力に関する興味深い点に気付きました。

def add(a, b):
    print "ADDING %d + %d" % (a, b)
    return a + b

出力:

>>> add(30, 5)
ADDING 30 + 5
35

これが 35 を示しているのはなぜですか? 戻り値が表示されるようにするには、「print add(30, 5)」と記述する必要がありますか?

>>> age = add(30, 5)
ADDING 30 + 5

>>> age
35

変数の割り当ては、関数を呼び出して、戻り値ではなく print ステートメントを出力するように見えますが、変数自体は値 35 を示しています。変数の割り当てが同じではないのはなぜですか?

これらの質問が理にかなっていることを願っています。舞台裏で何が起こっているのかをよりよく理解しようとしているだけです。誰かが外部の読書を持っているなら、私に知らせてください!

4

3 に答える 3

6

これは、対話型インタープリターが入力した式の戻り値を表示するためです。

投稿した関数には2行あります。最初の行ではprint()、標準出力の値です。2番目returnは関数からの同じ値です。上で述べたように、これはインタラクティブインタプリタの標準出力にも書き込まれます。

コマンドラインからスクリプトを実行する場合(つまり、インタラクティブインタープリターではない場合:

python myscript.py

この戻り値が標準出力に出力されなくなったことに気付くでしょう。

于 2012-06-09T02:48:23.617 に答える
1

インタラクティブなPythonプロンプトでこれを行っています。これは、便宜上、要求せずに常に最後の結果を出力します。そうしないと、print常に入力する必要があり、すぐに古くなります。

適切なスクリプトでは、Pythonはそれを行いません。

于 2012-06-09T02:49:46.237 に答える
0

両方の出力を追加print "ADDING %d + %d" % (a, b)します参照: および整数を返します (整数のみ) 参照:return a + b

常に「ADDING x + y」と表示されますが、それが必要かどうかは関係ありません。

関数を変数に代入する場合、それをvarに調整すると、 varには整数のみが含まれます (これが add の戻り値です)。

于 2012-06-09T02:25:23.767 に答える