Python | サブジェネレータ関数の使い方
公開日:2021/5/27
Pythonでは,ジェネレータ関数を用いるとメモリの使用量を減らすことができる.ジェネレータ関数からジェネレータ関数を呼び出す処理をすることもできる.呼び出しを受けるジェネレータ関数をサブジェネレータ関数と呼ぶ.構文を作成する際にはyield fromが用いられる特徴がある.以下にサブジェネレータ関数を用いた構文を記載する.
◆実施環境
Python 3.8.8
■サブジェネレータ関数の作成
# 1の処理
def generator1(): # 2つ目のサブジェネレーター
yield 'generator1のyield'
return 'generator1のreturn'
def generator2(): # 1つ目のサブジェネレーター
yield 'generator2のyield'
x = yield from generator1()
print(x)
return 'generator2のreturn'
def generator3(): # ジェネレーター
yield 'generator3のyield'
x = yield from generator2()
print(x)
return('generator3のreturn')
gen = generator3()
print(next(gen)) # "generator3のyield"が出力
print(next(gen)) # "generator2のyield"が出力
print(next(gen)) # "generator1のyield"が出力
print(next(gen)) # "generator1のreturn, generator2のreturn,エラー(StopIteration: generator3のreturn)"が出力
■実行結果
# 1の結果
generator3のyield
generator2のyield
generator1のyield
generator1のreturn
generator2のreturn
Traceback (most recent call last): # エラー出力の最初の行
StopIteration: generator3のreturn # エラー出力の最後の行
以上