59211


まずは上手いタイトルが付けられなくてごめんなさい。どなたか、良いタイトルがありましたら、変更をお願いします。  
以下が質問内容です。

たとえば、

[code]

    def z():
        res = requests.get(･･･)
        data = res.json()
        retun {･･･
                }
    
[/code]

で定義した関数があるとします。dataの中身は、だいたい1万個程度です。  
この場合、関数z()を呼び出して、dataの中身を個別に取り出す方法には、以下の2つが考えられると思います（この他に効率の良い方法があったら教えていただけると嬉しいです）。

Case 1：関数内のreturnで個々に指定し、関数外でそれらを個々に呼び出す方法。

[code]

    def z():
        res = requests.get(･･･)
        data = res.json()
        retun {
                "a" : data["aa"] , 
                "b" : data["bb"] ,
                "c" : data["cc"] ,
                ....
                }
    
    A = z()["a"]
    B = z()["b"]
    C = z()["c"]
    ...
    
[/code]

Case 2：関数内のreturnではdataのみを指定し、関数外で個々に取り出す方法。

[code]

    def z():
        res = requests.get(･･･)
        data = res.json()
        retun {
                "data" : data
                }
    
    Da = z()["data"]
    A = Da["aa"]
    B = Da["bb"]
    C = Da["cc"]
    ･･･
    
[/code]

ここで知りたいことは、

『Case1とCase2の場合で、それぞれres = requests.get(･･･)の部分は何度呼び出されているか？』

ということです。勝手な印象としては、Case1の場合は、1万回呼び出されていて（つまり、相手側に1万回の負荷をかけている）、Case2の場合は1回だけ（あとは自分の手元にあるPC内で処理が行われている？）のように思っていました。それとも実は両方とも1万回呼び出しているのでしょうか？

どなたか御教授いただけると幸いです。


CC BY-SA 4.0
2019-09-23T03:29:09.777
59210
2019-09-23T03:48:34.180
2019-09-23T03:44:30.790
19110
31829
question
python python3
defで取得した外部データ処理の効率についての質問


前者が正しいです。つまり、Case 1 と 2 とで回数は異なります。`requests.get(...)` の呼び出し回数以前に、`z()`
の呼び出し回数が異なることや、取得したデータがどのようにメモリに格納されているかを想像してください。不安であればテスト用に `z()` の関数定義の内部に
`print("呼び出されました")` のように書いておいて、出力が何回出てるか確認してみてください。

ところで Case 2 では単に `return data` とすれば良いです。


CC BY-SA 4.0
2019-09-23T03:48:34.180
59211
2019-09-23T03:48:34.180
19110
59210
answer