คำถามพื้นฐานมาก - จะรับค่าหนึ่งจากเครื่องกำเนิดไฟฟ้าใน Python ได้อย่างไร
จนถึงตอนนี้ฉันพบว่าฉันสามารถเขียนgen.next()
ได้ ฉันแค่อยากแน่ใจว่านี่เป็นวิธีที่ถูกต้องหรือไม่?
คำถามพื้นฐานมาก - จะรับค่าหนึ่งจากเครื่องกำเนิดไฟฟ้าใน Python ได้อย่างไร
จนถึงตอนนี้ฉันพบว่าฉันสามารถเขียนgen.next()
ได้ ฉันแค่อยากแน่ใจว่านี่เป็นวิธีที่ถูกต้องหรือไม่?
คำตอบ:
ใน Python <= 2.5 ให้ใช้gen.next()
. สิ่งนี้จะใช้ได้กับ Python 2.x ทุกเวอร์ชัน แต่ไม่ใช่ Python 3.x
ใน Python> = 2.6 ให้ใช้next(gen)
. นี่คือฟังก์ชันในตัวและชัดเจนกว่า มันจะทำงานใน Python 3 ด้วย
ทั้งสองอย่างนี้ลงท้ายด้วยการเรียกใช้ฟังก์ชันที่มีชื่อพิเศษnext()
ซึ่งสามารถแทนที่ได้โดยการคลาสย่อย อย่างไรก็ตามใน Python 3 ฟังก์ชันนี้ถูกเปลี่ยนชื่อเป็นเพื่อ__next__()
ให้สอดคล้องกับฟังก์ชันพิเศษอื่น ๆ
ใช้ (สำหรับ python 3)
next(generator)
นี่คือตัวอย่าง
def fun(x):
n = 0
while n < x:
yield n
n += 1
z = fun(10)
next(z)
next(z)
ควรพิมพ์
0
1
นี่คือวิธีที่ถูกต้องในการทำ
next(gen)
นอกจากนี้คุณยังสามารถใช้
จะได้รับค่าที่เกี่ยวข้องกับวัตถุกำเนิดไฟฟ้าในหลาม 3 next(<your generator object>)
และการใช้งานดังกล่าวข้างต้น การเรียกต่อไปยัง next () จะสร้างค่าอ็อบเจ็กต์ที่ต่อเนื่องกันในคิว
ใน python 3 คุณไม่มีgen.next()
แต่คุณยังสามารถใช้next(gen)
ไฟล์. แปลกนิดหน่อยถ้าคุณถามฉัน แต่มันเป็นอย่างไร
W1 = params.next()
แต่ได้รับข้อผิดพลาดAttributeError: 'generator' object has no attribute 'next'