SORU
8 Mart 2013, Cuma


Python -- Hiçbiri, ve geri dönüşü hiç geri dönüş

Üç işlevi göz önünde bulundurun:

def my_func1():
  print "Hello World"
  return None

def my_func2():
  print "Hello World"
  return

def my_func3():
  print "Hello World"

Onlar Yok dönmek için görünür. Bu fonksiyonlardan dönen değeri nasıl davranması arasında herhangi bir fark var mı? Diğer karşı bir tercih için herhangi bir sebep var mı?

CEVAP
8 Mart 2013, Cuma


Gerçek davranışı üzerinde, fark yok. Onlar None dön. Ancak, bir kez ve tüm bunlar için yer var. Aşağıdaki talimatları temelde nasıl farklı yöntemler kullanılmalıdır (ya da en azından nasıl olduğumu öğretti kullanılmalıdır), ama onlar değil mutlak kurallar bu yüzden sen-ebilmek karıştırmak onları düşünüyorsan gerekli.


return None kullanarak.

Bu işlev gerçekten de daha sonra kullanmak için bir değer döndürmek için bir anlamı olduğunu söyler, ve bu durumda None döndürür. Bu değer None o zaman başka bir yerde kullanılabilir. return None hiç değilse değerler işlevinden başka Olası dönüş halinde orada kullanılır.

Aşağıdaki örnekte, eğer kişi belirli bir insan ise kişinin anne dönüş. Eğer insan değilse, biz "insan" bir anne (hadi ya o kadar hayvan değil sanırım) yok. beri None dönüş

def get_mother(person):
    if is_human(person):
        return person.mother
    else:
        return None

return kullanarak.

Bu döngüler break aynı nedenle kullanılır. Dönüş değeri, bir önemi yok ve sen sadece tüm işlevi çıkmak istiyorum. Bunu o kadar sık gerek yok bile tho bazı yerlerde son derece yararlıdır.

15 tutuklu var ve bunlardan biri bir bıçak olduğunu biliyoruz. Biz birer mahkum ile bir bıçak varsa kontrol etmek için döngü. Eğer bir bıçak kişiyle çarparsak, sadece tek bir bıçak ve onay mahkumların geri kalanı neden yok hayır bildiğimiz işlev neden çıkış yapabiliriz. Eğer bir bıçak ile mahkum varım eğer doğru değilse, bir uyarı yükseltir. Bu çok farklı şekillerde yapılabilir ve return kullanarak muhtemelen en iyi yol değildir, ama sadece bir fonksiyon çıkmak için return nasıl kullanıldığını göstermek için bir örnek.

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: asla dönüş değeri yakalamış değildir beri var = find_prisoner_with_knife(), yapmalısın.


Hayır kullanarak dönün.

Bu da None ama bu değer kullanılan veya yakalanmak anlamına gelmez dönecektir. Sadece işlevini başarıyla sona erdi demektir. Temel olarak C ya da Java gibi dillerde void 19 *aynı işlevleri.

Aşağıdaki örnekte, kişinin annesinin adı ve işlevi çıkar başarıyla tamamladıktan sonra çıktık.

def set_mother(person, mother):
    if is_human(person):
        person.mother = mother

Not: asla dönüş değeri yakalamış değildir beri var = set_mother(my_person, my_mother), yapmalısın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNET

    CNET

    5 Mayıs 2006
  • ipsy

    ipsy

    1 EKİM 2012
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007