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


你可能感兴趣的:(Python)