Python bir işlevden birden çok değer döndürmek için en iyi yolu nedir?

oy
59

Ben bir dizeye şeyler yapmak gerekiyor bir işlevi vardır. Ben işlemi başarılı olsa da olmasa belirten bir boolean dönmek için işlev gerekiyor ve ben de modifiye dize dönmek gerekir.

C #, ben dize için bir çıkış parametresi kullanmak istiyorsunuz, ancak Python eşdeğer yoktur. Hala Python çok yeniyim ve aklıma gelen tek şey boolean ve modifiye dize bir tuple döndürmektir.

İlgili soru: birden çok değer dönmek için bir işlev için pythonic mı?

Oluştur 01/09/2008 saat 21:01
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
7

bir demet dönersek Python bunu yapmanın olağan bir yoldur.

Cevap 01/09/2008 saat 21:03
kaynak kullanıcı

oy
15

bir demet dönün.

def f(x):
    # do stuff
    return (True, modified_string)

success, modified_string = f(something)
Cevap 01/09/2008 saat 21:03
kaynak kullanıcı

oy
118

def f(in_str):
    out_str = in_str.upper()
    return True, out_str # Creates tuple automatically

succeeded, b = f("a") # Automatic tuple unpacking
Cevap 01/09/2008 saat 21:04
kaynak kullanıcı

oy
28

İşlem başarılı değilse neden bir özel durum? Şahsen, bir fonksiyonun birden fazla değer döndürmek gerekiyorsa, size şeyler doğru şekilde yapıyoruz eğer yeniden veya bir nesneyi kullanması gerektiğini görüşünde olma eğilimindedirler.

Bir istisna atmak Ama eğer daha doğrudan noktaya, sen sorunla başa çıkmak için zorluyor olabilirsiniz. Eğer başarısızlık belirten bir değer döndürmek için çalışırsanız, bu mümkün birileri değerini kontrol ve hataları ayıklamak üzere potansiyel olarak zor bazı ile bitirmek could çok iyi bu.

Cevap 01/09/2008 saat 21:09
kaynak kullanıcı

oy
3

başarısızlık için bir istisna Fırlatma devam etmek iyi bir yoludur ve farklı değerlerin bir sürü dönen yapıyorsanız, bir demet döndürebilir. Eğer gerekçe ediyoruz Özel bir durum için sık sık bir ara yaklaşım: başarısına değiştirilmiş dize döndürmek ve başarısızlık üzerine Hiçbiri dönün. Ben başarısızlık üzerine yakmak için NULL işaretçi dönmek istiyorum bir unreconstructed C programcısı yeterli değilim.

Ben rutin daha büyük bir kütüphanenin bir parçası olarak kullanılan ve diğer geliştiriciler tarafından tüketilmesi yazma olsaydı, başarısızlık üzerine bir istisna olur. Ben kendi test sürümünden yiyorum, ben muhtemelen dönüş farklı türde ve testi dönersiniz.

Cevap 02/09/2008 saat 02:15
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more