
ジェネレータ関数の威力
gen_from_urls
関数で何を行うかがわかったので、実際にコードを書きましょ
う。まずは、新しいファイル
url_utils.py
を作成します。このファイルを編集し、
1
行目に
import requests
を追加します。
この関数は入力として
1
つのタプルを取り、出力としてタプルを返すので、
def
行は
単純です(型アノテーションを含め、このジェネレータ関数のユーザにこのことを明示
的に示します)。次のように、ファイルにこの関数の
def
行を追加します。
import requests
def gen_from_urls(urls: tuple) -> tuple:
この関数のブロックは前ページのジェネレータの
for
行をコピー&ペーストするだ
けです。
import requests
def gen_from_urls(urls: tuple) -> tuple:
for resp in (requests.get(url) for url in urls):
次の
1
行は、
requests.get
関数が実行した
GET
リクエストの結果を
return
で
返します。
for
のブロックとして次の行を追加したいと思うでしょうが、追加しては
いけません。
return len(resp.content), resp.status_code, resp.url
return
文が実行されると、その関数は終了します。ここでは
gen_from_urls
関
数は
for
ループの一部として呼び出され