質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1350閲覧

pytron 戻り値の処理について

qpwo

総合スコア6

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/28 22:34

pythonの戻り値について調べているのですが、いまいち理解できません。
コードの処理は上からだと認識しているのですが、「returnのarea」はどこに戻るのでしょうか?
どのような順序で処理されているのか、順番をつけて頂けないでしょうか?

def circle(radius): area = radius * radius * 3.14 return area print(circle(3))

補足
その他の似た質問をされている人が多々おられますが、回答の殆どが「戻る、戻す」で正直初心者には分かりません。
どこにどのように戻すのかが知りたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

returnは関数を呼び出したところに戻ります。

Python

1def circle(radius): ・・・・・2 2 area = radius * radius * 3.14・・・・・3 3 return area ・・・・・4 4 5print(circle(3)) ・・・・・15

そもそも、「関数と何か」自体が理解できていないのではないでしょうか?

pythonの戻り値について調べているのですが、

入門し始めたばかりの時は、調べるのでは無く学びましょう。
ちゃんと入門書で勉強していますか?

投稿2020/08/28 23:05

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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
shiracamus

総合スコア5406

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問