2020-06-22                      目录:

一、嵌套三层的装饰器

二、迭代器

2.1 迭代器是什么

2.2 __iter__方法及其调用

2.3 可迭代的对象

2.4 迭代器对象

2.5 for循环的原理

2,6 总结迭代器

一、嵌套三层的装饰器

通过闭包的方式为函数体传参,可以包一层,也可以包两层

@后面跟的必须是一个函数的内存地址,@函数名(参数)的形式也是可以的,前提是 “@函数名(参数)”的返回值必须是一个函数的内存地址

示例:

defoutter2(mode): # mode在outter和wrapper后面传参都不行,只能再包一层函数传参defoutter(func):def wrapper(*args, **kwargs):

inp_name=input("please input your name:").strip()

inp_pwd=input("please input your password:").strip()if mode == "file":print('认证来源=====>file')

with open('user.db', mode='rt', encoding='utf-8') as f:for line inf:

name_db,pwd_db=line.strip(' ').split(':')if inp_name == name_db and inp_pwd ==pwd_db:print('login successful')

res= func(*args, **kwargs)returnreselse:print("账号或密码错误")elif mode == "ldap":print('认证来源=====>ldap')elif mode == "mysql":print('认证来源=====>mysql')else:print("未知的认证来源")returnwrapperreturnoutter

@outter2(mode="mysql") #index = outter(index) ==> index = wrapper

defindex(x, y):print('index===>', x, y)

index(1, 2) #wrapper(1,2)

二、迭代器

2.1 迭代器是什么

迭代是一个重复的过程,但并不是单纯的重复,它的每一次重复都是基于上一次的结果而来的

迭代器是一种迭代取值的工具,这种取值方式是通用的,不依赖于索引和key(如:集合和句柄,没有索引和key也可以迭代取值)

2.2 __iter__方法及其调用

python为str、list、tuple、dict、set、f文件对象 都内置了__iter__方法__iter__调用得到的返回值就是对应的迭代器l1= [1,2,3]

res= l1.__iter__() 就等同于 res =iter(l1)print(res) #>>>

a = res.__next__() #a=next(res) a=1

b = res.__next__() #b=next(res) b=2

c = res.__next__() #c=next(res) c=3

d = res.__next__() #StopIteration 报错,l1只有三个值

2.3 可迭代的对象

可迭代的对象:有__iter__内置方法的对象都是可迭代的对象,str、list、tuple、dict、set、文件对象

2.4 迭代器对象

可迭代对象.__iter__()得到的返回值就是迭代器对象

特点:

① 有__next__方法

② 有__iter__方法,调用得到的就是迭代器自身

f = open(r'user.db', mode='rt', encoding='utf-8')

line=f.__next__() # 读第一行

print(line)

line=f.__next__() # 读第二行

print(line)

f.close()

2.5 for循环的原理

for循环的本质就是迭代器的循环

d= {"k1": 111, "k2": 222, "k3": 3333}for k ind:print(k)

工作步骤:① 调用in后面对象的__iter__方法,得到对应的迭代器

② k=next(迭代器),然后执行一次循环

③ 循环往复,直到把迭代器的值取完,抛出异常,for循环会将自动捕捉异常,然后结束循环

2.6 总结迭代器

优点:① 不依赖索引,是通用的取值方式

② 节省内存,读取文件时,每次只读一行

缺点:① 不能取指定位置的值(没有索引和key)

② 不能预估值的个数,无法统计长度

