Skip to Content
Fluent Python ―Pythonicな思考とコーディング手法
book

Fluent Python ―Pythonicな思考とコーディング手法

by Luciano Ramalho, 豊沢 聡, 桑井 博之, 梶原 玲子
October 2017
Intermediate to advanced
832 pages
13h 34m
Japanese
O'Reilly Japan, Inc.
Content preview from Fluent Python ―Pythonicな思考とコーディング手法

16章コルーチン

Python本はいろいろありますが、それらの言うことを信じるとすれば、(コルーチンは)説明が不十分で、不明瞭で、明らかに役に立たないPythonの機能のようです。

——David BeazleyPython本の著者

辞書を引くと、動詞のyieldには主として「生成する」と「譲る」という2つの意味が示されています。Pythonのジェネレータで使用されるyieldキーワードには、どちらの意味も当てはまります。yield itemなどのステートメントは、next(…)の呼び出し元が受け取る値を生成します。また、呼び出し元が次の値を取り込む用意ができるまで、ジェネレータの処理を休止して道を譲りもします。この状態はnext()が再度呼び出されるまで持続され、そのあと呼び出し元はジェネレータから値を取得します。

コルーチンはその本体にyieldキーワードを持った関数にすぎず、構文的にはジェネレータのようなものです。しかし、コルーチンのyieldは通常、datum = yieldのように式の右辺に現れます。また、値を生成することもあれば、しないこともあります。yieldキーワード以降に式がなければ、ジェネレータが生成するのはNoneです。コルーチンは、呼び出し元からデータを受け取ることもあります。コルーチンにデータを送るには、next(…)ではなく.send(datum)を用います。そして呼び出し元はたいてい、コルーチンに値を引き渡します。

yieldキーワードを介したデータのやり取りを、まったく行わないこともあります。データがどのように交換されようと、yieldは制御フローデバイスです。それぞれのコルーチンが中央のスケジューラに制御を譲ることで他のコルーチンを動作させる、協調的なマルチタスクの実装に用いられます。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Using Asyncio in Python

Using Asyncio in Python

Caleb Hattingh
Robust Python

Robust Python

Patrick Viafore

Publisher Resources

ISBN: 9784873118178Other