SORU
25 EYLÜL 2008, PERŞEMBE


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
25 EYLÜL 2008, PERŞEMBE


Eğer bir isim lambda atamak gerekiyorsa, def kullanın. defs sonuç aynı, ve çok daha esnek ve okunabilir böylece sadece bir atama için sözdizimsel şeker.

lambdaler 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.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Erica Griffin

    Erica Griffi

    8 HAZİRAN 2009
  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009
  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010