
ジェネレータ関数の動作
from url_utils import gen_from_urls
urls = ('http://talkpython.fm', 'http://pythonpodcast.com', 'http://python.org')
for resp_len, status, url, in gen_from_urls(urls):
print(resp_len, '->', status, '->', url)
1
〜
2
行目は簡単です。関数をインポートし、
URL
のタプルを定義します。
楽しいのはこれからです。ジェネレータ関数
gen_from_urls
を呼び出します。こ
の
for
ループを「呼び出し側コード」と呼ぶことにしましょう。
for resp_len, status, url, in gen_from_urls(urls):
インタプリタは
gen_from_urls
関数に飛び、この関数の実行を開始します。
URL
のタプルを関数の唯一の引数にコピーし、ジェネレータ関数の
for
ループを実行しま
す。
def gen_from_urls(urls: tuple) -> tuple:
for resp in (requests.get(url) for url in urls):
yield len(resp.content), resp.status_code, resp.url
514
12
章
ジェネレータ関数をたどる(
1/2
)
次のコードの実行をたどって、ジェネレータ関数を実行すると何が起こる ...