returnステートメントとは何か、Pythonでそれを使用する方法の簡単な基本的な説明は何ですか?
そしてそれとprint
声明の違いは何ですか?
returnステートメントとは何か、Pythonでそれを使用する方法の簡単な基本的な説明は何ですか?
そしてそれとprint
声明の違いは何ですか?
回答:
このprint()
関数は、コンソールに文字列を書き込み、つまり「印刷」します。このreturn
ステートメントにより、関数が終了し、値が呼び出し元に返されます。関数の一般的なポイントは、入力を受け取って何かを返すことです。このreturn
ステートメントは、関数が呼び出し元に値を返す準備ができているときに使用されます。
たとえば、との両方print()
を使用する関数はreturn
次のとおりです。
def foo():
print("hello from inside of foo")
return 1
これで、fooを呼び出すコードを次のように実行できます。
if __name__ == '__main__':
print("going to call foo")
x = foo()
print("called foo")
print("foo returned " + str(x))
これを.py
Pythonインタープリターではなくスクリプト(ファイルなど)として実行すると、次の出力が得られます。
going to call foo
hello from inside foo
called foo
foo returned 1
これがより明確になることを願っています。インタプリタが戻り値をコンソールに書き込むので、誰かが混乱する理由を理解できます。
以下は、インタープリターからの別の例です。
>>> def foo():
... print("hello from within foo")
... return 1
...
>>> foo()
hello from within foo
1
>>> def bar():
... return 10 * foo()
...
>>> bar()
hello from within foo
10
foo()
から呼び出されたbar()
場合、1がコンソールに書き込まれていないことがわかります。代わりに、から返される値を計算するために使用されますbar()
。
print()
副作用を引き起こす関数です(コンソールに文字列を書き込みます)が、実行は次のステートメントから再開されます。return
関数の実行を停止し、呼び出されたものに値を返します。
"foo returned " + str(x)
か、そうでなければ取得しTypeError: cannot concatenate 'str' and 'int' objects
ます。
印刷ステートメントを副作用の原因と考えてください。これにより、関数はユーザーにテキストを書き出させますが、別の関数では使用できません。
いくつかの例とウィキペディアからのいくつかの定義でこれをよりよく説明しようと思います。
ウィキペディアの関数の定義は次のとおりです
数学の関数は、入力とも呼ばれる関数の引数である1つの量を、出力とも呼ばれる関数の値である別の量に関連付けます。
少し考えてみてください。関数に値があるとはどういう意味ですか?
つまり、関数の値を通常の値に実際に置き換えることができるということです。(2つの値が同じタイプの値であると想定)
なぜあなたが尋ねることを望みますか?
同じタイプの値を入力として受け入れる可能性のある他の関数についてはどうですか?
def square(n):
return n * n
def add_one(n):
return n + 1
print square(12)
# square(12) is the same as writing 144
print add_one(square(12))
print add_one(144)
#These both have the same output
入力のみに依存して出力を生成する関数には、ファンシーな数学用語があります。参照透過性です。繰り返しになりますが、ウィキペディアの定義です。
参照の透明性と参照の不透明性は、コンピュータープログラムの一部のプロパティです。プログラムの動作を変更せずにその値に置き換えることができる場合、式は参照透過的であると言われます
プログラミングに慣れていない場合、これが何を意味するのかを理解するのは少し難しいかもしれませんが、私はいくつかの実験の後で理解すると思います。ただし、一般的には、関数の中でprintなどのことを行うことができ、最後にreturnステートメントを置くこともできます。
returnを使用するときは、基本的に「この関数の呼び出しは、返される値を書き込むのと同じです」と言っていることを覚えておいてください。
Pythonは、自分で入れない場合、実際には戻り値を挿入します。これは「なし」と呼ばれ、単に何もしないかnullを意味する特別な型です。
Pythonでは、「def」で関数の定義を開始し、「return」で関数を終了しますが、必ずしもそうする必要はありません。
変数xの関数はf(x)として表されます。この機能は何をしますか?この関数がxに2を追加するとします。したがって、f(x)= x + 2
これで、この関数のコードは次のようになります。
def A_function (x):
return x + 2
関数を定義した後、それを任意の変数に使用して結果を取得できます。といった:
print A_function (2)
>>> 4
次のように、コードを少し異なる方法で作成することもできます。
def A_function (x):
y = x + 2
return y
print A_function (2)
それも "4"になります。
これで、次のコードを使用することもできます。
def A_function (x):
x = x + 2
return x
print A_function (2)
これも4を返します。戻り値の横の「x」は実際には(x + 2)を意味し、「A_function(x)」のxではありません。
この簡単な例から、returnコマンドの意味を理解できると思います。
この回答は、上記で説明されていないいくつかのケースを網羅しています。リターン文は、あなたがすることができます終了しあなたが最後に到達する前に、関数の実行を。これにより、実行フローが呼び出し元にすぐに戻ります。
行番号4:
def ret(n):
if n > 9:
temp = "two digits"
return temp #Line 4
else:
temp = "one digit"
return temp #Line 8
print("return statement")
ret(10)
条件ステートメントが実行された後、ret()
関数はreturn temp
(4行目)のために終了します。したがって、print("return statement")
は実行されません。
出力:
two digits
条件ステートメントの後に表示されるこのコード、または制御のフローが到達できない場所は、デッドコードです。
戻り値
4行目と8行目では、条件が実行された後、returnステートメントを使用して一時変数の値を返しています。
印刷と返品の違いを引き出すには:
def ret(n):
if n > 9:
print("two digits")
return "two digits"
else :
print("one digit")
return "one digit"
ret(25)
出力:
two digits
'two digits'
return
「この関数からこの値を出力する」という意味です。
print
「この値を(通常は)stdoutに送信する」
Python REPLでは、関数の戻り値はデフォルトで画面に出力されます(これは印刷とまったく同じではありません)。
これは印刷の例です:
>>> n = "foo\nbar" #just assigning a variable. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
これは返品の例です:
>>> def getN():
... return "foo\nbar"
...
>>> getN() #When this isn't assigned to something, it is just output
'foo\nbar'
>>> n = getN() # assigning a variable to the return value. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
@Nathan Hughesの素晴らしい答えに追加するだけです:
このreturn
ステートメントは、一種の制御フローとして使用できます。return
関数の真ん中に1つ(または複数)のステートメントを置くことで、「この関数の実行を停止します。必要な結果が得られたか、問題が発生しました!」
次に例を示します。
>>> def make_3_characters_long(some_string):
... if len(some_string) == 3:
... return False
... if str(some_string) != some_string:
... return "Not a string!"
... if len(some_string) < 3:
... return ''.join(some_string,'x')[:,3]
... return some_string[:,3]
...
>>> threechars = make_3_characters_long('xyz')
>>> if threechars:
... print threechars
... else:
... print "threechars is already 3 characters long!"
...
threechars is already 3 characters long!
この使用方法の詳細については、Pythonガイドのコードスタイルのセクションをご覧くださいreturn
。
「return」と「print」の違いは、次の例でも確認できます。
返品:
def bigger(a, b):
if a > b:
return a
elif a <b:
return b
else:
return a
上記のコードは、すべての入力に対して正しい結果を提供します。
印刷:
def bigger(a, b):
if a > b:
print a
elif a <b:
print b
else:
print a
注:これは多くのテストケースで失敗します。
エラー:
----
FAILURE
: Test case input: 3, 8.
Expected result: 8
FAILURE
: Test case input: 4, 3.
Expected result: 4
FAILURE
: Test case input: 3, 3.
Expected result: 3
You passed 0 out of 3 test cases
これが私の理解です。(それが誰かを助け、それが正しいことを願っています)。
def count_number_of(x):
count = 0
for item in x:
if item == "what_you_look_for":
count = count + 1
return count
したがって、この単純なコードは、何かの発生回数をカウントします。リターンの配置は重要です。値がどこに必要かをプログラムに伝えます。したがって、印刷するときは、出力を画面に送信します。戻ったら、値をどこかに行くように伝えます。この場合、count = 0がreturnでインデントされていることがわかります。値(count + 1)を0に置き換えます。returnコマンドをインデントするときにコードのロジックに従ってみると、出力は常に1になります。 、最初のカウントを変更するように指示することは決してないからです。私はそれが正しいと思います。ああ、そしてreturnは常に関数の中にあります。
return
関数の最も良いところは、関数から値を返すことができますが、同じことを行うことができるprint
ので、違いは何ですか?基本的にはreturn
およそただ、我々は任意の変数に関数からその戻り値を保存することができますが、我々が行うことができないように、それはオブジェクト形式で出力を与える返さないprint
ように、その同じstdout/cout
でC Programming
。
理解を深めるために以下のコードに従ってください
def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b
def subtract(a, b):
print "SUBTRACTING %d - %d" % (a, b)
return a - b
def multiply(a, b):
print "MULTIPLYING %d * %d" % (a, b)
return a * b
def divide(a, b):
print "DIVIDING %d / %d" % (a, b)
return a / b
print "Let's do some math with just functions!"
age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)
print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)
# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
print "That becomes: ", what, "Can you do it by hand?"
私たちは、今の私たち自身の数学関数を行っているadd, subtract, multiply,
とdivide
。注意すべき重要なことは、return a + b
(でadd
)と言う最後の行です。これは次のとおりです。
a
とb
。a + b
。の追加を返します。これを「追加a
してb
から返す」と言うかもしれません。a + b
結果を変数に割り当てることができます。return
以下のために使用すべきである再帰関数/メソッドや、あなたのアルゴリズムでは、後でアプリケーションに返された値を使用します。
print
コードをデバッグするのに役立ちますが、ユーザーに意味のある望ましい出力を表示し、ユーザーが関心のない中間結果で画面を乱雑にしたくない場合に使用してください。
次のコードはreturn
、print
適切に使用する方法を示しています。
def fact(x):
if x < 2:
return 1
return x * fact(x - 1)
print(fact(5))
この説明はpythonだけでなくすべてのプログラミング言語に当てはまります。