Python中迭代器、生成器与装饰器介绍

目录

一、迭代

二、迭代器

三、列表生成式

3.1、创建list方式

3.2、列表生成式的创建

四、生成器

4.1、定义

4.2、生成器创建

4.3、遍历生成树的元素

4.4、以函数形式实现生成器

五、装饰器


一、迭代

定义:

迭代就是一种循环遍历,类似在列表和元组上进行for循环这种类似操作。在python中,只要是可迭代的对象,无论是否存在下标,都是可以直接迭代的。

如下图所示:

 

二、迭代器

定义:

        迭代器是一个可以记住遍历的位置的对象,从第一个元素开始访问,直到所有的元素被访问完结束。其中在迭代器执行过程中,只会往前继续执行,不会回退,存在两个基础方法iter()和next()供调用。在python中,字符串,元组和对象均可以创建迭代器。

迭代器对象可以使用for循环进行遍历,也可以使用next()函数进行遍历,如下图所示:

 

下图可充分理解上述迭代器不可以回退,只能向前执行的原理了。

 

三、列表生成式

3.1、创建list方式

第一种为普通创建法:list1 = [a,b,c,d,e,f]

第二种为规律性整体赋值方法:list2 = list(range(2,41)) # 赋值一个列表,里面包含2-40

3.2、列表生成式的创建

List1 = [列表元素表达式 for 元素 in 迭代器]

 列表生成式在某些参考资料中也被称作列表推导式。

四、生成器

4.1、定义

        列表中的元素按照某种算法可进行循环推算,我们此时将这种一边循环一边计算,且在python中使用yield函数的机制称之为生成器(generator)。

        跟普通函数存在区别的地方是生成器是一个返回迭代器的函数,只能用于迭代操作,我们也可以简单理解为生成器就是一种特殊的迭代器。在调用生成器运行的过程中,每次遇到yield调用时函数会保存并暂停,仅仅返回yield的值,直到下次执行next方法时才会继续从保存位置继续执行。

4.2、生成器创建

        将列表生成式的[]换为(),便是生成器的基础格式。

 

        可以看到,生成器并不是创建数字列表,而是返回一个生成器,这个生成器每次计算出一个条目后就将其yield出来

4.3、遍历生成树的元素

        用for循环可以遍历生成器的元素

 

        用next遍历也可以

 

4.4、以函数形式实现生成器

        通过yield函数,对生成器对象调用设置中断信号,调用next函数时,每到一个yield则中断一次执行,并保存对应位置,等下次调用next函数时,会从保存位置继续执行,直到遇到下一个yield终止。

 

五、装饰器

        装饰器是一种在函数中调用其他函数方法的简化写法,替代将函数当做参数传参的方式。装饰器一共存在三个功能:接收一个函数作为参数;嵌套一个包装函数,该包装函数会接收原函数的相同参数并执行原函数内容;返回嵌套函数。

 应用装饰器后,步骤变更为:

 通过上述例子,我们可以得到装饰器书写基本格式(语法糖):

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值