SORU
21 EKİM 2008, Salı


Bir arasındaki fark 'kapatma' ve 'lambda nedir'?

Birisi açıklayabilir mi? Bunların arkasındaki temel kavramları anlıyorum ama ben sık sık birbirlerinin yerine kullanıldıkları görüyorum ve kafam karışıyor.

Ve şimdi buradayız, nasıl normal bir işlevi de farklıdır.

CEVAP
21 EKİM 2008, Salı


Birlambdasadece isimsiz bir işlev, bir işlev adı ile tanımlanır. Bazı dillerde, Düzeni gibi, adlandırılmış işlevleri aynı. Aslında, işlev tanımı yeniden yazılmış bir değişken için bir lambda DAHİLİ olarak bağlama. Python gibi diğer dillerde, aralarında (değil) gereksiz bazı farklılıklar var, ama onlar da aynı şekilde aksi davranır.

Birkapatmaherhangi bir fonksiyonu olankapatırçevretanımlanmış oldu. Bu parametre listesinde değişkenleri erişim anlamına gelir. Örnekler:

def func(): return h
def anotherfunc(h):
   return func()

Bu func değildir, çünkü bir hata neden olurüzerine kapatınanotherfunc - h çevre tanımsızdır. func sadece küresel çevre üzerinde kapatır. Bu çalışır:

def anotherfunc(h):
    def func(): return h
    return func()

Burada, func anotherfunc, tanımlanmış ve python 2.3 ve daha büyük (ya da bunun gibi bir numara). ben^>neredeysedoğru kilitler (mutasyon hala çalışmıyor) var, bu o demektirkapatıranotherfunc'In çevre ve değişkenleri içinde erişebilir. Python 3.1 , mutasyon the nonlocal keyword kullanırken çok işe yarıyor.

- func anotherfuncüzerinde kapatmaya devam edecek bir diğer önemli nokta'nın Artık anotherfunc değerlendirilen bile ortam. Bu kod da çalışır:

def anotherfunc(h):
    def func(): return h
    return func

print anotherfunc(10)()

Bu, 10 baskı.

Bu fark, alakası yoklambda's - onlar farklı (ancak ilgili) iki kavram vardır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autocar

    Autocar

    11 Mart 2006
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008
  • RiverCityGraphix

    RiverCityGra

    6 Ocak 2012