Gerçek davranışta, hiçbir fark yoktur. Hepsi geri döndü Noneve hepsi bu. Ancak, tüm bunlar için bir zaman ve yer var. Aşağıdaki talimatlar temel olarak farklı yöntemlerin nasıl kullanılması gerektiğidir (veya en azından bana nasıl öğretilmesi gerektiği öğretilmiştir), ancak bunlar mutlak kurallar değildir, böylece gerekli görürseniz bunları karıştırabilirsiniz.
kullanma return None
Bu, işlevin gerçekten daha sonra kullanılmak üzere bir değer döndürmeyi amaçladığını ve bu durumda geri döndüğünü belirtir None. Bu değer Nonedaha sonra başka bir yerde kullanılabilir. return Noneişlevden başka olası dönüş değerleri yoksa asla kullanılmaz.
Aşağıdaki örnekte, dönüş person's mothereğer persongibi verilen bir insandır. Bu bir insan değil, biz iade Noneberi personbir yok mother(en bir hayvan veya bir şey değil varsayalım).
def get_mother(person):
if is_human(person):
return person.mother
else:
return None
kullanma return
Bu, breakdöngülerdekiyle aynı nedenden dolayı kullanılır . Dönüş değeri önemli değildir ve yalnızca tüm işlevden çıkmak istersiniz. Bazı yerlerde, çok sık ihtiyacınız olmasa bile, son derece yararlıdır.
15 prisonerstane var ve onlardan birinin bıçağı olduğunu biliyoruz. prisonerBıçakları olup olmadığını kontrol etmek için her birini tek tek dolaşıyoruz . Kişiye bıçakla vurursak, işlevden çıkabiliriz çünkü sadece bir bıçak olduğunu ve kontrolün geri kalanının bir nedeni olmadığını biliyoruz prisoners. prisonerBıçakla bulamazsak bir uyarı yaparız. Bu birçok farklı şekilde yapılabilir ve kullanmak returnmuhtemelen en iyi yol değildir, ancak returnbir işlevden çıkmak için nasıl kullanılacağını göstermek için sadece bir örnektir .
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()
Not: var = find_prisoner_with_knife()Dönüş değeri yakalanma amacı taşımadığından asla yapmamalısınız .
Hiçbir kullanma returnhiç
Bu da geri dönecektir None, ancak bu değerin kullanılması veya yakalanması amaçlanmamıştır. Bu, işlevin başarıyla sona erdiği anlamına gelir. Temelde aynı şey returnde voidböyle C ++ veya Java gibi dillerdeki işlevlere.
Aşağıdaki örnekte, kişinin annesinin adını belirledik ve daha sonra başarıyla tamamlandıktan sonra işlevden çıkılıyor.
def set_mother(person, mother):
if is_human(person):
person.mother = mother
Not: var = set_mother(my_person, my_mother)Dönüş değeri yakalanma amacı taşımadığından asla yapmamalısınız .
return Nonebana göre fonksiyon bazenNonegeri dönüşü olmayan bir değere sahiptir, fakat konumundareturn Noneböyle bir dönüş değeri yoktur. Hiçbir Yazmareturnhiç asla ilginç bir dönüş değeri tür bir "işlev" yerine bir "prosedür" gibi orada bana ima eder.returnönceki noktaya göre bir "prosedür" den erken var olması anlamına gelir.