博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础复习 11
阅读量:6732 次
发布时间:2019-06-25

本文共 4586 字,大约阅读时间需要 15 分钟。

1 # def wrapper(func):  2 #     def inner(*args,**kwargs):  3 #         print('再被装饰之前要做的事')  4 #         ret = func(*args,**kwargs)  5 #         print('再被装饰之后要做的事')  6 #         return ret  7 #     return inner  8 #  9 # @wrapper 10 # def holiday(day): 11 #     print('全体放假%s天'%day) 12 #     return '好开心!' 13  14 # ret = holiday(8) 15 # print(ret) 16  17  18 # 练习题 19 # 1,编写装饰器,为多个函数加上认证的功能(用户的账号和密码来 20 # 源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码 21 # FLAG = False 22 # def login(func): 23 #     def inner(*args,**kwargs): 24 #         global FLAG 25 #         '''登录程序''' 26 #         if FLAG: 27 #             ret = func(*args, **kwargs) 28 #             return ret 29 #         else: 30 #             username = input("username:") 31 #             password = input("password:") 32 #             if username == "zhizhu" and password == "123": 33 #                 FLAG = True 34 #                 ret = func(*args,**kwargs) 35 #                 return ret 36 #             else: 37 #                 print("登录失败,请重新输入!") 38 #     return inner 39 # 40 # @login 41 # def shoplist_add(): 42 #     print('增加一件物品') 43 # 44 # @login 45 # def shoplist_del(): 46 #     print('删除一件物品') 47 # 48 # shoplist_add() 49 # shoplist_del() 50  51  52  53 # 2.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数 54 # 都将 被调用的函数名称写入文件 55  56 # def log(func): 57 #     def inner(*args,**kwargs): 58 #         with open('log','a',encoding='utf-8') as f: 59 #             f.write(func.__name__+'\n') 60 #         ret = func(*args,**kwargs) 61 #         return ret 62 #     return inner 63 # 64 # @log 65 # def shoplist_add(): 66 #     print("增加一件物品") 67 # 68 # @log 69 # def shoplist_del(): 70 #     print("删除一件物品") 71 # 72 # shoplist_add() 73 # shoplist_del() 74  75  76 # 如果你不需要用装饰器,如下实现 77 # 在原有函数下再写一个函数,def timmer_out(flag): 进行判断 78 # 如果是Ture,执行装饰器功能,False,不执行 79 # import time 80 # FLAGE = True 81 # def timmer_out(flag): 82 #     def timmer(func): 83 #         def inner(*args,**kwargs): 84 #             if flag: 85 #                 start = time.time() 86 #                 ret = func(*args,**kwargs) 87 #                 end = time.time() 88 #                 print(end-start) 89 #                 return ret 90 #             else: 91 #                 ret = func(*args, **kwargs) 92 #                 return ret 93 #         return inner 94 #     return timmer 95 # 96 # @timmer_out(FLAGE)  # 先执行timmer_out 返回timmer 传给了@timmer_out,也就是说现在的@timmer_out == @timmer 97 # def wahaha(): 98 #     time.sleep(0.1) 99 #     print('蜘蛛蜘蛛')100 #101 # @timmer_out(FLAGE)102 # def niulanshan():103 #     time.sleep(0.1)104 #     print('老虎老虎')105 # wahaha()106 # niulanshan()107 108 109 # 多个装饰器装饰同一个函数110 """111 1,先执行@wrapper2 func()之前的112 2,在执行@wrapper1 func()之前的113 3,在执行func()这个函数114 4,在执行@wrapper1 func()之后的115 5,在执行@wrapper2 func()之后的116 117 执行完的结果118 wrapper2, before func119 wrapper1, before func120 in f121 wrapper1, after func122 wrapper2, arter func123 """124 # def wrapper1(func):125 #     def inner1():126 #         print('wrapper1, before func')127 #         func()128 #         print('wrapper1, after func')129 #     return inner1130 #131 # def wrapper2(func):132 #     def inner2():133 #         print('wrapper2, before func')134 #         func()135 #         print('wrapper2, arter func')136 #     return inner2137 #138 # @wrapper2139 # @wrapper1140 #141 # def f():142 #     print('in f')143 #144 # f()145 146 147 148 # 迭代器149 # 迭代器的概念150 # 只要含有 __iter__方法的都是可迭代的 --可迭代协议151 # 迭代器的协议 -- 内部含有__next__和 __iter__方法的就是迭代器152 153 # 可以被for循环的都是可迭代的154 # 可迭代的内部都有__iter__方法155 # 只要是迭代器 一定可迭代156 # 可迭代的.__iter__()方法就可以得到一个迭代器157 # 迭代器中的__next__()方法可以一个一个的获取值158 159 # from collections import Iterable160 # from collections import Iterator161 # print(isinstance([],Iterator))     # isinstance 判断是否是可迭代对象162 # print(isinstance([],Iterable))163 164 # 迭代器的好处:165       # 从容器类型中一个一个的取值,会把所有的值都取到166       # 节省内存空间167          # 迭代器并不会在内存中再占用一大块内存168          # 而是随着循环 每次生成一个169          # 每次next 每次给我一个170 171 172 # 生成器173 # 生成器函数 --- 本质上就是我们自己写的函数174 175 # def generator():176 #     print(1)177 #     return 'a'178 #179 # ret = generator()180 # print(ret)181 182 # 只要含有yield关键字的函数  都是生成器函数183 # yield只能写在函数内部。184 # yield 与 return 不能共用185 # def generator():186 #     print(1)187 #     yield 'a'188 189 # ret = generator()190 # print(ret)191 # print(ret.__next__())192 193 194 # def generator():195 #     print(1)196 #     yield 'a'197 #     print(2)198 #     yield 'b'199 # g = generator()200 # ret = g.__next__()201 # print(ret)202 203 # 注:本文是根据老男孩课程内容整理而成的,本文仅供个人笔记使用,如果有侵犯,请联系我,我立即撤销。

 

转载于:https://www.cnblogs.com/pioneerLee/p/10212365.html

你可能感兴趣的文章
我的操作系统复习——进程(上)
查看>>
html 复制 有时不显示样式
查看>>
怎么写测试策略
查看>>
2018-2019-1 20165231 《信息安全系统设计基础》第四周学习总结
查看>>
jar包的一天
查看>>
python random模块
查看>>
发布使用了stage3D功能的Air for Android项目到手机上
查看>>
15. 利用ajax jquery 上传文件
查看>>
4.类与结构
查看>>
Java Foreach语句使用总结
查看>>
asp.net html中table数据转换为数组传给后台
查看>>
POJ 1584 A Round Peg in a Ground Hole
查看>>
PAT (Advanced Level) 1115. Counting Nodes in a BST (30)
查看>>
[记录]map容器的删除
查看>>
使用innobackupex基于从库搭建级联从库及一两从
查看>>
jQuery的61种选择器
查看>>
UGUI——重写Image类实现进度条
查看>>
ASP.NET:性能与缓存 转帖 张逸老师(http://www.cnblogs.com/wayfarer/articles/48347.aspx)...
查看>>
安装jdk1.8.0_11环境脚本
查看>>
php代码加密
查看>>