Pythonの戻り値について
Pythonの勉強を始めたばかりなのですが、
Pythonの戻り値について理解できないです。
どなたか簡単にわかりやすく説明していただけないでしょうか?
Pythonの勉強を始めたばかりなのですが、
Pythonの戻り値について理解できないです。
どなたか簡単にわかりやすく説明していただけないでしょうか?
プログラムの基本は データ入力 ⇒ データ処理 ⇒ データ出力。
関数の場合、データ入力は引数、データ処理は関数の処理、データ出力は戻り値(return値)。
def f(x):
return 2*x + 3
print(f(5))
f(5)
で関数を呼び出していて、引数x
に5が入力され、2*x + 3
でデータ処理され、戻り値は 2*5 + 3
を計算した結果の 13
。
print
関数の引数に13
が渡り、13
が表示されます。
return と yield の2つあり
def func1():
print(1)
retrun
func1()
1 これは何も返さない!ではなく、
制御を返すretrunです。
def func2():
retrun 2
x = func2()
print(x)
2 これは基本の基本 2を返して、変数 x で受け取っています。
def func3():
retrun 1, 2
x, y = func3()
print(x, y)
1 2 これは、2個の戻りを変数 x,yで受け取っています。
for y in [0, 1, 2]:
print(y)
これを無理やり関数化します。
def func4():
x = [0, 1, 2]
retrun x
for y in func4():
print(y)
0
1
2 これはfunc5()のゼネレータを説明するための前座で、実用的かは自信がありません。x変数 で リスト形式で受け取っています。次のfunc5()と結果は同じです。
def func5():
for x in [0, 1, 2]:
yield x
for y in func5():
print(y)
0
1
2 さて、ゼネレータ、イテレータです。
retrunは関数から制御を全て返すのに対し
yield は for x in [0, 1, 2]: が終了するまで完全に制御を返しません。
for y in range(3):
print(y)
はretrunで [0, 1, 2]と制御をかえしますが、
yieldは
for x in [0, 1, 2]:
↓
for y in func5():
xの値をyにコツコツ、1個、1個、連動しながら、制御を含め、交互に返しながら進行します。
用途は例えば、csvファイルを読み取り、HTMLを生成する際、関数側でcsvファイルを読み取り、変数xで返し、変数yからHTMLを生成することができます。
もし、csvファイルでなく、jsonやDBに変わった場合でもHTMLを生成するコードは修正する必要がなくなります。
思い付くのは5つでしょうか?