def vs lambda

20/07/2009 - 15:38 von Ole Streicher | Report spam
Hallo,

gibt es eigentlich einen Unterschied zwischen "def" und "lambda"?

also zwischen

f = lambda x, y: x + y

und

def f(x, y): return x + y

Wird da unterschiedlicher Code erzeugt oder ist das nur verschiedene
Syntax für ein und dieselbe Sache?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Diez B. Roggisch
20/07/2009 - 15:47 | Warnen spam
Ole Streicher wrote:

Hallo,

gibt es eigentlich einen Unterschied zwischen "def" und "lambda"?

also zwischen

f = lambda x, y: x + y

und

def f(x, y): return x + y

Wird da unterschiedlicher Code erzeugt oder ist das nur verschiedene
Syntax für ein und dieselbe Sache?



Wie so oft hilft Python einem das selbst rauszufinden:


import dis

g1 = lambda: 10

def g2():






... return 10
...

dis.dis(g1.func_code)






1 0 LOAD_CONST 0 (10)
3 RETURN_VALUE
dis.dis(g2.func_code)






2 0 LOAD_CONST 1 (10)
3 RETURN_VALUE


Es ist also tatsaechlich nur syntaktischer Zucker, zumindest was den code
angeht.

Es gibt aber noch einen Unterschied:

g1.func_name






'<lambda>'
g2.func_name






'g2'


Und das kann natuerlich schon eine Menge helfen beim debuggen.

Diez

Ähnliche fragen