ในพฤติกรรมจริงไม่มีความแตกต่าง พวกเขากลับมาทั้งหมด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หมายถึงการมีอยู่ก่อนจาก "ขั้นตอน" ตามจุดก่อนหน้า