โปรแกรมเมอร์ Python หลายคนอาจไม่รู้ว่าไวยากรณ์ของwhileลูปและforลูปรวมถึงelse:ประโยคที่เป็นตัวเลือก:
for val in iterable:
do_something(val)
else:
clean_up()
เนื้อความของelseclause เป็นสถานที่ที่ดีสำหรับการดำเนินการล้างข้อมูลบางประเภทและดำเนินการเมื่อสิ้นสุดการวนรอบปกติ: คือออกจากลูปด้วยreturnหรือbreakข้ามelseประโยค; ออกหลังจากcontinueเรียกใช้งานมัน ฉันรู้ว่านี้เพียงเพราะฉันเพียงแค่มองมันขึ้น (อีกครั้ง) เพราะฉันไม่สามารถจำได้ว่าเมื่อelseข้อจะถูกดำเนินการ
เสมอ? เมื่อ "ล้มเหลว" ของลูปตามชื่อแนะนำ? เมื่อเลิกจ้างปกติ? แม้ว่าจะออกจากลูปด้วยreturnหรือไม่ ฉันไม่สามารถมั่นใจได้อย่างสมบูรณ์โดยไม่ต้องมองหามัน
ฉันโทษความไม่แน่นอนที่ยังคงมีอยู่ของฉันเกี่ยวกับการเลือกคำหลัก: ฉันพบว่าไม่มีความelseผิดพลาดอย่างเหลือเชื่อสำหรับซีแมนติกส์นี้ คำถามของฉันไม่ใช่ "เพราะเหตุใดคำหลักนี้จึงใช้เพื่อจุดประสงค์นี้" (ซึ่งฉันอาจจะลงคะแนนให้ปิด แต่หลังจากอ่านคำตอบและความคิดเห็นแล้ว) แต่ฉันจะคิดอย่างไรเกี่ยวกับelseคำหลักเพื่อให้ความหมายของมันสมเหตุสมผล จำได้ไหม
ฉันแน่ใจว่ามีจำนวนการสนทนาที่ยุติธรรมเกี่ยวกับเรื่องนี้และฉันสามารถจินตนาการได้ว่าตัวเลือกถูกสร้างขึ้นเพื่อความสอดคล้องกับประโยคtryของแถลงการณ์else:(ซึ่งฉันต้องค้นหาด้วย) และมีเป้าหมายที่จะไม่เพิ่มเข้าไปในรายการ คำสงวนของไพ ธ อน บางทีเหตุผลในการเลือกelseจะทำให้ฟังก์ชั่นของมันชัดเจนขึ้นและทำให้มันน่าจดจำมากขึ้น แต่ฉันหลังจากเชื่อมต่อชื่อกับฟังก์ชั่นไม่ใช่หลังจากคำอธิบายทางประวัติศาสตร์ต่อกัน
คำตอบสำหรับคำถามนี้ซึ่งคำถามของฉันถูกปิดสั้น ๆ ซ้ำ ๆ กันมีเรื่องราวที่น่าสนใจมากมาย คำถามของฉันมีจุดเน้นที่แตกต่างกัน (วิธีเชื่อมต่อความหมายเฉพาะelseกับตัวเลือกคำหลัก) แต่ฉันรู้สึกว่าควรมีลิงก์ไปยังคำถามนี้ที่ไหนสักแห่ง
elseหมายโดยทั่วไป "ถ้าเงื่อนไขต่อเนื่องล้มเหลว" ในแบบดั้งเดิมสำหรับการวนซ้ำสภาพความต่อเนื่องเป็นปกติi < 42ซึ่งในกรณีนี้คุณสามารถดูส่วนที่เป็นif i < 42; execute the loop body; else; do that other thing
breakมีความแตกต่างเมื่อรหัสออกโดย กรณีการใช้งานที่ยอมรับได้คือเมื่อลูปค้นหาบางสิ่งและหยุดเมื่อพบ elseจะดำเนินการเฉพาะในกรณีที่ไม่พบ