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学习第十六天————三层装饰器与迭代器相关推荐

  1. Java学习 第十六天(泛型)

    Java学习 第十六天---泛型与集合 第一章 泛型 1.1 泛型概述 1.2 泛型类 1.3 泛型类练习---抽奖问题 1.4 泛型类的子类 1.5 泛型接口 1.6 重写泛型父类或泛型接口中方法的 ...

  2. 游戏策划学习第二十六天

    游戏策划学习第二十六天 5/26 看书笔记: 使命感的重要性: 维基百科的维护工作,一则不当的内容在维基百科会在平均1.7秒内被志愿者人工审核去除.表层上讲,这是因为他们有责任心,但是从他们的动机角度 ...

  3. python复制指定字符串_python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  4. pytorch学习笔记十二:优化器

    前言 机器学习中的五个步骤:数据 --> 模型 --> 损失函数 --> 优化器 --> 迭代训练,通过前向传播,得到模型的输出和真实标签之间的差异,也就是损失函数,有了损失函 ...

  5. HCIP(华为高级网络安全工程师)(第十六天)(三层架构/VLAN)

    目录 WLAN --- 无线局域网 无线网络天生的缺陷 1,无线信号的穿透性较差 2,无线网传输速率和信号强度有关,而且,他的传输速率指的双向速率 3,无线网络传输效率较低,速度较慢 企业的三层架构 ...

  6. python岗位任职要求-2020 python web开发就业要求锦集

    郑州 Python程序员 河南三融云合信息技术有限公司 6-8k·12薪 7个工作日内反馈 郑州 1个月前 本科及以上2年以上语言不限年龄不限 微信扫码分享 收藏 Python程序员 河南三融云合信息 ...

  7. Python 学习第十六天 html 前端内容总结

    一,css知识总结 1, css属性 css的属性包括以下内容 position:规定元素的定位类型 background:属性在一个声明中设置所有的背景属性 可以设置的如下属性:   (1)back ...

  8. python学习第十六天 --继承进阶篇

    这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展 ...

  9. python继承和多态心得_python学习第十五天 -面向对象之继承和多态

    大家都知道面向对象的三大特性:封装,继承,多态.封装特性在上一章节已经讲解过.这一章节主要讲解继承和多态. 继承:当定义一个类的时候,可以从现有的类进行继承.那么新定义的类可以称为子类,被继承的现有的 ...

最新文章

  1. PAT(甲级)2019年冬季考试 7-4 Cartesian Tree
  2. PingCode 全新子产品Access (目录服务)正式发布!
  3. Javadoc代码追踪记录
  4. 多租户数据库性能测试手册
  5. 蒙昧的意思_蒙昧的意思
  6. 动态规划--重拾我的“背包”
  7. Java 接口编程题
  8. 深入理解Java类加载器(2)
  9. web的case点总结
  10. 《Android游戏开发详解》一2.17 对象是独立的
  11. 从EXCEL中读出数据到数据库中
  12. BZOJ-3207 花神的嘲讽计划Ⅰ
  13. 10、Halcon图像条形码和二维码识别
  14. 哈夫曼树与哈夫曼编码
  15. word删除空格、修复“断行”
  16. 图解算法:KMP算法
  17. 云计算架构自己的理解
  18. 运维实操——日志分析系统ELK(中)之logstash采集数据、伪装rsyslog、多行过滤、grok切片
  19. Java实现Excel和word转pdf加水印,复制及可用
  20. linux下使用迅雷的完美办法(免费)

热门文章

  1. 用C++/CLI搭建C++和C#之间的桥梁(一)—— 简介
  2. [C#]面向对象设计
  3. Django 中间件
  4. Nadron的Sping配置文件学习
  5. Syntax error, type parameters are only available if source level is 1.5
  6. cocos2d 中判断CGPoint或者CGSize是否相等
  7. jQuery队列控制方法详解queue()/dequeue()/clearQueue()
  8. python怎么输入代码-教你如何将自己的脚本代码放到服务器上运行
  9. python.freelycode.com-优化Pandas代码执行速度入门指南
  10. python 能干嘛-python能干嘛