yield เป็นหนึ่งในคีย์เวิร์ดที่ได้เห็นบ่อยๆ ในภาษา Python ก็เลยต้องทำความรู้จักกันซักหน่อยเดี๋ยวจะตกเทรนเอา ^^ แต่ก่อนอื่นลองทำความเข้าใจกับฟังก์ชันก่อน ซื่งใน Python เมื่อมีการเรียกฟังก์ชัน ฟังก์ชันจะถูก execute ตั้งแต่บรรทัดแรก จนกระทั่งถึงบรรทัดที่มี return statement หรือเกิด exception หรือไม่ก็จนจบฟังก์ชัน ซึ่งจะ return None แต่เราไม่เห็นนะครับ มันเป็นแบบ implicit
หลังจากที่ฟังก์ชันจบการทำงาน ค่าของตัวแปรต่างๆ ที่อยู่ในฟังก์ชั่นนั้นก็จะถูกรีเซตหรือหายไป จนกว่าจะมีการเรียกฟังก์ชันอีกครับตัวแปรและค่าของต่างๆ ถึงจะถูกสร้างขึ้นมาอีกครั้ง ซึ่งเป็นหลักการทำงานทั่วไปของฟังก์ชัน
แล้วถ้าอยากให้ตัวแปรและค่าที่อยู่ในฟังก์ชันถูกเก็บไว้ใช้งานได้ต่อเนื่องจากที่เรียกฟังก์ชันครั้งที่แล้วล่ะจะทำยังไง ใน Python ฟังก์ชันที่สามารถทำงานแบบนี้ได้จะเรียกว่า generators การสร้าง generator นั้นทำได้ง่ายๆ ด้วยการใช้ yield แทน return ในฟังก์ชัน เท่านี้ก็ได้ generator มาใช้งานแล้ว ^^
ลองเข้าไปอ่านบทความนี้แล้วจะเข้าใจมากยิ่งขึ้นครับ Improve Your Python: ‘yield’ and Generators Explained