Python kullanmak için daha çok tercih edilir: lambda fonksiyonları veya iç içe fonksiyonlar ('') def?
Ben çoğunlukla lambda fonksiyonları kullanın ama bazen aynı davranışı sağlamak gibi iç içe geçmiş fonksiyonları kullanın.
Burada onlar işlevsel ya da başka bir işlev içinde bulmuş olsaydı aynı şeyi bazı önemsiz örnekler:
Lambda fonksiyonu
>>> a = lambda x : 1 x
>>> a(5)
6
Fonksiyon iç içe
>>> def b(x): return 1 x
>>> b(5)
6
Diğer üzerinde kullanmanın avantajları var mı? (Performans? Okunabilirlik? Sınırlamalar? Tutarlılık mı? vb.) Bunun bir önemi var mı? Eğer Pythonic ilkesini ihlal ettiğine karar değil eğer: “There should be one—and preferably only one—obvious way to do it”.
CEVAP
Eğer bir isim lambda
atamak gerekiyorsa, def
kullanın. def
s sonuç aynı, ve çok daha esnek ve okunabilir böylece sadece bir atama için sözdizimsel şeker.
lambda
ler için kullanılabilirbir kez kullan, atbir adı olmaz hangi işlevleri.
Ancak, bu kullanma durumu çok nadirdir. Nadiren isimsiz işlev nesneleri geçmek lazım.
Bu yerleşiklere map()
filter()
işlev nesneleri lazım amaliste üreteçlerivejeneratör ifadelergenelde bu fonksiyonları daha okunabilir ve tüm kullanım durumları, Lambda gerek kalmadan karşılayabilir.
Bu durumlar için gerçekten küçük işlev nesne operator
modül fonksiyonları kullanmalısınız, lambda x, y: x y
yerine operator.add
gibi gerekir
Eğer hala bazı lambda
karşılanmaz gerekirse, ** 14, sadece daha okunaklı olması için yazı düşünebilirsiniz. Eğer fonksiyonu operator
modülündeki olanları daha karmaşık ise, bir def
muhtemelen daha iyidir.
Yani, gerçek dünya lambda
kullanım durumları iyi çok nadirdir.
C# Sıra kullanmak için daha iyi olurdu...
Neden char[] şifreler için Dize Java t...
Nasıl baskı yeni satır veya boşluk olm...
2 tarafından bir tamsayı bölme için ku...
Doğrulama, bir veya daha fazla varlıkl...