Python - 函数对象

Python - 函数对象

1. lambda 函数

1
2
func = lambda x,y: x + y
print func(3,4)

lambda生成一个函数对象。该函数参数为x,y,返回值为x+y。函数对象赋给func。func的调用与正常函数无异。

亦可写作如下形式:

1
2
def func(x, y):
return x + y

函数可以作为一个对象,进行参数传递。如:

1
2
3
4
5
6
def test(f, a, b):
print 'test'
print f(a, b)
test(func, 3, 5)
test((lambda x,y: x**2 + y), 6, 9)

2. map() 函数

map()是Python的内置函数。它的第一个参数是一个函数对象。

map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。

1
2
3
4
re = map((lambda x: x+3),[1,3,5,6])
>> [4, 6, 8, 9]
re = map((lambda x,y: x+y),[1,2,3],[6,7,9])
>> [7, 9, 12]

在Python 3.X中,map()的返回值是一个循环对象。可以利用list()函数,将该循环对象转换成表。

3. filter() 函数

如果函数对象返回的是True,则该次的元素被储存于返回的表中。filter通过读入的函数来筛选数据。

1
2
3
4
5
6
7
def func(a):
if a > 100:
return True
else:
return False
print filter(func,[10,56,101,500])

同样,在Python 3.X中,filter返回的不是表,而是循环对象。

4. reduce() 函数

reduce可以累进地将函数作用于各个参数,前提是就是这个函数自身能接收两个参数。

1
print reduce((lambda x,y: x+y),[1,2,5,7,9])

相当于(((1+2)+5)+7)+9 = 24

  • reduce()函数在3.0里面不能直接用的,它被定义在了 functools 包里面,需要引入包
小明 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
0%