欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python6

程序员文章站 2022-03-02 12:08:36
...

lambda函数
在Python里面有两种函数:
用def关键词的正规函数
用lambda关键词的匿名函数
匿名函数:
所谓匿名,即不再使用delf语句定义一个函数
Python使用lambda来创建匿名函数
lambda只是一个表达式,函数体比def简单得多
lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里面的参数
lambda函数没有所谓的函数名,这也是它为什么叫匿名函数
lambda定义匿名函数的关键词
argument_list-函数参数,他们可以是位置参数。默认参数。关键词参数,和正规函数里的参数类型一样。
:-冒号,在函数参数和表达式中间加个冒号
expression-函数表达式,输入函数参数,输出一些值

sumary=lambda arg1,arg2:arg1+arg2
>>> print(sumary(10,20))
30
func=lambda*args:sum(args)
>>> print(func(1,2,3,4,5))
15

匿名函数VS正规函数:

lbd_aqr=lambda x:x**2

print(lbd_aqr)
<function at 0x033E1A50>

lbd_aqr=lambda x:x**2

print(lbd_aqr)
<function at 0x033E1A50>

def aqr(x):
return x**2

print(sqr(9))
Traceback (most recent call last):
File “<pyshell#16>”, line 1, in
print(sqr(9))
NameError: name ‘sqr’ is not defined

(错的)
Lambdab表达式的应用
高阶函数(high-order function)在函数化编程(function programming)很常见,主要有两种形式:
参数是函数(filter,map)
返回值是函数(closure)
下面,看看map,filter的语法:
filter(function, iterable) 过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

odd=lambda x: x% 2==1

templist=filter(odd,[1,2,3,4,5])
print(list(templist))
[1, 3, 5]

map(function, iterable, …) 根据提供的函数对指定序列做映射。
m1=map(lambda x:x**2,[1,2,3,4,5])

print(list(m1))
[1, 4, 9, 16, 25]

除了 Python 这些内置函数,我们也可以自己定义高阶函数,如下:


```python
def apply_to_list(fun,some_list):
 return fun(some_list)