63481
# Pythonのreturn文の働きを詳しく納得がいくように知りたい。

●次の例文の **return self.num** と **return self.gas** について

返り値のreturnはそもそもどういう時に使うのですか？どういう働きをして、プログラムの処理の流れはどういう風になっているのでしょうか？  
僕の見解では「関数の呼び出し元に関数本体から情報を流す」と、そのまま覚えています。

このプログラムの **return** はプログラムのどこに進むかを特に教えてください。

```

    class Car:
        def __init__(self, num, gas):
            self.num = num
            self.gas = gas
    
        def getNumber(self):
            return self.num
    
        def getGas(self):
            return self.gas
    
    cr1 = Car(1234, 25.5)
    n1 = cr1.getNumber()
    g1 = cr1.getGas()
    
    cr2 = Car(2345, 30.5)
    n2 = cr2.getNumber()
    g2 = cr2.getGas()
    
    print("ナンバーは", n1, "ガソリンの量は", g1, "です。")
    print("ナンバーは", n2, "ガソリンの量は", g2, "です。")
    
```

**実行結果**  
ナンバーは1234 ガソリンの量は25.5です。  
ナンバーは2345 ガソリンの量は30.5です。
CC BY-SA 4.0
2020-03-01T15:48:20.807
63479
2020-03-02T13:23:05.933
2020-06-17T08:14:45.997
-1
38025
question
python windows-10
Pythonのreturn文 (戻り値) について教えてください
**【質問に対する直接の回答】**

> 返り値のreturnはそもそもどういう時に使うのですか？

呼び出し側がメソッドに対して処理を依頼し、処理の結果を呼び出し側が受け取りたいときに使います。

> どういう働きをして、プログラムの処理の流れはどういう風になっているのでしょうか？

後述の【プログラムの処理の流れ】を参照してください。  
メソッドを呼び出した側にreturnで指定した値が返ります。  
具体例で説明すると  
(5)で呼び出したメソッド`getNumber`のreturnで返す値(self.num)が、呼び出し側の変数n1に代入されます。

**【プログラムの処理の流れ】**

(数値)は文の実行順序です。

```

    class Car:
        def __init__(self, num, gas):
            (2)(12)self.num = num
            (3)(13)self.gas = gas
    
        def getNumber(self):
            (6)(16)return self.num
    
        def getGas(self):
            (9)(19)return self.gas
    
    (4)cr1 = (1)Car(1234, 25.5)
    (7)n1 = (5)cr1.getNumber()
    (10)g1 = (8)cr1.getGas()
    
    (14)cr2 = (11)Car(2345, 30.5)
    (17)n2 = (15)cr2.getNumber()
    (20)g2 = (18)cr2.getGas()
    
    (21)print("ナンバーは", n1, "ガソリンの量は", g1, "です。")
    (22)print("ナンバーは", n2, "ガソリンの量は", g2, "です。")
    
```
CC BY-SA 4.0
2020-03-02T01:24:36.007
63481
2020-03-02T13:23:05.933
2020-03-02T13:23:05.933
35558
35558
63479
answer