Python中的匿名函数-lambda
2013-12-27 20:09
771 查看
我们可以使用lambda关键字来创建匿名函数在Python中,所谓“匿名”是因为函数不是用标准的方式声明,即没有使用def,除非被复制给一个局部变量,否则这些对象是不创建名字的。作为函数,可能也会有参数。一个完整的lambda语句代表了一个表达式。
lambda [ arg1[, arg2, .... argN]]:expression
参数是可选的,通常在表达式中被使用。
例子(右侧是等价的lambda表达式):
def add(x,y): return x+y 《==》 lambda x, y: x + y
同时可以使用默认的变量参数:
def usuallyAdd2(x , y=4): return x+y 《==》 lambda x,y=4: x+y
def showAllAsTuple(*z): return z 《==》lambda *z: z
运行结果:
>>>a = lambda x,y = 4: x + y
>>>a(6)
10
>>>a(3,2)
5
>>>a(0)
4
>>>b=lambda *z: z
>>>b(98,'xyz')
(98,'xyz')
>>>b(60)
(60,)
尽管lambda是一个单行版的函数,但是不同于C++中的inline语句。
inline是在调用的时候直接展开,免去调用函数的过程以提高性能。而lambda表达式就像一个函数,在被调用的时候创建一个框架对象。
-----------------------------------《Core Python Programming》
小例子
下面是稍复杂的例子,表达式是函数
lambda [ arg1[, arg2, .... argN]]:expression
参数是可选的,通常在表达式中被使用。
例子(右侧是等价的lambda表达式):
def add(x,y): return x+y 《==》 lambda x, y: x + y
同时可以使用默认的变量参数:
def usuallyAdd2(x , y=4): return x+y 《==》 lambda x,y=4: x+y
def showAllAsTuple(*z): return z 《==》lambda *z: z
运行结果:
>>>a = lambda x,y = 4: x + y
>>>a(6)
10
>>>a(3,2)
5
>>>a(0)
4
>>>b=lambda *z: z
>>>b(98,'xyz')
(98,'xyz')
>>>b(60)
(60,)
尽管lambda是一个单行版的函数,但是不同于C++中的inline语句。
inline是在调用的时候直接展开,免去调用函数的过程以提高性能。而lambda表达式就像一个函数,在被调用的时候创建一个框架对象。
-----------------------------------《Core Python Programming》
小例子
result = { 'a' : lambda x : x * 10, 'b' : lambda x : x + 20, 'c' : lambda x : x - 5 } f = result['c'] print f(6) >>>1
下面是稍复杂的例子,表达式是函数
def add(a,b): return a + b def sub(a,b): return a - b def multi(a,b): return a * b def div(a,b) if b: return a / b else: return “diversor can’t be zero” print "使用lambda匿名函数简化操作" def calc(type, x, y): calculation = {'+':lambda :add(x, y), '-':lambda: sub(x, y), '*':lambda:multi(x, y), '/':lambda:div(x, y)} return calculation[type]() #calc = {1:lambda:add(x,y)}[value]() result1 = calc('+',4, 6) result2 = calc('*', 10, 8) print "result1 = ", result1 print "result2 = ", result2 >>> result1 = 10 >>> result2 = 80
相关文章推荐
- python匿名函数lambda
- Python的lambda匿名函数
- Python lambda匿名函数
- python lambda匿名函数简单理解
- Python Lambda 匿名函数
- Python 语言及其应用 Chapter_4_Note_3 闭包_匿名函数lambda_生成器
- Python 匿名函数lambda
- Python lambda匿名函数,递归应用
- 洗礼灵魂,修炼python(24)--自定义函数(5)—匿名函数lambda
- Python lambda(匿名函数)介绍【转】
- Python 3 之 lambda匿名函数详解
- python之匿名函数lambda
- Python 中的 匿名函数(lambda)
- Python 函数式编程--匿名函数Lambda
- lambda:Python的匿名函数
- 【python】详解lambda匿名函数以及结合map、reduce、filter、sorted等使用
- python几个重要的函数(lambda,filter,reduce,map,zip) 一、匿名函数lambda lambda argument1,argument2,...argumentN :e
- Python中lambda匿名函数
- Python的匿名函数——lambda
- 我的python学习之路--列表表达式及匿名函数lambda