1

私はここ数日Pythonを学んでいます。しかし、私はリターンを理解していません。教科書やオンラインからいくつかの説明を読みました。彼らは役に立ちません!

return が何をするのか、誰かが簡単に説明できるでしょうか?私は (私にとって) いくつかの便利な Python スクリプトを作成しましたが、returnが何をするかわからないため、return を使用したことはありません。

return を使用する理由を示す簡単な例を教えてください。

また、何もしないように見えます:

def sqrt(n):
    approx = n/2.0
    better = (approx + n/approx)/2.0
    while better != approx:
        approx = better
        better = (approx + n/approx)/2.0
    return approx

sqrt(25)

教科書には、「この関数を引数として 25 を指定して呼び出してみて、5.0 が返されることを確認してください」と書かれていました。

これを確認する唯一の方法は、printを使用することです。しかし、それが彼らが探しているものかどうかはわかりません。質問は、25 で呼び出すように言っているだけです。5.0 を返すことを確認するために、コードに何かを追加するようには言っていません。

4

4 に答える 4

5

return関数から値を返します。

def addseven(n):
    return n + 7

a = 9
b = addseven(a)
print(b)        # should be 16

関数を終了するためにも使用できます。

def addseventosix(n):
    if n != 6:
        return
    else:
        return n + 7

ただし、関数内にステートメントがなくてもreturn(または返す値を指定せずに使用しても)、関数は何かを返します - None

def functionthatisuseless(n):
    n + 7

print(functionthatisuseless(8))        # should output None

関数から複数の値を返したい場合があります。ただし、複数のステートメントを持つことはできません。return制御フローは最初のステートメントの後に関数を離れるため、それ以降は実行されません。Python では、通常、タプルとタプルのアンパックを使用します。

def addsevenandaddeight(n):
    return (n+7, n+8)        # the parentheses aren't necessary, they are just for clarity

seven, eight = addsevenandaddeight(0)
print(seven)        # should be 7
print(eight)        # should be 8

returnステートメントは、他の関数の結果に対して関数を呼び出すことを可能にするものです:

def addseven(n):
    return n+7

def timeseight(n):
    return n*8

print(addseven(timeseight(9))

# what the intepreter is doing (kind of):
# print(addseven(72))    # 72 is what is returned when timeseight is called on 9
# print(79)
# 79
于 2013-09-28T12:26:47.470 に答える
2

print戻り値を確認するには、対話型インタープリターにすべてを追加するか、すべてを書き込む必要があります。

return関数から何らかの出力/結果を取得できるようにします。コードの後半でこの値を変数に割り当てる必要があります。

a = sqrt(25)
于 2013-09-28T12:28:35.337 に答える
0

教科書では、インタラクティブ インタープリターで試してみることを期待しています。インタラクティブ インタープリターでは、値を入力すると値が表示されます。これがどのように見えるかの例を次に示します。

$ python
Python 2.7.5+ (default, Sep 17 2013, 17:31:54)
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def sqrt(n):
...     approx = n/2.0
...     better = (approx + n/approx)/2.0
...     while better != approx:
...         approx = better
...         better = (approx + n/approx)/2.0
...     return approx
...
>>> sqrt(25)
5.0
>>>

ここで重要なのは、式とステートメントの違いです。defはステートメントであり、結果は生成されません。ブロックが定義する は関数ですsqrtdef関数は常に戻り値を生成するため、 のような式で使用できますsqrt(25)。関数に が含まれていない場合、returnまたはyieldこの値がNoneである場合、インタープリターは無視しますが、この場合、sqrt は自動的に出力される (そして という変数に格納される_) 数値を返します。スクリプトでは、ターミナルへの出力を取得するために最後の行を に置き換える場合がありますがprint sqrt(25)、戻り値の便利な点は、root=sqrt(25)またはなどのさらなる処理を実行できることですprint sqrt(25)-5

対話モードではなく、まったく同じ行をスクリプトとして実行する場合、暗黙的な出力はありません。行sqrt(25)は式のステートメントとして受け入れられます。つまり、計算されますが、値は単純に破棄されます。入りません_(電卓のAnsボタンに相当します)。quit()通常、Python を終了させるなどの副作用を引き起こす関数に使用します。

ちなみに、printは Python 2 ではステートメントですが、Python 3 では関数です。

sqrt以下は、値を返す (この場合は Python 独自のバージョン) に依存するスクリプトです。

from math import sqrt
area = float(raw_input("Enter a number: "))
shortside = sqrt(area)
print "Two squares with the area", area, "square meters,",
print "placed side to side, form a rectangle", 2*shortside, "meters long",
print "and", shortside, "meters wide"
于 2013-09-28T14:56:44.330 に答える