วิธีใช้คำสำคัญที่ให้ผลตอบแทนหลาม
เครื่องกำเนิดไฟฟ้าไม่ใช่แนวคิดที่เข้าใจง่ายที่สุดใน Python ที่เลวร้ายไปกว่านั้น พวกเขาใช้คำหลักพิเศษที่เรียกว่า "ผลตอบแทน" แม้ว่าเครื่องกำเนิดไฟฟ้าจะทำงานเองก็ตาม คำหลักผลตอบแทนคืออะไร? เทียบกับคำสั่ง return เป็นอย่างไร?
นี่เป็นคำถามที่ดี ในคู่มือนี้ เราจะพูดถึงคำแถลงผลตอบแทนและวิธีใช้งานในโค้ดของคุณ เราพูดถึงตัวอย่างของคีย์เวิร์ดผลตอบแทนในการใช้งานจริง มาเริ่มกันเลย!
เราแนะนำให้อ่านบทความของเราเกี่ยวกับ Python iterators และ generators ก่อนดำเนินการต่อ ข้อมูลนี้จะให้บริบทที่เป็นประโยชน์แก่คุณซึ่งคุณสามารถใช้เพื่อทำความเข้าใจคำหลักผลตอบแทนได้
กลับสู่พื้นฐาน:ตัววนซ้ำและตัวสร้าง
รายการถูกอธิบายว่าเป็นวัตถุที่ทำซ้ำได้ เนื่องจากคุณสามารถดูเนื้อหาได้โดยใช้ลูป "สำหรับ" ทุกครั้งที่ดำเนินการวนรอบ รายการในรายการจะถูกเข้าถึงโดย Python พจนานุกรม ทูเพิล และสตริง ยังเป็นอ็อบเจ็กต์ที่ทำซ้ำได้
ฟังก์ชันที่เข้าถึงรายการจากวัตถุที่ทำซ้ำได้เรียกว่า ตัววนซ้ำ . มาสร้างรายการและวนซ้ำโดยใช้ for loop:
peppers = ["Scotch Bonnet", "Piri Piri", "Cayenne"] for p in peppers: print(p) for p in peppers: print(p)
รหัสนี้จะพิมพ์พริกทั้งหมดในรายการ "พริก" ไปที่คอนโซล:
Scotch Bonnet Piri Piri Cayenne Scotch Bonnet Piri Piri Cayenne
เราใช้ตัววนซ้ำหลายครั้งตามที่เราต้องการ ในตัวอย่างที่แล้ว เราวนซ้ำวัตถุ "peppers" สองครั้ง
เครื่องกำเนิด Python เป็นเหมือนตัววนซ้ำที่ใช้ในการทำซ้ำวัตถุ มีข้อแตกต่างใหญ่ประการหนึ่ง:คุณสามารถวนซ้ำบนตัวสร้างได้เพียงครั้งเดียว ในขณะที่เราสามารถวนซ้ำ “พริก” ได้หลายครั้งตามที่เราต้องการ ตัวสร้างจะเข้าถึงได้เพียงครั้งเดียว
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
มากำหนดเครื่องปั่นไฟสำหรับรายการพริกของเรากัน:
def print_peppers(peppers): for p in peppers: yield p peppers = ["Scotch Bonnet", "Piri Piri", "Cayenne"] pepper_generator = print_peppers(peppers) for p in pepper_generator: print(p)
เรากำหนดฟังก์ชันที่เรียกว่า print_peppers()
. นี่คือฟังก์ชันตัวสร้างของเรา ยอมรับหนึ่งอาร์กิวเมนต์:รายการของพริกที่เราต้องการพิมพ์ไปยังคอนโซล
ในโปรแกรมหลักของเรา เราเรียก print_peppers()
ฟังก์ชั่นและกำหนดให้กับตัวแปร pepper_generator ต่อไป เราวนซ้ำบนตัวสร้างโดยใช้ลูป "for" for loop ของเราเรียกอ็อบเจกต์ตัวสร้างและวนซ้ำ
เรียกใช้รหัสของเรา:
Scotch Bonnet Piri Piri Cayenne
ผลลัพธ์จะเหมือนกับตัวอย่างแรกของเรา ความแตกต่างคือเราสามารถทำซ้ำรายการของเราได้เพียงครั้งเดียว เรามาลองวนซ้ำบนตัวสร้างของเราอีกครั้ง:
... for p in pepper_generator: print(p) for p in pepper_generator: print(p)
รหัสของเราส่งคืน:
Scotch Bonnet Piri Piri Cayenne
เราได้ทำซ้ำผ่านตัวสร้างของเราแล้วครั้งหนึ่ง เราไม่สามารถทำมันได้อีก นั่นเป็นสาเหตุที่ Second for loop ของเราไม่คืนค่าใดๆ
คำหลักที่ให้ผลตอบแทนหลาม
สังเกตคำว่า "yield" ในตัวอย่างสุดท้าย นี่เป็นการช่วยเตือน:
def print_peppers(peppers): for p in peppers: yield p
คีย์เวิร์ด "yield" ปรากฏอยู่ในฟังก์ชันของเรา ส่งคืนค่าในฟังก์ชันตัวสร้าง คล้ายกับคีย์เวิร์ด "return"
ใช้ผลตอบแทนเมื่อคุณต้องการสร้างตัวสร้างซึ่งคุณสามารถวนซ้ำได้ ในตัวอย่างที่แล้ว เราใช้ผลผลิตเพื่อสร้างเครื่องกำเนิดไฟฟ้าสำหรับรายการพริกของเรา
ฟังก์ชันใด ๆ ที่มีผลตอบแทนจะส่งกลับเครื่องกำเนิด เราเห็นสิ่งนี้โดยการตรวจสอบประเภทของตัวแปร pepper_generator โดยใช้ type()
วิธีการ:
<class 'generator'>
สิ่งนี้บอกเราว่า pepper_generator ซึ่งได้รับมอบหมายให้ทำงาน print_peppers เป็นเครื่องกำเนิด
บทสรุป
คำหลักผลตอบแทนส่งกลับค่าภายในเครื่องกำเนิด ตัวสร้างคือตัววนซ้ำชนิดพิเศษที่มีค่าสามารถวนซ้ำได้เพียงครั้งเดียว คีย์เวิร์ดให้ผลตอบแทนคล้ายกับคำสั่ง return ยกเว้นคำสั่ง return ไม่สามารถใช้ในตัวสร้างได้
ตอนนี้คุณก็พร้อมที่จะใช้คีย์เวิร์ดผลตอบแทนอย่าง Pythonista แล้ว!