Gerçek davranışta, hiçbir fark yoktur. Hepsi geri döndü None
ve 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 None
daha sonra başka bir yerde kullanılabilir. return None
işlevden başka olası dönüş değerleri yoksa asla kullanılmaz.
Aşağıdaki örnekte, dönüş person
's mother
eğer person
gibi verilen bir insandır. Bu bir insan değil, biz iade None
beri person
bir 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, break
dö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 prisoners
tane var ve onlardan birinin bıçağı olduğunu biliyoruz. prisoner
Bıç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
. prisoner
Bıçakla bulamazsak bir uyarı yaparız. Bu birçok farklı şekilde yapılabilir ve kullanmak return
muhtemelen en iyi yol değildir, ancak return
bir 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 return
hiç
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 return
de void
bö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 None
bana göre fonksiyon bazenNone
geri dönüşü olmayan bir değere sahiptir, fakat konumundareturn None
böyle bir dönüş değeri yoktur. Hiçbir Yazmareturn
hiç 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.