9.python匿名函数(eval/filter/map/reduce) / 对象和闭包/装饰器
标签:4.1python
1.函数返回值还是函数
def machine(x):
return lambda y:…
a=machine
a(y)
- eval() 字符串当成代码执行
- filter (func,object)
map(func,object)—输出列表
reduce(func,object)
一 python匿名函数(eval/filter/map/reduce)
1.eval函数—将字符串转换为代码执行
例1:
例2:
2.filter函数—筛选出符合要求的值
(1) 语法: filter(func_函数,iter_变量)
(2)定义函数的方式def/lambda
- 输出数列中的所有奇数
- 输出数列中的所有偶数
3.map函数—使参数列表中的每一个元素都调用func函数
(1)语法: map(fanc_函数,sep_参数(列表/单个值))----以list类型输出
(2)推导式和map函数的表达式的对比
(3)两个参数示例
4.reduce函数—对参数序列中的元素进行整体计算
(1)语法: reduce (func_函数 ,sep_序列, inital_初始值)
(2)调用reduce函数
from functools import reduce
(3)示例:
二 函数对象和闭包
1. 对象
(1). 函数是对象,可以给函数增加属性
(2). 区分属性和作用
(3). 示例:
2. 闭包
(1). 概念
- 以下三个条件同时满足
- 在外函数内定义一个内函数
- 这个内函数要运用 外函数的变量
- 外函数的返回值是 内函数的名称
(2)示例:
year=3 为临时变量
#三 装饰器
1.概念
2.作用:在不改变原函数的前提下,增添函数的额外功能
3.固定结构
def deco(funcname):
def wrapper(*args,**kwargs):
额外的功能语句1
额外的功能语句2
…
funcname(funcname)
额外的功能语句n
额外的功能语句n+1
return wrapper
4.应用
场景:完成计录某函数运行的时间
(1)改变了原数据
(2)避免改变原数据,新增加一个计算时间的函数
(3)避免改编原数据及重复运行
(4)添加多个功能