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つの違いは何ですか?メガヌーブの質問でごめんなさい!
ポイント
returnは関数ではありません。これは制御フロー構造です(if
else
構造のように)。これにより、「関数呼び出しの合間にデータを持ち運ぶ」ことができます。
内訳
print
:userに出力文字列として値を与えます。 print(3)
は文字列を与えます'3'
ユーザーが表示する画面に移動します。プログラムは価値を失います。
return
:programに値を与えます。関数の呼び出し元は、実際のデータとデータ型(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
印刷された値を保存する必要がある場合はどうしますか? ドキュメントの良い説明を見てください そして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
ステートメントと同じです。
メソッドが呼び出される場所は、インタラクティブなコマンドラインだけではないことに注意してください。メソッドは他のメソッドから呼び出すこともできます。その場合、print
はメソッド間でデータを渡すための使用可能な方法ではありません。
より複雑な計算の場合は、中間値を返す必要があります。例えば:
print minimum(3, maximum(4, 6))
その場合、結果をmaximum
で出力することはできません。
正直なところ、それはあなたが関数に何をする必要があるかに依存します。関数仕様に最大項が出力されると記載されている場合は、問題はありません。このようなメソッドで一般的に発生することは、メソッドがより大きな実際の値を返す必要があるということです。それらが等しい場合、どちらの値が返されるかは問題ではありません。