web-dev-qa-db-ja.com

返品とPythonでの印刷の違いは?

In python return関数を理解していないようです。印刷できるのに、なぜそれを使用するのですか?

def maximum(x, y):
    if x > y:
        print(x)
    Elif x == y:
        print('The numbers are equal')
    else:
        print(y)

maximum(2, 3)

このコードは私に3。しかし、returnを使用すると、まったく同じことが行われます。

def maximum(x, y):
    if x > y:
        return x
    Elif x == y:
        return 'The numbers are equal'
    else:
        return y

print(maximum(2, 3))

では、2つの違いは何ですか?メガヌーブの質問でごめんなさい!

9
Chris

ポイント

returnは関数ではありません。これは制御フロー構造です(ifelse構造のように)。これにより、「関数呼び出しの合間にデータを持ち運ぶ」ことができます。

内訳

  • printuserに出力文字列として値を与えます。 print(3)は文字列を与えます'3'ユーザーが表示する画面に移動します。プログラムは価値を失います。

  • returnprogramに値を与えます。関数の呼び出し元は、実際のデータとデータ型(bool、intなど)を持ちます。return 3は、関数が呼び出された場所の代わりに値3が配置されます。

例の時間

def ret():
    return 3

def pri():
    print(3)

4 + ret() # ret() is replaced with the number 3 when the function ret returns
>>> 7
4 + pri() # pri() prints 3 and implicitly returns None which can't be added
>>> 3
>>> TypeError cannot add int and NoneType
25
t3dodson

印刷された値を保存する必要がある場合はどうしますか? ドキュメントの良い説明を見てください そしてcf .:

>>> def ret():
    return 42

>>> def pri():
    print(42)


>>> answer = pri()
42
>>> print(answer)         # pri implicitly return None since it doesn't have return statement
None
>>> answer = ret()
>>> answer
42

また、他の言語のreturnステートメントと同じです。

11
SilentGhost

メソッドが呼び出される場所は、インタラクティブなコマンドラインだけではないことに注意してください。メソッドは他のメソッドから呼び出すこともできます。その場合、printはメソッド間でデータを渡すための使用可能な方法ではありません。

4
Gareth

より複雑な計算の場合は、中間値を返す必要があります。例えば:

print minimum(3, maximum(4, 6))

その場合、結果をmaximumで出力することはできません。

4
RichieHindle

正直なところ、それはあなたが関数に何をする必要があるかに依存します。関数仕様に最大項が出力されると記載されている場合は、問題はありません。このようなメソッドで一般的に発生することは、メソッドがより大きな実際の値を返す必要があるということです。それらが等しい場合、どちらの値が返されるかは問題ではありません。

0
Anthony