ใช่ เราสามารถสร้างตัวสร้างโดยใช้ตัววนซ้ำใน python การสร้างตัววนซ้ำนั้นง่าย เราสามารถสร้างตัวสร้างโดยใช้คำสั่งผลตอบแทนของคำหลัก
เครื่องกำเนิด Python เป็นวิธีที่ง่ายและง่ายในการสร้างตัววนซ้ำ และส่วนใหญ่จะใช้ในการประกาศฟังก์ชันที่ทำงานเหมือนตัววนซ้ำ
ตัวสร้างเป็นฟังก์ชันที่เราสามารถวนซ้ำได้มากกว่าหนึ่งค่าในแต่ละครั้ง ซึ่งเป็นไปได้มากที่สุดในชีวิตประจำวัน โปรแกรมเมอร์ทุกคนจะใช้อ็อบเจกต์ที่ทำซ้ำได้ เช่น รายการ สตริง และ Dict เป็นต้น
iterator เป็นอ็อบเจ็กต์ที่สามารถวนซ้ำได้ผ่านการวนซ้ำ
ตัวอย่างต่อไปนี้แสดงให้เห็นว่า Generators แนะนำคำสั่ง Yield ใน python ซึ่งทำงานเหมือนกับการคืนค่า
ตัวอย่าง
def generator(): print("program working sucessfully") yield 'x' yield 'y' yield 'z' generator()
ผลลัพธ์
<generator object generator at 0x000000CF81D07390>
ด้วยการใช้ for loop เราสามารถสร้างเครื่องกำเนิดไฟฟ้าได้
ตัวอย่าง
for i in generator(): print(i)
ผลลัพธ์
program working sucessfully x y z
วัตถุ iterators รองรับสองวิธี 1.__iter__method และ 2.__next__method
เมธอด __iter__ จะคืนค่าออบเจ็กต์ iterator เอง ส่วนใหญ่จะใช้สำหรับวนซ้ำและในงบ
เมธอด __next__ จะคืนค่าถัดไปจาก iterator หากไม่มีรายการส่งคืนอีก มันควรเพิ่ม StopIteration Exception
ตัวอย่าง
class function(object): def __init__(self, lowtemp, hightemp): self.current = lowtemp self.high = hightemp def __iter__(self): 'Returns itself as an iterator object' return self def __next__(self): 'Returns the next value till current is lower than high' if self.current > self.high: raise StopIteration else: self.current += 1 return self.current - 1 c = function(3,20) for i in c: print(i, end=' ')
ผลลัพธ์
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20