day12 三大神器

本文深入探讨了Python中的三大神器——迭代器、生成器和装饰器。迭代器允许无限制地遍历容器,但无法通过len()获取元素数量;生成器则以更高效的方式动态生成数据,它存储的是生成数据的算法而非实际数据。装饰器则是一种用于给已有函数添加额外功能的工具,它可以改变函数的行为或增加日志等。通过实例展示了如何使用这三种强大的工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值