9.python匿名函数(eval/filter/map/reduce) / 对象和闭包/装饰器

9.python匿名函数(eval/filter/map/reduce) / 对象和闭包/装饰器

标签:4.1python


1.函数返回值还是函数
def machine(x):
return lambda y:…

a=machine
a(y)

  1. eval() 字符串当成代码执行
  2. filter (func,object)
    map(func,object)—输出列表
    reduce(func,object)

一 python匿名函数(eval/filter/map/reduce)

image_1cueauqapq5rnv81gk01bb110cu20.png-68.3kB

1.eval函数—将字符串转换为代码执行

例1:
image_1cueagtu65hk1jqnbfbdg41868p.png-37.9kB

例2:
image_1cueak1k77fp15onqf13pt16ms16.png-76kB

2.filter函数—筛选出符合要求的值

(1) 语法: filter(func_函数,iter_变量)
image_1cueb2jop1alq1h13jjf12glro73t.png-109kB

(2)定义函数的方式def/lambda

  • 输出数列中的所有奇数

image_1cueb4fdl16qk1lq61jme1cha12av5a.png-76.2kB
image_1cueb4trv1ecgfpi1k9li01ltp5n.png-15.6kB

  • 输出数列中的所有偶数

image_1cueb7g0npsoqqkckoqmn1g2d6k.png-46.3kB

3.map函数—使参数列表中的每一个元素都调用func函数

(1)语法: map(fanc_函数,sep_参数(列表/单个值))----以list类型输出
image_1cueebkdo20j1oeo7881psht5o71.png-132.8kB

(2)推导式和map函数的表达式的对比
image_1cueekbmf16ct1sf7hc4ea513667e.png-74.7kB

(3)两个参数示例
image_1cuef8vtm12t7bbgj4be58n9ucb.png-95.5kB
image_1cuef21g61f19ukos8kc2ijio9r.png-31.8kB

4.reduce函数—对参数序列中的元素进行整体计算

(1)语法: reduce (func_函数 ,sep_序列, inital_初始值)

image_1cuefepi31nqkifiter16ji1ab79.png-157.1kB

(2)调用reduce函数

from functools import reduce

(3)示例:
image_1cuefn3gl1qfv1g1vmv01rp31clu1m.png-157.6kB
image_1cuefq9bo1ml61g626s31mah1l6d23.png-73.5kB


二 函数对象和闭包

1. 对象

(1). 函数是对象,可以给函数增加属性

(2). 区分属性和作用
image_1cuefuudti5a1o0b189516c816pj30.png-12.7kB

(3). 示例:
image_1cueg146i110dlj6a17i7koih3d.png-37.1kB

2. 闭包

(1). 概念

  • 以下三个条件同时满足
  • 在外函数内定义一个内函数
  • 这个内函数要运用 外函数的变量
  • 外函数的返回值是 内函数的名称

image_1cueg3ou519na1qdq1fi51nvi1o613q.png-95.2kB

(2)示例:

year=3 为临时变量
image_1cuegk6f11jhof0s1uph1b0413a047.png-70.4kB


#三 装饰器

1.概念
image_1cuegnnce18to7vcr3j51itqh4k.png-215.7kB

2.作用:在不改变原函数的前提下,增添函数的额外功能

3.固定结构
def deco(funcname):
def wrapper(*args,**kwargs):
额外的功能语句1
额外的功能语句2

funcname(funcname)
额外的功能语句n
额外的功能语句n+1

return wrapper

4.应用

场景:完成计录某函数运行的时间
image_1cueh140a1fd282t1k4f1m713725h.png-8.8kB

(1)改变了原数据
image_1cueh3o2bl5qqeui5jj0av2b7e.png-23.7kB

(2)避免改变原数据,新增加一个计算时间的函数
image_1cueh69ai1svf13ehm79lsg62m8r.png-39.1kB

(3)避免改编原数据及重复运行
image_1cuehlhbmvoi16g52mgi71qgp98.png-98.6kB
image_1cuehm2431svebi6i9g17qqrpr9l.png-25.3kB

(4)添加多个功能
image_1cuehu9oh1e53p9e11nu147p1j4eb2.png-70.1kB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值