ผู้สอน: สวัสดีและยินดีต้อนรับกลับมา
ในวิดีโอนี้ เรากำลังพูดถึงคลาสตัวสร้างและการวนซ้ำ
ที่นี่ฉันจะแสดงคลาสที่ใช้ตัวสร้างตัวเลข
100 ตัวที่เราทำในวิดีโอที่แล้ว
ผมจะเรียกมันว่า FirstHundredGenerator
เช่นนั้น เราจะกำหนดวิธีการเริ่มต้น
ซึ่งจะเริ่มเลขเป็นศูนย์
แล้วเราจะกำหนดขีดล่าง ขีดล่าง
วิธีถัดไป
เมื่อคุณกำหนดเมธอด next ในคลาส อ็อบเจ็กต์ใดๆ
ที่คุณสามารถเรียก next ของอ็อบเจ็กต์ของฉันได้ เช่นนั้น
นี่เป็นอีกวิธีหนึ่งที่ทำให้คุณโทรต่อไปได้
นอกจากนี้ยังบอก Python บางสิ่งที่ค่อนข้างสำคัญ
เราจะมาดูกันว่าในอีกสักครู่
ดังนั้น ถ้าเราต้องการสร้างตัวเลข 100 ตัว สิ่งที่เราต้องทำคือสร้างตัวเอง
หมายเลข
ส่งคืน และเพิ่มทีละรายการ
ดังนั้นหากตนเอง จำนวนน้อยกว่า 100 เราจะไม่ใช้คีย์เวิร์ดผลตอบแทนที่นี่
เพราะคุณไม่จำเป็นต้องใช้ในตัวสร้างคลาส
ขออภัย หนึ่งในสิ่งเหล่านี้ (หัวเราะ) ฉันจะไม่พูดอะไรที่อาจเข้าใจผิดได้ว่าผิด
เพียงเพื่อให้ฉันไม่ทำให้คุณสับสน
สิ่งที่ต้องทำคือ ถ้าตัวเลขนั้นน้อยกว่า
100 เราใส่มันลงในตัวแปร
จากนั้นเราเพิ่มจำนวนขึ้นหนึ่ง จากนั้นเราจะคืนค่าตัวเลขปัจจุบัน
ซึ่งเป็นค่าก่อนหน้านั้น นั่นคือศูนย์
เราเพิ่มพูนตนเอง จำนวนหนึ่งเรากลับศูนย์
ตกลง.
ตอนนี้ สิ่งสำคัญในชั้นเรียน
เราต้อง ถ้าเราต้องการหยุดส่งคืนตัวเลข
เช่นนั้น เราจะไม่ใช้การวนซ้ำที่นี่เพื่อหยุดเราเมื่อเราถึง
100
ดังนั้นเมื่อเราถึง 100 เราต้องเกิดข้อผิดพลาดพิเศษที่เรียกว่า
Stop Iteration
ข้อผิดพลาด Stop Iteration บอก Python
ว่าเราถึงจุดสิ้นสุดของตัวสร้างนี้แล้ว
ฉันกำลังพูดถึงเครื่องปั่นไฟ และฉันก็สะดุ้งเล็กน้อย อืมนี่
เนื่องจากนี่คือตัวสร้างโดยพื้นฐานแล้ว คุณเริ่มต้นที่ศูนย์
จากนั้นคุณตัดสินใจว่าคุณต้องการส่งคืนหมายเลขใหม่หรือไม่
คุณได้ตัวเลขนั้น จากนั้นคุณส่งคืน จากนั้นโปรแกรมจะหยุดทำงาน
แต่วัตถุของคุณยังคงอยู่และมันจำตัวเองได้ ตัวเลข.
ดังนั้น ถ้าเรามี gen ของฉัน และนั่นคือเครื่องกำเนิดร้อยเครื่องแรกของเราที่นั่น
เจนของฉัน แน่นอนว่าตัวเลขนั้นเป็นศูนย์ในตอนเริ่มต้น
ใช่ไหม
มาแสดงให้คุณเห็นว่า
gen ของฉันเป็นเลขศูนย์ในตอนเริ่มต้น
ถ้าคุณทำ Gen ของฉัน ต่อไปอย่างนั้นแล้วพิมพ์
gen ของฉัน หมายเลขอีกครั้ง คุณได้รับหนึ่ง
ที่เหมาะสมใช่มั้ย?
เพราะวิธีต่อไปคือเช็คว่าตัวเลขน้อยกว่า
100 หรือเปล่า แล้วค่อยเพิ่มทีละตัว
ทั้งหมดนี้จึงสมเหตุสมผล
ทีนี้ เพื่อให้มันทำงานเหมือนเครื่องปั่นไฟ
เราก็แค่พูดว่า next of my gen อย่างนั้น
จากนั้นเราสามารถเรียกใช้สิ่งนี้อีกครั้งและสิ่งเดียวกันก็ออกมา
แน่นอนว่าคนต่อไปของ Gen ของฉันกำลังส่งคืนหมายเลขที่มีอยู่ก่อนที่เราจะเพิ่มค่าขึ้น
ดังนั้นแทนที่จะพิมพ์ gen ของฉัน ตัวเลขตรงนี้ เราสามารถพิมพ์
next ของ gen ของฉัน และที่นี่ เราสามารถพิมพ์ next
ของ gen ของฉัน และเราก็ได้ผลลัพธ์เหมือนกัน
ศูนย์และหนึ่ง
ครั้งแรกที่เราเรียกถัดไป เราได้รับค่าปัจจุบัน ซึ่งเท่ากับศูนย์
แต่เราได้เพิ่มค่าในตัวเอง หมายเลขโดยหนึ่ง
ครั้งหน้าที่เราโทรครั้งต่อไป
เราอีกครั้ง การเพิ่มจำนวนนั้นทีละหนึ่ง
แต่เราจะคืนค่าเดิม ซึ่งเป็นค่าหนึ่ง
ตอนนี้มันทำงานเหมือนกับตัวสร้าง
และที่จริง นี่คือตัวสร้าง
ไม่ได้เก็บค่าทั้งหมดไว้ที่ 100 รายการในรายการ
มันให้คุณทีละคน
มันสร้างขึ้นเมื่อคุณเรียกใช้ฟังก์ชันถัดไป
ขออภัย วิธีถัดไป
อย่างไรก็ตาม dunder next นั้นใหม่ใน Python สาม
ดังนั้นหากคุณใช้ Python
two คุณจะต้องกำหนดต่อไปโดยไม่มีขีดล่าง
นั่นเป็นเพียงสำหรับ Python สองเท่านั้น
หากคุณกำลังใช้ Python สามให้ใช้ dunder ต่อไป
โอเค ออบเจ็กต์ทั้งหมดที่มีเมธอด
dunder next เรียกว่า iterators
เครื่องกำเนิดไฟฟ้าทั้งหมดเช่นนี้ เป็นตัววนซ้ำ
แต่ไม่ใช่ในทางกลับกัน
คุณจึงสามารถมีตัววนซ้ำที่ไม่สร้างตัวเลขได้
ตัวอย่างเช่น หากคุณแก้ไขตัวสร้างตัวเลขตัวแรกของคุณให้ส่งคืนส่วนหนึ่งของรายการ
เช่น ตัววนซ้ำร้อยอันดับแรก ไม่ใช่ตัวสร้าง คุณสามารถมีวิธี init ที่ระบุว่าตนเองได้ที่นี่
ตัวเลขคือ
หนึ่ง สอง สาม สี่ ห้า
แน่นอนว่าไม่ใช่ ไม่ใช่ร้อยแรก
นั่นคือตัววนซ้ำห้าตัวแรก ตัวฉันเองคือศูนย์
นั่นคือดัชนีที่คุณจะเริ่มส่งคืน
ศูนย์ และจำนวนที่เราส่งคืนมาจากหนึ่งถึงห้า
จากนั้นอีกครั้ง วิธีถัดไปที่นี่คือจะบอกว่าฉันน้อยกว่าเลนของตัวเองหรือไม่
หมายเลขกลับตัวเอง
ตัวเลข I.
ใช่ไหม
อื่น ๆ ให้หยุดการวนซ้ำ
ขออภัย คุณไม่สามารถมองเห็นสิ่งนั้นได้ดี
แต่เราไปแล้ว
ทั้งหมดที่เรากำลังทำอยู่นี้คือ เราไม่ได้สร้างอะไรเลย
เรากำลังบอกว่าถ้าผมน้อยกว่า
แน่นอนว่าเราต้องทำแบบนี้ ผมบวก 1 เท่ากับแล้วคืนค่าปัจจุบัน
เราต้องเพิ่มขึ้นหนึ่ง และเราต้องเพิ่มขึ้นหนึ่งอย่างแน่นอน
อีกครั้ง เราไม่ได้สร้างตัวเลขใหม่
เรากำลังติดตาม I ดัชนีที่เราอยู่ในขณะนี้ คุณต้องทำอย่างนั้นตามลำดับ
สิ่งนี้ควรเป็นตัวของตัวเอง
โดยวิธีการ
คุณสามารถบอกได้ว่าฉันไม่ได้เตรียมตัวอย่างนี้ไว้จริงๆ แต่ฉันแค่อยากจะแสดงให้คุณเห็นโดยเร็วว่าไม่ใช่ตัวสร้างทั้งหมด
ไม่ใช่ตัววนซ้ำทั้งหมด ต้องเป็นตัวสร้าง
ในกรณีนี้ คุณไม่ได้สร้างตัวเลข
แต่เป็นการส่งคืนจากรายการ
ดังนั้น เป็นเพียงตัวอย่างสั้นๆ เท่านั้น
คุณจะมีสิ่งนี้ในโค้ดตัวอย่างสำหรับส่วนนี้
ถ้าฉันจำได้ให้เพิ่มเข้าไป
ตรงนี้ สิ่งที่เราทำเมื่อเรากำหนดเมธอดถัดไป คือเรากำหนดตัววนซ้ำ
ซึ่งเป็นสิ่งที่คุณสามารถไปทีละรายการได้ โดยการเรียกใช้ฟังก์ชันถัดไป
ไม่จำเป็นว่าจะต้องสร้างตัวเลขทั้งหมด แต่ก็สามารถทำได้
แต่ก็สามารถส่งคืนได้จากรายการหรือจากการส่งหรือที่อื่น
ๆ
ดังนั้นในไพธอนจึงมีความสำคัญ
ตัววนซ้ำเป็นวัตถุเหล่านั้นที่มีเมธอด
dunder next
คุณสามารถโทรหาพวกเขาต่อไปได้
เรามีตัวทำซ้ำ แต่เราไม่สามารถทำเพื่อฉันในรุ่นของฉัน
ในรุ่นของฉัน
คุณไม่สามารถทำเช่นนี้
บอกเลยว่าตอนนี้.
หากเราเรียกใช้สิ่งนี้ คุณจะได้รับข้อผิดพลาดที่ระบุว่าวัตถุตัวสร้าง
100 รายการแรกไม่สามารถทำซ้ำได้ แต่ฉันเพิ่งบอกว่ามันเป็นตัววนซ้ำ
และมันคือตัววนซ้ำ
ความหมายของ iterator คือคุณสามารถเรียกใช้ฟังก์ชันถัดไปได้
และมันจะให้ค่าถัดไปแก่คุณ
แต่ iterator กับ iterable ต่างกัน
คุณสามารถวนซ้ำบน iterable
และใช้ iterator เพื่อรับค่าถัดไปจากลำดับหรือจากค่าที่สร้างขึ้น
สิ่งที่เรามีอยู่คือตัววนซ้ำ
ไม่ใช่แบบวนซ้ำได้
เราจะเรียนรู้ในวิดีโอหน้าถึงวิธีการสร้าง
iterable เพื่อให้เราสามารถวนซ้ำได้ หรือทำสิ่งต่างๆ
เช่น ผลรวมของ Gen ของฉัน หรือคุณรู้ ไม่ว่าคุณจะต้องการทำอะไรก็ตาม
รายชื่อ Gen ของฉัน
สิ่งเหล่านี้ต้องการ iterable ไม่ใช่ iterator
ลองทำกันในวิดีโอหน้า
ฉันจะไปพบคุณที่นั่น.