
リスト内包表記を使って
URL
を処理する
ジェネレータとの違いを理解するために、まずリスト内包表記で試してみましょう。その
後、ジェネレータとして書き直します。
いつものように、
requests
ライブラリを使うコードを
>>>
プロンプトで試してみま
しょう(
requests
ライブラリは、
Web
とやり取りできます)。次の短いセッションでは、
requests
ライブラリをインポートして、要素が
3
つのタプル
urls
を定義し、
for
ループ
とそれぞれの
URL
のランディングページをリクエストするリスト内包表記を組み合わせ、
返されるレスポンスを処理します。
自分の
PC
で試して、何が行われているのかを理解しましょう。
自分のマシンで試すと、
for
ループの入力と結果の表示の間に明らかな遅延を感じるで
しょう。結果は一気に(すべて一度に)表示されます。これは、リスト内包表記が
urls
のそ
れぞれの
URL
を処理してから
for
ループがその結果を利用できるようにするためです。そ
のため、出力されるまで待つ必要があります。
このコードには何の間違いもありません。期待したとおりの処理を行い、正しく出力しま
す。しかし、リスト内包表記をジェネレータとして書き直し、その違いを確認してみましょ
う。前述したように、次のページに進む前に必ず自分でも試してみてください(すると、何
が起こるかがわかります)。
12
章 高度なイテレーション
you are here
509
「
pip
」コマンドを
使って
PyPI
から
「
requests
」を
ダウンロ