pythonの戻り値について調べているのですが、いまいち理解できません。
コードの処理は上からだと認識しているのですが、「returnのarea」はどこに戻るのでしょうか?
どのような順序で処理されているのか、順番をつけて頂けないでしょうか?
def circle(radius): area = radius * radius * 3.14 return area print(circle(3))
補足
その他の似た質問をされている人が多々おられますが、回答の殆どが「戻る、戻す」で正直初心者には分かりません。
どこにどのように戻すのかが知りたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
def circle(radius):
から3行は関数を作るだけで実行はしないので、最初に実行されるのはprint(circle(3))
ですね。
引数のcircle(3)
の処理が先に行なわれます。これは関数circleに 3 を渡して呼び出し(関数の実行)を行ないます。
さきほど作られた関数circleの内容に従って、まずは 3 が radius に設定され、radius * radius * 3.14
(今回は 3 * 3 * 3.14)を計算した結果 28.26 が area に設定されます。return area
によって、呼び出し元に戻るとともに、値 28.26 が返されます。
この返された値 28.26 は、呼び出したcircle(3)
全体に置き換わるかのように使われます。つまり、print(28.26)
が実行されたときと同じように、 28.26 がコンソールに表示されます。
投稿2020/08/29 01:13
総合スコア11990
0
return
は関数を呼び出したところに戻ります。
Python
1def circle(radius): ・・・・・2 2 area = radius * radius * 3.14・・・・・3 3 return area ・・・・・4 4 5print(circle(3)) ・・・・・1、5
そもそも、「関数と何か」自体が理解できていないのではないでしょうか?
pythonの戻り値について調べているのですが、
入門し始めたばかりの時は、調べるのでは無く学びましょう。
ちゃんと入門書で勉強していますか?
投稿2020/08/28 23:05
総合スコア85901
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
上から順に実行しますが、関数定義は関数オブジェクトを作るだけで、関数は実行しません。
circle(3)
と関数呼出しすることで関数内の処理が実行されます。
こう書いてみてはいかがですか?
return
文で返した 変数 area
の値が 変数 value
に代入されます。
python
1def circle(radius): 2 area = radius * radius * 3.14 3 return area 4 5value = circle(3) 6print(value)
デバッガでステップ実行した様子を示します。
☜
でコメントを追記してあります。
python
1$ python -m pdb sample.py ☜ -m pdb を指定して実行することでデバッガが起動します 2> /tmp/sample.py(1)<module>() 3-> def circle(radius): ☜最初の行(circle関数定義)が表示されます 4(Pdb) step ☜step と入力してステップ実行します(circle関数オブジェクトが作られます) 5> /tmp/sample.py(5)<module>() 6-> value = circle(3) ☜関数を呼び出して、returnされた値を変数valueに代入します 7(Pdb) step 8--Call-- ☜関数を呼び出しました 9> /tmp/sample.py(1)circle() 10-> def circle(radius): ☜circle関数が呼び出されました 11(Pdb) step 12> /tmp/sample.py(2)circle() 13-> area = radius * radius * 3.14 ☜計算して値を変数areaに代入します 14(Pdb) step 15> /tmp/sample.py(3)circle() 16-> return area ☜変数areaに代入されている値を返して関数処理を終了します 17(Pdb) step 18--Return-- ☜関数からreturnします 19> /tmp/sample.py(3)circle()->28.26 20-> return area 21(Pdb) step 22> /tmp/sample.py(6)<module>() 23-> print(value) ☜valueの値をprintします 24(Pdb) step 2528.26 ☜valueの値がprintされました 26--Return-- 27> /tmp/sample.py(6)<module>()->None 28-> print(value)
投稿2020/08/28 23:02
編集2020/08/28 23:44総合スコア5406
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。