Return VS Yield ใน Python — การ์ตูนสั้น

และปัญหานี้ยิ่งแย่ลงเมื่อเราจัดการกับข้อมูลมากขึ้น แล้วถ้ามีคนต่อแถว 1,000 คนล่ะ?
คำหลัก 'กลับ'
def add10(x):
return x
x = add10(4) # x = 14
def get_takoballs(orders):
output = []
for order in orders:
output.append(f'{order} takoballs')
return output
y = get_takoballs([4,6,8])
# y = ['4 takoballs', '6 takoballs', '8 takoballs']
คำหลัก 'ผลผลิต'
เช่นเดียวกับreturn
คีย์เวิร์ดyield
คีย์เวิร์ดจะระบุผลลัพธ์ของฟังก์ชัน
อย่างไรก็ตาม ไม่เหมือนกับreturn
คีย์เวิร์ดตรงที่ฟังก์ชันหนึ่งสามารถyield
แสดงผลได้หลายรายการ คำyield
หลักไม่หยุดการทำงานทั้งหมดหลังจากทำงาน
def testfunction():
yield 4
yield 5
yield 6
for n in testfunction():
print(n)
# 4
# 5
# 6
def get_takoballs(orders):
for order in orders:
yield f'{order} takoballs'
for food in get_takoballs([4, 6, 8]):
print(food)
# 4 takoballs
# 6 takoballs
# 8 takoballs
สมมติว่าเรามีลูกค้า 10,000 รายในร้านทาโกะของเรา (แทนที่จะเป็นแค่ 3)
orders = # a list containing 10000 orders
def return_stall(orders):
# process all 10000 orders first
# then output all 10000 processed orders
output = []
for order in order:
output.append(f'{order} takoballs')
return output
def yield_stall(orders):
# process 1 order, then output it
# repeat til all 10000 orders are completed
for order in orders:
yield f'{order takoballs}'
สำหรับyield_stall
ฟังก์ชัน คำสั่งซื้อแต่ละรายการจะได้รับ (ให้กับลูกค้า) ทันทีที่ดำเนินการ ผู้ชายคนแรกเพียงแค่ต้องรอให้คำสั่งของเขาเสร็จสิ้นเท่านั้น
บทสรุป
หากคุณต้องจัดการกับข้อมูลจำนวนมาก ให้พิจารณาใช้ฟังก์ชันตัวสร้าง (ฟังก์ชันที่ใช้yield
) เพื่อเพิ่มความเร็ว หวังว่านี่จะชัดเจนและเป็นประโยชน์!
คำสุดท้ายบางคำ
หากเรื่องราวนี้ให้คุณค่าและคุณต้องการให้การสนับสนุนเล็กน้อย คุณสามารถ:
- ตบมือ 50 ครั้งสำหรับเรื่องราวนี้ (สิ่งนี้ช่วยฉันได้จริงๆ)
- สมัครสมาชิกสื่อกลางโดยใช้ลิงก์ของฉัน ($ 5/เดือนเพื่ออ่านเรื่องราวสื่อไม่ จำกัด )
เพิ่มระดับการเข้ารหัส
ขอบคุณที่เป็นส่วนหนึ่งของชุมชนของเรา! ก่อนที่คุณจะไป:
- ปรบมือให้กับเรื่องราวและติดตามผู้เขียน
- ดูเนื้อหาเพิ่มเติมในสิ่งพิมพ์ Level Up Coding
- หลักสูตรสัมภาษณ์การเข้ารหัสฟรี ⇒ ดูหลักสูตร
- ติดตามเรา: Twitter | LinkedIn | จดหมายข่าว