2013-05-21 29 views
19

lambda'nın dönüş ifadesi olmadığını biliyorum. Normaldepython - can lambda birden fazla dönüşe sahiptir

def one_return(a): 
    #logic is here 
    c = a + 1 
    return c 

yazılabilir:

lambda a : a + 1 

Nasıl bir lambda fonksiyonunda yazma Bunun konusu:

def two_returns(a, b): 
    # logic is here 
    c = a + 1 
    d = b * 1 
    return c, d 
+9

, hatta birden fazla değerle tek dönüş değil. Tek bir değer ile bir dönüş (bu bir tuple olur). – delnan

+1

+1 @ delnan’ın yorumu, Python’un tanıtımını sevmemin en önemli nedenlerinden biri. Aslında neler olup bittiğini gizler. – Izkata

+5

@Izkata Ne? '' tuple '' terfi ettirilmez, tam anlamıyla tuple yaratımının sözdizimi budur. Ve bu tamamen net IMHO. – delnan

cevap

27

Evet, mümkün. Bir fonksiyonun sonunda bu şekilde bir ifade böyle Çünkü:

return a, b 

bu eşdeğerdir mi:

return (a, b) 

Ve orada, gerçekten tek bir değer dönüyoruz: var olur bir demet iki element Bir tek değer çünkü Yani, bir lambda bir tuple döndürmek için ok: Birden fazla dönüş değil

lambda a, b: (a, b) # here the return is implicit 
+3

diğer bir deyişle, bir öncelik sorunu var. '' 'lambda'dan daha düşük önceliğe sahiptir – newacct

14

Emin:

lambda a, b: (a + 1, b * 1) 
9

neyi hakkında:

lambda a,b: (a+1,b*1) 
İlgili konular