Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คีย์เวิร์ด yield ใน Python ทำอะไร

yield ใช้ใน Generator เพื่อทำความเข้าใจพฤติกรรม เริ่มจากดู Iterables ก่อน: Python Objects เช่น List, File, String เรียกว่า Iterables Object ใดๆ ที่วนลูปด้วย for ... in ได้ คือ Iterable Iterator Object ก็เป็น Iterable แต่ Iterate ได้เพียงครั้งเดียว ได้ Iterator จาก Iterable ด้วย iter() มีเมธอด next() สำหรับ Iterate

>>> L1 = [1,2,3,4]
>>> I1 = iter(L1)
>>> while True:
...     try:
...         print(next(I1))
...     except StopIteration:
...         break

Generator คล้าย Function แต่ Yield ค่าต่อเนื่องใน Iterator ด้วย yield

เมื่อเรียก Generator Function จะคืน Iterator Object ทันที ยังไม่เริ่ม Execute Function เมื่อเรียก next() ครั้งแรก Function เริ่มรันจนถึง yield คืนค่า Yielded yield จำตำแหน่งการ Execute ไว้ เรียก next() ครั้งที่ 2 จะต่อจากค่าก่อนหน้า

ตัวอย่าง: Fibonacci Series Generator

import sys

def fibo(n):
    a, b = 0, 1
    while True:
        if a > n:
            return
        yield a
        a, b = b, a + b

f = fibo(20)
while True:
    try:
        print(next(f))
    except StopIteration:
        break