ホームページ  >  記事  >  バックエンド開発  >  Python キーワード yield の概要

Python キーワード yield の概要

不言
不言転載
2018-10-16 15:59:191846ブラウズ
この記事では、Python のキーワード yield について紹介します。これには一定の参考値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

コルーチンは、Tornado で非同期 I/O コードを開発する方法です。コルーチンは、Python キーワード yield を使用して、呼び出し元の実行を一時停止および再開します。したがって、コルーチンについて学ぶ前に、まず収量の概念と使用法をよく理解しておく必要があります。収量を理解するには、まずイテレータの概念を理解する必要があります。

Python では、yield キーワードを使用して定義されたイテレータは、[ジェネレータ]

1 とも呼ばれます。イテレータ

イテレータ (イテレータ) は、コレクション内の要素にアクセスする方法です。イテレータ オブジェクトは、コレクションの最初の要素へのアクセスを開始し、すべての要素にアクセスした後に終了します。イテレーターは後戻りはできず、前方向にのみ反復できます。

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__() メソッドを呼び出し続けることができます。

2. yield を使用する

イテレータは 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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。