day12 三大神器

day12 三大神器


一,迭代器(iter)

含义:

​ 容器形数据类型

创建迭代器方法:

  1. 将其他数据转换成迭代器
  2. 生成迭代器

特点:

  1. 打印的时候不能查看元素
  2. 无法获取元素个数------len( )函数不能在迭代器市使用
  3. 获取元素时必须从迭代器中取出,取出后元素从迭代器中消失,且无法再添加

迭代器的操作:

注意:迭代器无增删改操作

查:

  1. 获取单个元素
next(迭代器)--------获取迭代器最前面那个元素
示例:
A=iter("abc")
print(A)
#返回值是a
  1. 遍历
for 变量 in 迭代器

二,生成器

含义:

​ 容器型数据类型,但是生成器中存储的并不是数据,而是产生数据的算法,

本质:

​ 从获取数据的角度来看还是迭代器

创建生成器:

​ 调用一个带有yield关键字的函数就可以得到一个生成器

注意:

​ 如果被调用的函数中有yield,那么调用函数的时候不是不会执行函数体,也不会获取函数返回值,而是产生一个生成器

控制生成器元素的个数和值:

​ 执行创建生成器函数体时,会遇到几次yield,对应的生成器创建几个数据,每次遇到yield,其后面的值就是创建的数据

生成器创建数据的原理:

​ 每次获取生成器数据的时候就执行函数体,当遇到yield 就停下来

三,装饰器

含义:

​ 给已经定义好的函数添加功能的工具

​ 装饰器=实参高阶函数+返回值高阶函数+糖语法

本质:

​ 是一个函数,既是实参高阶函数,又是返回值高阶函数

无参装饰器:

def 函数名(所需装饰的函数):
    def 添加完功能的新函数(*args,**kwargs):
        调用原函数
        添加新功能
    rturn 添加完功能的新函数  
    
def 装饰器名(old_f):
    def new_f(*args,**kwargs):
        result=old_f(*args,**kwargs)
        新增功能
        return result
    return new_f

示例:

写一个装饰器,在函数调用之前打印"皮皮鲁喜欢你"

def add_tag(old_f):
    def new_f(*args,**kwargs):
        print("皮皮鲁喜欢你")
        result=old_f(*args,**kwargs)
        return result
    return new_f
@add_tag
def hello():
    print("hello,world")

写一个装饰器在函数调用结束后打印”------end-------

def add_tag(old_f):
    def new_f(*args,**kwargs):
        print("---end---")
        result=old_f(*args,**kwargs)
        return result
    return new_f
@add_tag
def hello():
    print("hello,world")

写一个装饰器将函数返回值乘以100

def add_tag(old_f):
    def new_f(*args,**kwargs):
        result=old_f(*args,**kwargs)
        if type(result) in (int,float):
            return result*100
    return new_f
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值