コルーチンは、Tornado で非同期 I/O コードを開発する方法です。コルーチンは、Python キーワード yield を使用して、呼び出し元の実行を一時停止および再開します。したがって、コルーチンについて学ぶ前に、まず収量の概念と使用法をよく理解しておく必要があります。収量を理解するには、まずイテレータの概念を理解する必要があります。
Python では、yield キーワードを使用して定義されたイテレータは、[ジェネレータ]Python のイテレータで最も一般的に使用されるシナリオは、ループ ステートメントです。これは、コレクションをイテレータでカプセル化し、ループを実行するためにコレクション要素へのアクセスをクックします。
例:
for number in range(5):#range返回一个列表 print(number)
range() は指定された要素を含むコレクションを返し、for ステートメントはそれをイテレータにカプセル化してアクセスします。iter() を使用するとリストについて話すことができます。 、コレクションはイテレータに変換されます。例:
numbers=[1,2,3,4,5] #t就是迭代器 t=iter(numbers) #打印t对象,以便查看其类型 print(t)
戻り結果:
<list_iterator object at 0x10e805748>
通常の Python オブジェクトと比較して、イテレータには __next__()
メソッドが 1 つ多くあります。このメソッドを呼び出すたびに要素を返すことができ、呼び出し元 (for ステートメントなど) は __next__()
メソッドを継続的に呼び出すことでコレクション要素にアクセスできます。
例:
numbers=[1,2,3,4,5] #t就是迭代器 t=iter(numbers) #打印t对象,以便查看其类型 print(t.__next__()) print(t.__next__()) print(t.__next__()) print(t.__next__())
戻り結果:
1 2 3 4
呼び出し元は、StopIteration 例外が返されるまで、__next__()
メソッドを呼び出し続けることができます。
イテレータは Python プログラミングで広く使用されていますが、開発者はどのようにして独自のイテレータをカスタマイズするのでしょうか?
答えは、yield キーワードを使用することです。
yield キーワードを含む定義された関数を呼び出すと、関数は実行されませんが、関数に対応するイテレータが取得されます。
例:
import time def demoIternator(): print("---1---") yield 1 print("---2---") yield 2 print("---3---") yield 3 print("---4---") for x in demoIternator(): print(x) time.sleep(1)
イテレータの __next__() メソッドが呼び出されるたびに、イテレータ関数が実行され、yield の結果が反復戻り要素として返されます。 。
以上がPython キーワード yield の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。