ในการใช้งานโปรดสังเกตความแตกต่างระหว่างวัตถุเครื่องกำเนิดไฟฟ้ากับฟังก์ชันเครื่องกำเนิดไฟฟ้า
วัตถุเครื่องกำเนิดไฟฟ้าใช้ครั้งเดียวเท่านั้นในทางตรงกันข้ามกับฟังก์ชันเครื่องกำเนิดไฟฟ้าซึ่งสามารถใช้ซ้ำได้ทุกครั้งที่คุณเรียกอีกครั้งเนื่องจากส่งคืนวัตถุเครื่องกำเนิดไฟฟ้า
ในทางปฏิบัตินิพจน์ Generator มักจะใช้ "raw" โดยไม่รวมไว้ในฟังก์ชันและส่งคืนอ็อบเจ็กต์เครื่องกำเนิดไฟฟ้า
เช่น:
def range_10_gen_func():
x = 0
while x < 10:
yield x
x = x + 1
print(list(range_10_gen_func()))
print(list(range_10_gen_func()))
print(list(range_10_gen_func()))
ซึ่งผลลัพธ์:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
เปรียบเทียบกับการใช้งานที่แตกต่างกันเล็กน้อย:
range_10_gen = range_10_gen_func()
print(list(range_10_gen))
print(list(range_10_gen))
print(list(range_10_gen))
ซึ่งผลลัพธ์:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[]
[]
และเปรียบเทียบกับนิพจน์ตัวสร้าง:
range_10_gen_expr = (x for x in range(10))
print(list(range_10_gen_expr))
print(list(range_10_gen_expr))
print(list(range_10_gen_expr))
ซึ่งยังส่งออก:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[]
[]