Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คำสำคัญที่ให้ผลผลิตหลาม:คู่มือ

วิธีใช้คำสำคัญที่ให้ผลตอบแทนหลาม

เครื่องกำเนิดไฟฟ้าไม่ใช่แนวคิดที่เข้าใจง่ายที่สุดใน 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 แล้ว!