Python 3.3における「yield from」構文の主な使用方法は何ですか?

PYTHON3 チュートリアル

Python 3.3の「yield from」構文について

Python 3.3から導入された「yield from」構文は、ジェネレーターをより効果的に使用するための機能です。この構文を使用することで、ジェネレーターから別のジェネレーターへの委譲が容易になり、ネストされたジェネレーターをスッキリと表現できます。

主な使用方法

「yield from」構文は、外部のジェネレーターから内部のジェネレーターに値を委譲するために使用されます。具体的には、外側のジェネレーターから内側のジェネレーターに処理を委譲し、内側のジェネレーターが完了すると外側のジェネレーターに制御が戻ります。

具体的な例

def numbers_up_to(n):
    for i in range(1, n + 1):
        yield i

def square_numbers(n):
    for num in numbers_up_to(n):
        yield num ** 2

def cube_numbers(n):
    for num in square_numbers(n):
        yield num ** 3

result = cube_numbers(3)
for num in result:
    print(num)

上記の例では、最初のジェネレーター「numbers_up_to」から「square_numbers」、そして「square_numbers」から「cube_numbers」へと値を委譲しています。最終的に、3までの数値の3乗が順番に出力されます。

さらなる例

def chain_generators(*generators):
    for gen in generators:
        yield from gen

gen1 = numbers_up_to(2)
gen2 = square_numbers(2)
gen3 = cube_numbers(2)

chained_gen = chain_generators(gen1, gen2, gen3)
for num in chained_gen:
    print(num)

この例では、複数のジェネレーターを連結する「chain_generators」関数を定義し、それぞれのジェネレーターを結合して1つのジェネレーターとして扱っています。最終的に、1から2までの数値、その2乗、そしてその3乗が順番に出力されます。

Python 3.3で導入された「yield from」構文は、ジェネレーターを介して別のジェネレーターから値を取得するための便利な方法です。主な使用方法は、ジェネレーター内で別のジェネレーターを呼び出し、そのジェネレーターが生成する値を直接返すことができる点です。これにより、ネストされたジェネレーターを簡潔に表現でき、コードの可読性が向上します。また、「yield from」を使用することで、ジェネレーターのネストや反復処理を効率的に行うことができます。

購読
通知
0 Comments
Inline Feedbacks
View all comments