Pythonのyieldとは
-
yield
は与えられた式をgenerator
objectに格納して、caller
に返します。 -
Pythonでは
yield
はreturn
と類似していますが、主要な違いとしてreturn
が呼び出された時点で関数の処理を終了するのに対し、yield
は一時停止をし、再開時には引き続き実行されます。- Advantages of yield:
- yieldキーワードを使うと、呼び出し元がオブジェクトを反復するときだけ実行されるので、メモリ効率が高い。
- 変数の状態が保存されるため、一時停止と再開を同じ時点から行うことができ、時間の節約になる。
- Disadvantages of yield:
- ジェネレーターから何度も値が返されるため、コードの流れを理解するのが難しくなることがあります。
- ジェネレーター関数の呼び出しは適切に処理されなければなりません。
(https://www.geeksforgeeks.org/python-yield-keyword/)
- Advantages of yield:
def fun_generator():
yield "Hello world!!"
yield "Geeksforgeeks"
obj = fun_generator()
print(type(obj))
print(next(obj))
print(next(obj))
Output:
<class 'generator'>
Hello world!!
Geeksforgeeks
yield
を使用すると、generator function
となります。generator function
はiterators
を自動生成し、iterable
なobjectとして使用することができるようになります。