2013-03-21 14 views
6

Co dokładnie dzieje się w funkcji:kłopoty ze zrozumieniem funkcje lambda

lambda x: 10 if x == 6 else 1 

wiem co zrobić niektóre funkcje lambda, ale nie jestem przyzwyczajony do oglądania ich napisany w taki sposób. Jestem noobem dla jakiejkolwiek formy kodu.

Odpowiedz

2

Python to świetny język z funkcjonalnymi funkcjami, który można wykonywać przy użyciu funkcji lambdas. Twój przykład jest równoważny

if x == 6: 
    return 10 
else: 
    return 1 

lambda funkcje są użyteczne, gdy trzeba przekazać prostą funkcję jako argument do innej funkcji gdzieś w kodzie.

+2

Cóż, "python to język funkcjonalny" jest nieco rozciągliwy. To bardziej imperatywny język z funkcjonalnymi funkcjami. – Gene

+0

Wystarczająco dużo cech innych paradygmatów, które można nazwać "wieloparadygmatami"; jak prawie wszystkie popularne języki. – marr75

+0

Dziękuję. To naprawdę pomaga. – user2195823

14
some_function = lambda x: 10 if x == 6 else 1 

jest cukier syntaktyczny dla:

def some_function(x): 
    return 10 if x == 6 else 1 

Czyli że powróci 10 jeśli x == 6 ocenia True i zwraca 1 inaczej.

Osobiście wolę formę def we wszystkich, oprócz najprostszych przypadkach, ponieważ umożliwia ona funkcje wieloliniowe, sprawia, że ​​bardziej zrozumiałe jest, jaki rodzaj obciążenia wiąże się z wywoływaniem wywołania, ułatwia analizowanie zamknięcia funkcji, oraz otwiera umysł nowego programatora Pythona na inne, bardziej złożone obiekty kodu (takie jak klasy), które równie dobrze można skonstruować w czasie wykonywania.

+0

Dziękuję bardzo. To ma sens. – user2195823

+0

Nie ma problemu! Witamy w SO! Mamy nadzieję, że pozostaniesz przy programowaniu i wokół StackOverflow! Pamiętaj, aby "zaakceptować" jedną z tych odpowiedzi, która była pomocna, klikając znacznik wyboru. Jeśli planujesz używać SO, przyczyni się to do Twojej reputacji jako "pytającego". – marr75

Powiązane problemy