ゼロ基礎学python-19.9ジェネレータ関数とジェネレータ式

1455 ワード

この章では、ジェネレータ関数とジェネレータ式の関連と違いについて主に説明します.
1.連絡
*どちらもリターンジェネレータです.サンプルコードを次に示します
>>> g=(x for x in range(5))
>>> g
<generator object <genexpr> at 0x01E673F0>
>>> 

 
>>> def test():
	for x in range(5):
		yield x

		
>>> test()
<generator object test at 0x01E67440>
>>> 

*どちらも手動反復または自動反復をサポートします.サンプルコードを次に示します
>>> g=(x for x in range(5))
>>> next(g)
0
>>> for item in g:
	print(item)

	
1
2
3
4
>>> 

 
>>> def test():
	for x in range(5):
		yield x

		
>>> g=test()
>>> next(g)
0
>>> for item in g:
	print(item)

	
1
2
3
4
>>> 

2.異なる
ジェネレータ関数は、より多く配置できます.sendのサポートでは、式よりも関数が簡単だと思います.たとえば、次のようにします.
もし私が1つのパラメータを式や関数に伝えて実行し、印刷したい場合、この時式は完成しにくいです(しばらくは式の実現を予想していませんでしたが、読者が実現できれば、教えてください.ありがとうございます).
次は、関数の実装にすぎません.
>>> def test():
	for x in range(5):
		y=(yield x)+2
		print(y)

		
>>> g=test()
>>> next(g)
0
>>> g.send (3)
5
1
>>> 

まとめて、この章では主にジェネレータ関数とジェネレータ式の関連と違いを説明します.
 
この章はここまでです.ありがとうございました.
------------------------------------------------------------------
クリックしてゼロ基礎学python-ディレクトリをジャンプ