python三层装饰器-python开发学习day16 (三层装饰器;迭代器)
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 (三层装饰器;迭代器)相关推荐
- python搞笑语句_云计算开发学习笔记:Python3 import语句
原标题:云计算开发学习笔记:Python3 import语句 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: 当解释器遇到 import 语句,如果模块在当前的 ...
- python之股票小工具开发学习
一个简单粗糙的python写的显示股票k线和买卖点的小工具. 用了新浪的源,主要是学习python的编程. 本软件仅供学习交流,任何问题与本人无关,特此声明.侵删. 用到的知识点: 1.request ...
- 用python刷微信投票_Python——开发一个自动化微信投票器【附代码实例方法】
一个研究Python实践,最近研究一个投票的东东,主要是想测试利用Python实现刷微信投票. 本文纯粹为了记录一下 webdriver直接操作页面按钮的方法: #!/usr/bin/python # ...
- python微信投票代码_Python——开发一个自动化微信投票器【附代码实例方法】
一个研究Python实践,最近研究一个投票的东东,主要是想测试利用Python实现刷微信投票. 本文纯粹为了记录一下 webdriver直接操作页面按钮的方法: #!/usr/bin/python # ...
- python怎么做网站6_网站开发学习Python实现-Django学习-自学注意(6.1.3)
@ 1.配置文件相关 1.可以更改时间,地区相关(国际化) 2.BASE_DIR很重要,一个工程要有很好的移植性,必须做到里面的所有路径都为相对路径,这里BASE_DIR可以帮忙 3.DEBUG在发行 ...
- 居民身份证阅读器产品开发学习心得(再谈标准-软件-协议)
说到一些产品化的东西,之前就写过一篇关于标准化的文章,当然作为我本人而言,也是在不断的学习中,理解标准,则有利于未来转型走向产品以及市场相关的岗位,因为我不单单是要了解怎么做?(这是技术层面),我还需 ...
- html5开发一个音乐播放器,HTML5开发学习(1):使用aduio标签打造音乐播放器
关于html5的炒作已经有一段时间了,小弟亦是个跟风之人,对该新鲜事物也充满好奇和期待.本文为该系列(html5尝鲜)第一节,先以一个简单的demo开胃,希望能勾起各位同学对html5的兴趣和关注. ...
- mo管理器java_Android开发之通过包管理器获取安装应用信息
最近在自己写一个APP,有一个模块需要获取手机应用的一些信息.坑还是有,但都基本踩过了,自己把他实现了出来,实现方法还是很需要掌握的.底部弹出的对话框中四个选项的实现不多做说明,主要讲讲如何获取这些安 ...
- Lua开发学习4-普通循环和迭代器循环
说句实话,每当看到Lua代码,我都感觉是半个SQL代码,写起来还是感觉有点恐怖. while循环: 与C#的while循环类似,没有什么好说的: --------Lua的while循环 while(c ...
最新文章
- MOSES | 分子生成模型的基准平台
- hive python udf_python udf方法
- armbian nginx 部署博客_从零开始搭建服务器之更加优雅地部署项目
- 特征检测和跟踪经典理论
- 引入mysql+命名空间_C#连接MySQL操作详细教程
- uni-app 用户地理位置授权
- 计算机工程与应用3天外审,200629计算机工程与应用.pdf
- python查看继承方法(一分钟读懂)
- mysql doc插入数据_如何向MySQL数据库的表中录入数据.doc
- asp.net 性能优化细节
- bagging和时间序列预测_Simple RNN时间序列预测
- db9串口(db9串口定义及颜色)
- 问卷调查设计以及敏感性问题调查
- 计算机无法显示硬盘盘符,电脑硬盘不显示盘符怎么办 移动硬盘不显示盘符的原因...
- 天猫精灵 python_天猫精灵控制esp8266点led灯
- mysql并发ppt_高并发下MySQL数据库的优化.ppt
- Windows文件夹中文名称英文路径
- 电脑网易云音乐,网易云音乐的话题区到底有多魔性?
- 10分钟教你用Python获取百度地图各点的经纬度信息
- 中国武术职业联赛(WMA)
热门文章
- Jenkins学习四:Jenkins 邮件配置
- button/input链接方式全攻略 [转]
- CIO职业生涯如何进行三级跳
- Postgres中的物化节点之sort节点
- mysql decimal(10,2)对应java类型
- PHP 单例模式继承的实现方式
- 第08次:升级《陋习手记》完善主从UI
- 苹果系统里面 dictionary 如何加入中文词典
- python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...
- python读取txt文件并写入excel-Python读excel生成数据存入txt文件