"ข้อดีของการใช้คำหลัก def สำหรับทั้งเครื่องกำเนิดและฟังก์ชันคืออะไร"
ในขณะที่พวกเขามีกลไกที่แตกต่างกันในทางปฏิบัติเมื่อฉันใช้พวกเขาพวกเขามักจะมีประสิทธิภาพเหมือนกันกับฉันแนวคิด (ฉันไม่คิดว่าการโทรrange()
VS xrange()
)
ในแง่ของการทำความเข้าใจว่าฟังก์ชั่นนั้นเกี่ยวกับอะไรอย่างรวดเร็วฉันเห็นด้วยว่าบางสิ่งบางอย่างหายไปเมื่อใช้def
แต่สิ่งต่าง ๆ ไม่ควรยุ่งเหยิงมากเกินไปในฟังก์ชั่นเริ่มต้น
แม้แต่ความนัยreturn None
สามารถสร้างความสับสนให้กับพฤติกรรมที่ตั้งใจของฟังก์ชั่นหลังจากเงื่อนไขอันยาวนาน (เช่นเป็นความreturn None
ตั้งใจสุดท้ายของพฤติกรรมหรือการกำกับดูแลในตรรกะ) แต่นั่นเป็นเพียงความเชื่อของฉันเกี่ยวกับเรื่องนี้
ฉันไม่รู้สึกว่าการโต้แย้งของฉันมีความน่าเชื่อถือเป็นพิเศษแม้ว่าฉันจะเลื่อนไปที่PEP 255 :
ปัญหา: แนะนำคำหลักใหม่อีกคำ (พูด "gen" หรือ "ตัวสร้าง") แทนที่ "def" หรือเปลี่ยนแปลงไวยากรณ์เพื่อแยกความแตกต่างระหว่างตัวสร้างกับฟังก์ชันที่ไม่ใช่ตัวกำเนิด
คอนดิชั่น: ในทางปฏิบัติ (คุณคิดอย่างไรกับพวกมัน), เครื่องปั่นไฟเป็น
ฟังก์ชั่น แต่ด้วยการบิดที่พวกเขากลับมาทำงานต่อได้ กลไกของวิธีการตั้งค่าเป็นปัญหาทางเทคนิคที่ค่อนข้างน้อยและการแนะนำคำหลักใหม่จะช่วยเน้นกลไกของการกำเนิดไฟฟ้าอย่างไร (ส่วนสำคัญ แต่เล็ก ๆ ของชีวิตของเครื่องกำเนิดไฟฟ้า)
Pro: ในความเป็นจริง (คุณคิดอย่างไรเกี่ยวกับพวกเขา), ฟังก์ชั่นเครื่องกำเนิดไฟฟ้าเป็นฟังก์ชั่นโรงงานที่ผลิตเครื่องกำเนิดไฟฟ้าซ้ำโดยเสมือน ในแง่นี้มันแตกต่างอย่างสิ้นเชิงจากฟังก์ชั่นที่ไม่ใช่เครื่องกำเนิดไฟฟ้าซึ่งทำหน้าที่เหมือนนวกรรมิกมากกว่าฟังก์ชั่นดังนั้นการนำ "def" กลับมาใช้ใหม่จะทำให้เกิดความสับสนมากที่สุด คำสั่ง "ผลผลิต" ที่ฝังอยู่ในร่างกายนั้นไม่เพียงพอที่จะเตือนว่าความหมายของคำนั้นแตกต่างกันมาก
BDFL: "def" มันยังคงอยู่ การถกเถียงกันทั้งสองด้านนั้นไม่น่าเชื่อเลยดังนั้นฉันจึงปรึกษาสัญชาตญาณของนักออกแบบภาษาของฉัน มันบอกฉันว่าไวยากรณ์ที่เสนอใน PEP นั้นถูกต้อง - ไม่ร้อนเกินไปหรือไม่เย็นเกินไป แต่เช่น Oracle ที่ Delphi ในเทพปกรณัมกรีกมันไม่ได้บอกฉันว่าทำไมดังนั้นฉันจึงไม่มีข้อโต้แย้งสำหรับการขัดแย้งกับไวยากรณ์ PEP สิ่งที่ดีที่สุดที่ฉันสามารถทำได้ (นอกเหนือจากการเห็นด้วยกับการโต้แย้ง ... ทำไปแล้ว) คือ "FUD" หากนี่เป็นส่วนหนึ่งของภาษาตั้งแต่วันแรกฉันสงสัยอย่างมากว่ามันจะทำให้หน้า "Python Warts" ของ Andrew Kuchling