Python: yield คืออะไร ทำไมเค้าใช้กันบ่อยจัง

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

หลังจากที่ฟังก์ชันจบการทำงาน ค่าของตัวแปรต่างๆ ที่อยู่ในฟังก์ชั่นนั้นก็จะถูกรีเซตหรือหายไป จนกว่าจะมีการเรียกฟังก์ชันอีกครับตัวแปรและค่าของต่างๆ ถึงจะถูกสร้างขึ้นมาอีกครั้ง ซึ่งเป็นหลักการทำงานทั่วไปของฟังก์ชัน

แล้วถ้าอยากให้ตัวแปรและค่าที่อยู่ในฟังก์ชันถูกเก็บไว้ใช้งานได้ต่อเนื่องจากที่เรียกฟังก์ชันครั้งที่แล้วล่ะจะทำยังไง ใน Python ฟังก์ชันที่สามารถทำงานแบบนี้ได้จะเรียกว่า generators การสร้าง generator นั้นทำได้ง่ายๆ ด้วยการใช้ yield แทน return ในฟังก์ชัน เท่านี้ก็ได้ generator มาใช้งานแล้ว ^^

ลองเข้าไปอ่านบทความนี้แล้วจะเข้าใจมากยิ่งขึ้นครับ Improve Your Python: ‘yield’ and Generators Explained