ตัวสร้าง
ทำความเข้าใจตัวสร้างและการใช้ตัวสร้างเพื่อสร้างตัววนซ้ำ
ตัวสร้าง เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 5 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 5 บทเรียน
บทนำเกี่ยวกับตัวสร้าง
บทนำเกี่ยวกับตัวสร้าง
ตัวสร้างเป็นตัววนซ้ำชนิดพิเศษใน Python ที่ช่วยให้คุณวนอ่านข้อมูลแบบเลื่อนการประมวลผล แทนที่จะคืนข้อมูลทั้งหมดในครั้งเดียว ตัวสร้างจะส่งคืนข้อมูลทีละรายการ จึงใช้หน่วยความจำอย่างมีประสิทธิภาพ
ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีสร้างและใช้ตัวสร้างใน Python

ตัวสร้างคืออะไร
ตัวสร้างคืออะไร
ตัวสร้างคือฟังก์ชันที่ใช้คีย์เวิร์ด yield เพื่อคืนค่าทีละรายการ การเรียกใช้เมธอด next() ของตัวสร้างแต่ละครั้งจะทำงานต่อจากจุดที่ตัวสร้างส่งค่าครั้งล่าสุด
# Basic generator example
def my_generator():
yield 1
yield 2
yield 3
# Using the generator
gen = my_generator()
print(next(gen)) # Outputs: 1
print(next(gen)) # Outputs: 2
print(next(gen)) # Outputs: 3ตัวสร้างทำงานอย่างไร
ตัวสร้างทำงานอย่างไร
ตัวสร้างจะบันทึกสถานะของฟังก์ชันไว้ จึงสามารถทำงานต่อจากจุดที่หยุดไว้ได้อย่างแม่นยำ คุณสมบัตินี้ทำให้ตัวสร้างใช้หน่วยความจำอย่างมีประสิทธิภาพและเหมาะสำหรับชุดข้อมูลขนาดใหญ่
# Example: Generating a range of numbers
def range_generator(start, end):
while start < end:
yield start
start += 1
for number in range_generator(1, 5):
print(number) # Outputs: 1, 2, 3, 4นิพจน์ตัวสร้าง
นิพจน์ตัวสร้าง
นิพจน์ตัวสร้างมีลักษณะคล้ายการสร้างลิสต์แบบย่อ แต่ใช้วงเล็บกลมแทนวงเล็บเหลี่ยม นิพจน์เหล่านี้จะสร้างตัวสร้างแทนที่จะสร้างลิสต์
# Generator expression
gen_exp = (x * x for x in range(5))
for value in gen_exp:
print(value) # Outputs: 0, 1, 4, 9, 16ตัวสร้างเทียบกับลิสต์
ตัวสร้างเทียบกับลิสต์
ตัวสร้างใช้หน่วยความจำอย่างมีประสิทธิภาพมากกว่าลิสต์ เพราะไม่ได้เก็บข้อมูลทั้งหมดไว้ในหน่วยความจำ แต่จะสร้างข้อมูลขึ้นตามต้องการ
# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]
# Generator expression
gen_exp = (x * x for x in range(1000000))
# List comprehension uses more memory
print(type(list_comp)) # Outputs: <class 'list'>
print(type(gen_exp)) # Outputs: <class 'generator'>กรณีการใช้งานตัวสร้าง
กรณีการใช้งานตัวสร้าง
ตัวสร้างเหมาะสำหรับ:
- ประมวลผลชุดข้อมูลขนาดใหญ่ที่ไม่สามารถเก็บไว้ในหน่วยความจำได้
- สร้างลำดับที่ไม่สิ้นสุด
- ประเมินข้อมูลแบบเลื่อนการประมวลผล
ตัวสร้างแบบไม่สิ้นสุด
ตัวสร้างแบบไม่สิ้นสุด
ตัวสร้างสามารถสร้างลำดับที่ไม่สิ้นสุดได้ เช่น ลำดับตัวเลขที่ดำเนินต่อไปไม่รู้จบ โปรดหยุดการวนซ้ำเพื่อป้องกันการทำงานที่ไม่สิ้นสุด
# Infinite generator example
def infinite_sequence():
num = 0
while True:
yield num
num += 1
# Using the infinite generator
for i in infinite_sequence():
if i > 5:
break
print(i) # Outputs: 0, 1, 2, 3, 4, 5ฟังก์ชันตัวสร้างที่ส่งค่าหลายครั้ง
ฟังก์ชันตัวสร้างที่ส่งค่าหลายครั้ง
ฟังก์ชันตัวสร้างสามารถมีคำสั่ง yield ได้หลายคำสั่ง ทำให้คุณสร้างลำดับที่ซับซ้อนได้:
# Multiple yields in a generator
def multi_yield():
yield "First"
yield "Second"
yield "Third"
for value in multi_yield():
print(value) # Outputs: First, Second, Thirdข้อผิดพลาดที่พบบ่อยเกี่ยวกับตัวสร้าง
ข้อผิดพลาดที่พบบ่อยเกี่ยวกับตัวสร้าง
ต่อไปนี้คือข้อผิดพลาดบางอย่างที่ควรหลีกเลี่ยง:
- ใช้
returnแทนyieldในฟังก์ชันตัวสร้าง - ไม่ดึงค่าจากตัวสร้างด้วยการวนซ้ำหรือ
next() - ใช้ตัวสร้างกับชุดข้อมูลขนาดเล็ก ทั้งที่ลิสต์เหมาะสมกว่า
เราได้เรียนรู้อะไรบ้าง
เราได้เรียนรู้อะไรบ้าง
ในบทเรียนนี้ คุณได้เรียนรู้:
- ความหมายของตัวสร้างและวิธีการทำงานใน Python
- วิธีใช้
yieldเพื่อสร้างฟังก์ชันตัวสร้าง - ความแตกต่างระหว่างตัวสร้างกับลิสต์
- กรณีการใช้งานตัวสร้าง เช่น ลำดับที่ไม่สิ้นสุดและชุดข้อมูลขนาดใหญ่
ทำได้ดีมาก! ไปยังหัวข้อถัดไปกันเลย

คำถามที่พบบ่อย
บทเรียน “ตัวสร้าง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวสร้าง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 5 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวสร้าง”
ทำความเข้าใจตัวสร้างและการใช้ตัวสร้างเพื่อสร้างตัววนซ้ำ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 5 บทเรียน
บทเรียน “ตัวสร้าง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- มัณฑนากร
- ตัวสร้าง
- ตัวจัดการบริบท (คำสั่ง with)
- การสร้างแบบกระชับ (ลิสต์ เซต และดิกชันนารี)
- ตัววนซ้ำและสิ่งที่วนซ้ำได้