python三层装饰器-2020 python学习第十六天————三层装饰器与迭代器
1.2 三层装饰器
defoutter2(mode):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="file") #index=outter(index) ==>index=wrapper
defindex(x, y):print('index===>', x, y)
index(1, 2) #wrapper(1,2)
2.1 迭代器
迭代是一个重复的过程,每一次重复都是基于上一次的结果而来的
注意:迭代不是单纯的重复
迭代器是一种迭代取值的工具,这种取值方式是通用,不依赖于索引
调用__iter__方法得到的返回值就是对应的迭代器
2.2 可迭代的对象
有__iter__内置方法的对象都是可迭代的对象,str、list、tuple、dict、set、文件对象
ps:可迭代对象.__iter__()返回的是迭代器对象
2.3 迭代器对象
1、有__next__方法
2、有__iter__方法,调用迭代器的__iter__方法得到的就是迭代器自己
ps:迭代器对象之所内置__iter__方法是为了符合for循环第一个工作步骤
2.4 for循环的工作步骤
for循环的工作原理=》迭代器循环
d = {"k1": 111, "k2": 222, "k3": 3333}for k ind:print(k)
1、调用in后的对象的__iter__方法,得到对应的迭代器
2、k=next(迭代器),然后执行一次循环
3、循环往复,直到把迭代器的值取干净了,抛出异常,for循环会自动捕捉异常,结束循环
2.5 总结迭代器
2.5.1 优点
1、不依赖索引,是一种通用的取值方式
2、节省内存
2.5.2 缺点
1、不能取指定位置的值
2、不能预估值的个数,无法统计长度
python三层装饰器-2020 python学习第十六天————三层装饰器与迭代器相关推荐
- Java学习 第十六天(泛型)
Java学习 第十六天---泛型与集合 第一章 泛型 1.1 泛型概述 1.2 泛型类 1.3 泛型类练习---抽奖问题 1.4 泛型类的子类 1.5 泛型接口 1.6 重写泛型父类或泛型接口中方法的 ...
- 游戏策划学习第二十六天
游戏策划学习第二十六天 5/26 看书笔记: 使命感的重要性: 维基百科的维护工作,一则不当的内容在维基百科会在平均1.7秒内被志愿者人工审核去除.表层上讲,这是因为他们有责任心,但是从他们的动机角度 ...
- python复制指定字符串_python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- pytorch学习笔记十二:优化器
前言 机器学习中的五个步骤:数据 --> 模型 --> 损失函数 --> 优化器 --> 迭代训练,通过前向传播,得到模型的输出和真实标签之间的差异,也就是损失函数,有了损失函 ...
- HCIP(华为高级网络安全工程师)(第十六天)(三层架构/VLAN)
目录 WLAN --- 无线局域网 无线网络天生的缺陷 1,无线信号的穿透性较差 2,无线网传输速率和信号强度有关,而且,他的传输速率指的双向速率 3,无线网络传输效率较低,速度较慢 企业的三层架构 ...
- python岗位任职要求-2020 python web开发就业要求锦集
郑州 Python程序员 河南三融云合信息技术有限公司 6-8k·12薪 7个工作日内反馈 郑州 1个月前 本科及以上2年以上语言不限年龄不限 微信扫码分享 收藏 Python程序员 河南三融云合信息 ...
- Python 学习第十六天 html 前端内容总结
一,css知识总结 1, css属性 css的属性包括以下内容 position:规定元素的定位类型 background:属性在一个声明中设置所有的背景属性 可以设置的如下属性: (1)back ...
- python学习第十六天 --继承进阶篇
这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展 ...
- python继承和多态心得_python学习第十五天 -面向对象之继承和多态
大家都知道面向对象的三大特性:封装,继承,多态.封装特性在上一章节已经讲解过.这一章节主要讲解继承和多态. 继承:当定义一个类的时候,可以从现有的类进行继承.那么新定义的类可以称为子类,被继承的现有的 ...
最新文章
- PAT(甲级)2019年冬季考试 7-4 Cartesian Tree
- PingCode 全新子产品Access (目录服务)正式发布!
- Javadoc代码追踪记录
- 多租户数据库性能测试手册
- 蒙昧的意思_蒙昧的意思
- 动态规划--重拾我的“背包”
- Java 接口编程题
- 深入理解Java类加载器(2)
- web的case点总结
- 《Android游戏开发详解》一2.17 对象是独立的
- 从EXCEL中读出数据到数据库中
- BZOJ-3207 花神的嘲讽计划Ⅰ
- 10、Halcon图像条形码和二维码识别
- 哈夫曼树与哈夫曼编码
- word删除空格、修复“断行”
- 图解算法:KMP算法
- 云计算架构自己的理解
- 运维实操——日志分析系统ELK(中)之logstash采集数据、伪装rsyslog、多行过滤、grok切片
- Java实现Excel和word转pdf加水印,复制及可用
- linux下使用迅雷的完美办法(免费)
热门文章
- 用C++/CLI搭建C++和C#之间的桥梁(一)—— 简介
- [C#]面向对象设计
- Django 中间件
- Nadron的Sping配置文件学习
- Syntax error, type parameters are only available if source level is 1.5
- cocos2d 中判断CGPoint或者CGSize是否相等
- jQuery队列控制方法详解queue()/dequeue()/clearQueue()
- python怎么输入代码-教你如何将自己的脚本代码放到服务器上运行
- python.freelycode.com-优化Pandas代码执行速度入门指南
- python 能干嘛-python能干嘛