python——lambda函数

        python函数是对象,在def运行后,函数名直接是一个对象的引用——我们可以自由地把这个对象赋给其他的名称并且通过任何引用调用它:
def echo(message):
    print(message)

echo('Dircet call')
Direct call

x = echo
x('Indirect call')
Indirect call

def indirect(func, arg):
    func(arg)
indirect(echo, 'argument call')
argument call
        除了def语句可以生成函数对象外,python中还有一种匿名函数——lambda,它的表达式为:
lambda argument1,argument2,...,argumentN :expression using argument

        与def语句不一样,lambda是一个表达式,它返回了一个值(一个新的函数),可以选择性地赋值给一个变量名,而def语句总是得再头部将一个新的函数赋值给一个变量名,而不是将这个函数作为结果返回。

        在学习def语句时,了解了关键字参数(name=value)和默认参数

def f(a,b,c):
    print(a,b,c)
f(1,2,3)
1 2 3

关键字参数
f(c=3,b=2,a=1)
1 2 3

 默认参数例子
def f(a=1, b=2, c=3):
    print(a,b,c)

f(2)
2 2 3
f(1,4)
1 4 3
f(2,c=6)
2 2 6        //这是一个关键字和默认参数一起使用的情况,a通过位置得到2,c通过关键字得到6,b通过默认值得到2
注意在python的函数调用中,参数必须一次顺序出现:位置参数(value),关键字参数(name=value)和*sequence形式的组合,最后面跟着**dict形式
        在lambda中,默认参数也可以使用,和def中使用方法一样:
x = (lambda a="fee", b="fie", c=“foe”: a+b+c)
x("wee")
'weefiefoe'
        来看一些lambda函数的例子:
例1:
L = [lambda x: x ** 2, lambda x: x** 3, lambda x: x ** 4]
for f in L:
    print(f(2))
4 8 16

print(L[0](3)
9

例2:
key = 'got'
{'already' : (lambda x: x+2), 'got' :(lambda x: x * 4), 'one' : (lambda x: x ** 6)}[key](2)
8


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值