python函数式编程:匿名函数,装饰器,偏函数
来源:互联网 发布:淘宝打折活动怎么设置 编辑:程序博客网 时间:2024/05/16 05:23
一 匿名函数:
尽管python的语法已经很简洁,但是定义函数的过程还是相对繁琐,当我们在调用函数的过程中,python为我们提供了可以节省定义函数时间的方法,让我们可以不用显示的调用函数,那就是匿名函数,匿名函数使用lambda关键字:
L= []L = list(map(lambda x: x * x,[1,2,3,4,5,6,7,8]))print(L)[1, 4, 9, 16, 25, 36, 49,64]这里面定义了一个将后面列表的值平方的匿名函数:lambda x : x * x 就相当于def f(x): return x * x
匿名函数有一个限制 ,就是没有return,但匿名函数的表达式就是个返回值:
>>> f = lambda x : x * x>>> f<function <lambda> at 0x0000020A82D62E18>>>> f(5)25
二 装饰器:
我的理解是 当在频繁的使用某函数的时候,我们想在不改变原函数的基础上,给该函数附加一些功能或者是说明,就用到了装饰器,先说一下装饰器的原理: 无参函数:
>>> def mul_fn(a,b):... return a * b...>>> def say_name(fn):... def temp():... print('附加功能语句')... return fn... return temp...>>> a = say_name(mul_fn)>>> print(a()(2,3))附加功能语句6
有参函数:
>>> def add_fn(a,b):... return a + b...>>> def say_name(fn):... def temp(*args,**kw):... print('附加功能语句')... return fn(*args,**kw)... return temp...>>> add_fn = say_name(add_fn)>>> add_fn(2,3)附加功能语句5
再说一下 装饰器的 基本语法:
>>> def say_name(fn):... def temp(*args,**kw):... print('call %s ():'%fn.__name__)... return fn(*args,**kw)... return temp...>>> @say_name... def add_fn(a,b):... return a + b...>>> add_fn(2,3)call add_fn (): 5>>>
三 偏函数:
先不说偏函数的定义,我们慢慢往下看,当然这里的偏函数不是指的数学上 的偏函数(而且数学上的偏函数我早就已经还给教我数学的体育老师了)
我们先自己定义一个函数:
>>> def han(x,odd = True):... a = 1 if odd else 2... return [i for i in range(a,x, 2)]...>>> L = han(10)>>> L[1, 3, 5, 7, 9]>>>该函数传入数值 ,还有一个默认参数 odd 默认值是True,当odd = True的时候,生成一个奇数列表
当我们想生成一个偶数列表的时候,我们可以这样做:
>>> han(10,odd = False)[2, 4, 6, 8]>>>
假如我们想频繁的使用这个函数的时候,一遍又一遍的修改是很麻烦的,于是乎我们可以这样做:
>>> def han2(x,odd = False):... return han(x,odd)...>>> han2(10)[2, 4, 6, 8]>>>
这样做离所谓的偏函数不远了
python中有一个模块叫做functools,该模块提供了很多使用的功能,其中就有偏函数(partial function)的功能。
偏函数让我们不用自己定义函数:
>>> import functools>>> han2 = functools.partial(han,odd = False)>>> han2(10)[2, 4, 6, 8]>>>
我们做个小测试:
>>> print(type(han),type(han2))<class 'function'> <class 'functools.partial'>>>>从输出结果我们可以看出,han类型是一个函数,han2类型不是一个函数而是functools.partial(偏函数)类型。但我们平常使用的时候可以把han2当作成一个函数使用。
看过三国的应该都知道偏将军一职位,官制中,系将军的辅佐,与裨将军两者都为杂号将军;偏函数,其实是函数的辅佐。
偏函数的作用就是:将所作用的函数作为partial()函数的第一个参数,原函数的各个参数依次作为partial()函数的后续参数,原函数有关键字参数的一定要带上关键字,没有的话,按原有参数顺序进行补充。偏函数的第二个部分(可变参数),按原有函数的参数顺序(必须是有序)进行补充,参数将作用在原函数上。
后续我还会 在写篇对装饰器 和偏函数理解略深度的博客。
阅读全文
0 0
- python函数式编程:匿名函数,装饰器,偏函数
- Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数
- python函数式编程之返回函数、匿名函数、装饰器、偏函数学习
- Python函数式编程(高阶函数 <map/reduce filter sorted> 返回函数 匿名函数 装饰器 偏函数)
- python 学习笔记---匿名函数 装饰器 偏函数
- python函数式编程(三)装饰器、偏函数
- python基础—(高阶,匿名,偏)函数 | 装饰器
- Python 函数式编程(高阶函数、把函数作为参数、map()函数、reduce()函数、filter()函数、自定义排序函数、函数返回函数、闭包、匿名函数、装饰器decorator)
- python学习笔记,返回函数,匿名函数,装饰器
- Python学习3--返回函数 、匿名函数、装饰器、偏函数
- python 装饰器的函数式编程
- python函数式编程中的装饰器
- python函数式编程之装饰器
- Python装饰器与函数式编程
- python_装饰器/匿名函数
- python函数式编程(二)返回函数、匿名函数
- Python学习(九)——匿名函数、装饰器、偏函数
- python学习笔记 匿名函数和装饰器
- 解决Ubuntu桌面循环登录问题
- 中国AI制药领域最大融资,AccutarBio获得IDG和依图科技1500万美元投资
- 机器之心线上分享:用于序列生成的推敲网络
- 使用gulp编译 sass和less
- 从修正Adam到理解泛化:概览2017年深度学习优化算法的最新研究进展
- python函数式编程:匿名函数,装饰器,偏函数
- 如何用深度学习处理结构化数据?
- angluar2学习(一)
- Java基础——数据显示处理 DecimalFormat+BigDecimal
- Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测
- 滴滴副总裁:用人工智能技术保障出行平台信息安全
- NIPS 2017首日亮点全解读:四大获奖论文结果揭晓
- Area(Pick)
- 伯克利强化学习新研究:机器人只用几分钟随机数据就能学会轨迹跟踪