ในพฤติกรรมจริงไม่มีความแตกต่าง พวกเขากลับมาทั้งหมดNone
และนั่นคือมัน อย่างไรก็ตามมีเวลาและสถานที่สำหรับสิ่งเหล่านี้ คำแนะนำต่อไปนี้เป็นวิธีการใช้วิธีการที่แตกต่างกัน (หรืออย่างน้อยฉันได้รับการสอนให้ใช้) แต่ไม่ใช่กฎที่แน่นอนเพื่อให้คุณสามารถผสมผสานได้หากคุณรู้สึกว่าจำเป็น
การใช้ return None
None
นี้จะบอกว่าฟังก์ชั่นที่มีความหมายแน่นอนค่าตอบแทนสำหรับการใช้ในภายหลังและในกรณีนี้ก็จะส่งกลับ ค่านี้None
สามารถใช้ที่อื่นได้ return None
ไม่เคยถูกใช้หากไม่มีค่าตอบแทนที่เป็นไปได้อื่น ๆ จากฟังก์ชั่น
ในตัวอย่างต่อไปนี้เรากลับมาperson
's mother
ถ้าperson
ที่กำหนดเป็นมนุษย์ ถ้าไม่ใช่มนุษย์เรากลับมาNone
ตั้งแต่person
ไม่มีmother
(ลองสมมุติว่ามันไม่ใช่สัตว์หรืออะไร)
def get_mother(person):
if is_human(person):
return person.mother
else:
return None
การใช้ return
สิ่งนี้ใช้ด้วยเหตุผลเดียวกับbreak
ในลูป ค่าส่งคืนไม่สำคัญและคุณต้องการออกจากฟังก์ชันทั้งหมดเท่านั้น มันมีประโยชน์อย่างมากในบางสถานที่แม้ว่าคุณจะไม่ต้องการมันบ่อยนัก
เรามี 15 prisoners
และเรารู้ว่าหนึ่งในนั้นมีมีด เราวนผ่านทีละprisoner
คนเพื่อตรวจสอบว่าพวกเขามีมีด prisoners
ถ้าเราตีคนด้วยมีดเราก็สามารถออกจากฟังก์ชั่นเพราะเรารู้ว่ามีเพียงหนึ่งมีดและเหตุผลในส่วนที่เหลือไม่มีการตรวจสอบของ หากเราไม่พบprisoner
มีดเราจะส่งการเตือน สิ่งนี้สามารถทำได้หลายวิธีและการใช้return
อาจไม่ใช่วิธีที่ดีที่สุด แต่เป็นเพียงตัวอย่างเพื่อแสดงวิธีใช้return
สำหรับออกจากฟังก์ชัน
def find_prisoner_with_knife(prisoners):
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition()
return # no need to check rest of the prisoners nor raise an alert
raise_alert()
หมายเหตุ: คุณไม่ควรทำvar = find_prisoner_with_knife()
เนื่องจากค่าส่งคืนไม่ได้ถูกจับ
ใช้ไม่return
ได้ทั้งหมด
สิ่งนี้จะส่งคืนNone
เช่นกัน แต่ค่าดังกล่าวไม่ได้หมายถึงการใช้หรือจับ มันหมายความว่าฟังก์ชั่นจบลงด้วยความสำเร็จ มันเหมือนกับreturn
ในvoid
ฟังก์ชั่นในภาษาเช่น C ++ หรือ Java
ในตัวอย่างต่อไปนี้เราตั้งชื่อแม่ของบุคคลนั้นจากนั้นฟังก์ชั่นจะออกหลังจากทำสำเร็จ
def set_mother(person, mother):
if is_human(person):
person.mother = mother
หมายเหตุ: คุณไม่ควรทำvar = set_mother(my_person, my_mother)
เนื่องจากค่าส่งคืนไม่ได้ถูกจับ
return None
บอกเป็นนัยว่าฟังก์ชั่นบางครั้งมีค่าที่ไม่ใช่None
ผลตอบแทน แต่ที่ตำแหน่งของreturn None
มันไม่มีค่าตอบแทนดังกล่าว การเขียนไม่return
ได้แปลว่าฉันไม่เคยมีค่าตอบแทนที่น่าสนใจเลยเช่นเดียวกับ "ขั้นตอน" เมื่อเทียบกับ "ฟังก์ชั่น"return
หมายถึงการมีอยู่ก่อนจาก "ขั้นตอน" ตามจุดก่อนหน้า