Python学习笔记7:函数对象及函数对象作參数

一、lambda函数

比如:

fun1 = lambda x,y: x + y
print fun1(3,4)

输出:7

lambda生成一个函数对象。该函数參数为x,y,返回值为x+y。函数对象赋给func。

func的调用与正常函数无异。

上面的代码等价于:

def fun2(x, y):
    return x + y

二、函数作为參数

函数能够作为一个对象。进行參数传递。

比如:

fun = lambda x ,y : x+y
def runFun(fun, a, b):
    print fun(a,b)
runFun(fun, 3, 5)

输出:8

又如:

runFun((lambda x,y: x**2 + y), 6, 9)

三、map()函数

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

map()的功能是将函数对象依次作用于表的每个元素。并将结果返回。

如:

ret1 = map((lambda x:x+1),[1,2,3])
print ret1

ret2 = map((lambda x,y:x+y),[1,2,3],[10,100,1000])
print ret2

输出:

[2, 3, 4]
[11, 102, 1003]

三、filter()函数

filter函数的第一个參数也是一个函数对象。它也是将作为參数的函数对象作用于多个元素。

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

如:

def fun3(a):
    if a > 100:
        return True
    else:
        return False

print filter(fun3, [10,20,100,110])

输出:[110]

四、reduce()函数

reduce函数的第一个參数也是函数,但有一个要求,就是这个函数自身能接收两个參数。

比如:

print reduce((lambda x,y:x+y),[1,2,3,4,5])

输出:15

reduce将表中的前两个元素(1和2)传递给lambda函数,得到3。

该返回值(3)将作为lambda函数的第一个參数,而表中的下一个元素(3)作为lambda函数的第二个參数,进行下一次的对lambda函数的调用,得到6。

依次调用lambda函数。每次lambda函数的第一个參数是上一次运算结果,而第二个參数为表中的下一个元素,直到表中没有剩余元素。

上面样例。相当于(((1+2)+3)+4)+5

注意:在3.x版本号中map,filter,reduce这三个函数都稍有不同

时间: 2024-10-20 14:17:22

Python学习笔记7:函数对象及函数对象作參数的相关文章

springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需求 表现层实现 list绑定 需求 表现层实现 map绑定 本文主要介绍注解开发的集合类型參数绑定,包含数组绑定,list绑定以及map绑定 数组绑定 需求 商品批量删除,用户在页面选择多个商品.批量删除. 表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形參,方法形參使用数组接收页面请求的多个商

Python学习笔记__4.3章 匿名函数(简洁函数)

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 关键字lambda表示匿名函数 list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) # 列表生成式中的 lambda 实际就是 def f(x): return x * x 但匿名函数有个限制,就是只能有一个表达式. 匿名函数不用写return,返回值就是该表达式的结果 匿名函数因为函数没有名字,不必担心函数名冲突. 此外,匿名函数也是一个函数对象,可以把匿名函数赋值给一个变量

Python学习笔记__2.2章 定义函数

# 这是学习廖雪峰老师python教程的学习笔记 1.定义函数 定义一个函数需要有函数名.参数.函数体.函数体中最好还有 传入的参数判断 1.1.函数创建 定义一个函数用def,数据类型检查用isinstance.例子如下: def my_abs(x): if not isinstance(x, (int, float)):    # 判断传入的参数,是否是 ××× 或 浮点形 raise TypeError('bad operand type')  #  抛出错误 if x >= 0: ret

Python学习笔记__4.2章 返回函数

# 这是学习廖雪峰老师python教程的学习笔记 1.函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. # 累加函数 def external(*args): def internal(): ax = 0 for n in args: ax = ax + n return ax return internal  # external的返回值是internal # 调用external() f = external(1, 3, 5, 7, 9)   #这里的 f是一

python学习笔记4:高阶函数,装饰器,生成器,迭代器

一.高级函数1.把一个函数名当作实参传给另一个函数2.返回值包含函数名>>> def bar():... print ("in the bar")... >>> def foo(func):... res=func()... return res... >>> foo(bar)in the bar 二.嵌套函数在函数中定义另一个函数 三.装饰器装饰器本质上是函数,作用是装饰其他函数,就是为其他函数添加附加功能.原则1:不能修改被装饰

python学习笔记第五节(函数,名称空间,作用域)

python2中 默认存为unicode需要再字符串前加u 循环打印每一行 循环打印整个文件内容方式二下面这种同一时间取一行 先定义后执行 函数定义的时候,只检测语法错误,不执行 函数返回值,默认是元组模式return 只能返回一次 形参与实参 形参就是变量名实参就是值 打破顺序限制 经常变化的值用位置形参,值通常不变的用默认参数.默认参数通常定义成不可变类型.默认参数只在定义时被赋值一次. 可变长参数就是* 关键字参数(关键字参数指的是实参当中指定y=2,z=3等等) *等同于位置参数 函数内

Python学习笔记(十)匿名函数

摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431843456408652233b88b424613aa8ec2fe032fd85a000 本文章完全用于个人复习使用,侵删: 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(

Python学习笔记(九)返回函数

摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431835236741e42daf5af6514f1a8917b8aaadff31bf000 本文章完全用来个人复习学习,侵删: 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数:

Python 学习笔记(五)常用函数

Python内建函数 四舍五入: round() 绝对值: abs() 1 >>> round(1.543,2) 保留两位小数,四舍五入为1.54 2 1.54 3 >>> round(1.546,2) 保留两位小数,四舍五入为1.55 4 1.55 5 >>> round(-1.536,2) 6 -1.54 7 >>> abs(5) 8 5 9 >>> abs(-5) 绝对值为5 10 5 math 模块 1 &g

python学习笔记-day2-dict,tuple, string常用函数

上一篇说了Python的list的基本方法,这里接着说说dict,tuple. 一.tuple,元组 1.元组的定义 或: 2.使用切片访问元组里的元素 详细的可以参考list的切片用法 3.元组是不可修改,是不可变变量 4.访问元组里的元素 二.字典的使用 1.字典定义 2.字典的查询操作 3.添加字典的元素 有两种方法: (1) 使用如: infos['phone'] = 12345678977 #增加一个key (2) 使用 infos.setdefault('小金库', '2000w')