python学习笔记-(16)python中的函数对象

函数本质上也是一个对象,因此,既可以赋值给其他的对象名,也可作为参数传递

1. 函数作为参数(函数名就是一个对象)

def f1(a ,b):

return a + b

def f2(func, a , b):

    print func(a,b)

f2(f1,1,2)

说明:函数f2的参数func就是一个函数对象,调用f2的时候将f1函数对象作为参数传递给func

参考:既然函数名可以作为参数传递,那我们是不是考虑下用一种方法来定义函数呢,python中提供了lambda函数的用法,目的就是来定义函数的。举例如下:

f = lambda a, b: a + b

print f(1,2)

说明:利用lambda动态生成一个函数对象赋给f,函数参数为ab,返回值是a+b。这样生成函数对象是不是很方便呢!以上例子与下面的等价:

def f(a, b):

   return a + b

2. Python 中的map()函数(可以将函数对象依次作用到表的每一个元素)

先来看一个例子:

s = map((lambda i: i +3), [1,2,3])

print s

说明:在这里,map函数的第一个是一个lambda定义的函数对象,另一个是表。函数的含义就是将表中的每个元素加3之后,返回给表s。概括说map函数的作用是:通过读入的函数对象来对数据进行操作

3. Pythonfilter函数(可将作为参数的函数对象作用到元素上)

先来看一个例子:

def f(a):

if a > 10:

   return True

else:

    return False

s = filter(f,[5,12,23,10])

print s

说明:filter函数与map函数相似,第一个参数均为函数对象。Filter函数中,若函数对象返回的是True,则将当前的元素返回储存在表中。Filter函数是用来筛选数据的(元素个数可能减少),map函数是用来处理数据的(元素个数不变化)。

4. Python中的reduce函数

先来看一个例子:

s = reduce((lambda a, b: a +b), [1,2,3,4])

print s

说明:reduce函数同以上介绍的两个函数类似,第一个参数都是函数对象。这这里,reduce函数的第一个参数是lambda函数(用来接收ab,返回a+b),reduce将表中的前两个元素12传递给lambda函数,得到3,返回值3作为lambda函数的第一个参数,表中的下一个元素3作为lambda函数的第二个参数,进行下一次的lambda函数调用,得到6同理,下次得到返回值10,直到表中没有元素。上面例子等同与数学运算表达式:(( 1 + 2 ) + 3 ) + 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值