python三层装饰器-python开发学习day16 (三层装饰器;迭代器)相关推荐

  1. python搞笑语句_云计算开发学习笔记:Python3 import语句

    原标题:云计算开发学习笔记:Python3 import语句 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: 当解释器遇到 import 语句,如果模块在当前的 ...

  2. python之股票小工具开发学习

    一个简单粗糙的python写的显示股票k线和买卖点的小工具. 用了新浪的源,主要是学习python的编程. 本软件仅供学习交流,任何问题与本人无关,特此声明.侵删. 用到的知识点: 1.request ...

  3. 用python刷微信投票_Python——开发一个自动化微信投票器【附代码实例方法】

    一个研究Python实践,最近研究一个投票的东东,主要是想测试利用Python实现刷微信投票. 本文纯粹为了记录一下 webdriver直接操作页面按钮的方法: #!/usr/bin/python # ...

  4. python微信投票代码_Python——开发一个自动化微信投票器【附代码实例方法】

    一个研究Python实践,最近研究一个投票的东东,主要是想测试利用Python实现刷微信投票. 本文纯粹为了记录一下 webdriver直接操作页面按钮的方法: #!/usr/bin/python # ...

  5. python怎么做网站6_网站开发学习Python实现-Django学习-自学注意(6.1.3)

    @ 1.配置文件相关 1.可以更改时间,地区相关(国际化) 2.BASE_DIR很重要,一个工程要有很好的移植性,必须做到里面的所有路径都为相对路径,这里BASE_DIR可以帮忙 3.DEBUG在发行 ...

  6. 居民身份证阅读器产品开发学习心得(再谈标准-软件-协议)

    说到一些产品化的东西,之前就写过一篇关于标准化的文章,当然作为我本人而言,也是在不断的学习中,理解标准,则有利于未来转型走向产品以及市场相关的岗位,因为我不单单是要了解怎么做?(这是技术层面),我还需 ...

  7. html5开发一个音乐播放器,HTML5开发学习(1):使用aduio标签打造音乐播放器

    关于html5的炒作已经有一段时间了,小弟亦是个跟风之人,对该新鲜事物也充满好奇和期待.本文为该系列(html5尝鲜)第一节,先以一个简单的demo开胃,希望能勾起各位同学对html5的兴趣和关注. ...

  8. mo管理器java_Android开发之通过包管理器获取安装应用信息

    最近在自己写一个APP,有一个模块需要获取手机应用的一些信息.坑还是有,但都基本踩过了,自己把他实现了出来,实现方法还是很需要掌握的.底部弹出的对话框中四个选项的实现不多做说明,主要讲讲如何获取这些安 ...

  9. Lua开发学习4-普通循环和迭代器循环

    说句实话,每当看到Lua代码,我都感觉是半个SQL代码,写起来还是感觉有点恐怖. while循环: 与C#的while循环类似,没有什么好说的: --------Lua的while循环 while(c ...

最新文章

  1. MOSES | 分子生成模型的基准平台
  2. hive python udf_python udf方法
  3. armbian nginx 部署博客_从零开始搭建服务器之更加优雅地部署项目
  4. 特征检测和跟踪经典理论
  5. 引入mysql+命名空间_C#连接MySQL操作详细教程
  6. uni-app 用户地理位置授权
  7. 计算机工程与应用3天外审,200629计算机工程与应用.pdf
  8. python查看继承方法(一分钟读懂)
  9. mysql doc插入数据_如何向MySQL数据库的表中录入数据.doc
  10. asp.net 性能优化细节
  11. bagging和时间序列预测_Simple RNN时间序列预测
  12. db9串口(db9串口定义及颜色)
  13. 问卷调查设计以及敏感性问题调查
  14. 计算机无法显示硬盘盘符,电脑硬盘不显示盘符怎么办 移动硬盘不显示盘符的原因...
  15. 天猫精灵 python_天猫精灵控制esp8266点led灯
  16. mysql并发ppt_高并发下MySQL数据库的优化.ppt
  17. Windows文件夹中文名称英文路径
  18. 电脑网易云音乐,网易云音乐的话题区到底有多魔性?
  19. 10分钟教你用Python获取百度地图各点的经纬度信息
  20. 中国武术职业联赛(WMA)

热门文章

  1. Jenkins学习四:Jenkins 邮件配置
  2. button/input链接方式全攻略 [转]
  3. CIO职业生涯如何进行三级跳
  4. Postgres中的物化节点之sort节点
  5. mysql decimal(10,2)对应java类型
  6. PHP 单例模式继承的实现方式
  7. 第08次:升级《陋习手记》完善主从UI
  8. 苹果系统里面 dictionary 如何加入中文词典
  9. python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...
  10. python读取txt文件并写入excel-Python读excel生成数据存入txt文件