python学习之老男孩python全栈第九期_day012知识点总结
# def wrapper(f):# def inner(*args,**kwargs):# print('在被装饰的函数执行之前做的事')# res = f(*args,**kwargs)# print('在被装饰的函数执行之后做的事')# return res# return inner# @wrapper # holiday = wrapper(holiday) 这时holiday == inner# def holiday(day):# print('全体放假%s天'%day)# return '好开心'# ret = holiday(3)# print(ret) # def outer(*args,**kwargs):# print(args,kwargs)# print(*args)# def inner(*args):# print('inner:', args)# inner(*args)# outer(1,2,3,4,a = 1,b = 2) # def wahaha():# '''# 一个打印娃哈哈的函数# :return:# '''# print('娃哈哈')# print(wahaha.__name__) # 查看字符串格式的函数名# print(wahaha.__doc__) # document (查看函数的注释) # from functools import wraps# def wrapper(f): # f = holiday# @wraps(f) # 加上这句话之后, holiday 就是holiday 不是inner了# def inner(*args,**kwargs):# print('在被装饰的函数执行之前做的事')# res = f(*args,**kwargs)# print('在被装饰的函数执行之后做的事')# return res# return inner# @wrapper # holiday = wrapper(holiday) 这时holiday == inner ,这时还没加上面那句话# def holiday(day):# print('全体放假%s天'%day)# return '好开心'# ret = holiday(3)# print(holiday.__name__) # 输出inner,加了上面那句话之后输出 holiday # ---------------------------------------------------------------------------------------------------- # # 带参数的装饰器 # 500个函数## import time# FLAG = True# def timmer_out(flag):# '''# 计算机函数执行时间# :param flag:flag为真时,运行这个函数,为假时不运行# :return:# '''# def timmer(func):# def inner(*args,**kwargs):# if FLAG:# start_time = time.time()# ret = func(*args,**kwargs)# end_time = time.time()# print(end_time - start_time)# return ret# else:# ret = func(*args, **kwargs)# return ret# return inner# return timmer# @timmer_out(FLAG) # 先调用timmer_out(FLAG),返回的结果为timmer, 加了@ 之后就等于 @timmer,就等于wahaha = timmer(wahaha)# # 上个式子等价于:# # timmer = timmer_out(FLAG)# #@timmer## def wahaha():# time.sleep(0.1)# print('娃哈哈')# @timmer_out(FLAG)# def erguotou():# time.sleep(0.1)# print('二锅头')# wahaha()# erguotou() # 多个装饰器装饰一个函数 ## def wrapper1(func): # func --> f# def inner1():# print('wrapper1,before func')# func() # f# print('wrapper1,after func')# return inner1## def wrapper2(func): # func --> inner1# def inner2():# print('wrapper2, before func')# func() # 其实是 inner1()# print('wrapper2, after func')# return inner2## @wrapper2 # f = wrapper2(f) --> wrapper2(inner1), 返回的inner2,故 f == inner2# @wrapper1 # f = wrapper1(f) 返回的inner1,故 f == inner1## # 先找最近的函数,wrapper2没找到, wrapper1先找的f(),然后wrapper2又找的# def f():# print('in f')## f() # --> inner2() # ---------------------------------------------------------------------------------- ## 三个 def wrapper1(func): def inner1(): print('wrapper1,before func') ret = func() print('wrapper1,after func') return ret return inner1 def wrapper2(func): def inner2(): print('wrapper2, before func') ret = func() print('wrapper2, after func') return ret return inner2 def wrapper3(func): def inner3(): print('wrapper3, before func') ret = func() print('wrapper3, after func') return ret return inner3 @wrapper3@wrapper2@wrapper1def f(): print('in f') return '哈哈哈'print(f()) # 记录用户的登录情况 and 计算这个函数的执行时间
转载于:https://www.cnblogs.com/BlameKidd/p/9292042.html
python学习之老男孩python全栈第九期_day012知识点总结相关推荐
- python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块...
一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...
- python学习之老男孩python全栈第九期_day024知识点总结——单继承、多继承
一. 单继承 class A:pass # 父类,也叫基类,也叫超类 class B:pass # 父类,也叫基类,也叫超类 class AB_son(A,B):pass # 子类,也叫派生类 cla ...
- 老男孩python第14期_python学习之老男孩python全栈第九期_day014知识点总结
# 迭代器和生成器 # 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的 # 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in d ...
- python学习之老男孩python全栈第九期_day004知识点总结
1. 列表list: 列表转换成字符串: s = 'kidd' s1 = '_'.join(s) # 用_连接 字符串转换成列表: split() range(头,尾,步长): [0,1,2,3,4, ...
- 老男孩python第九期_python学习之老男孩python全栈第九期_day004知识点总结
1. 列表list: 列表转换成字符串: s = 'kidd' s1 = '_'.join(s) # 用_连接 字符串转换成列表: split() range(头,尾,步长):[0,1,2,3,4,5 ...
- python全栈第21期_2019 Python最新基础入门(全栈21期)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2019 Python最新基础入门(全栈21期) 01s21开班仪式 开班入学必听Alex大神讲行业前景1 .mp4 开班入学必听Alex大神讲行业前景2 ...
- python学习之老男孩python全栈第九期_day002作业
1. 判断下列逻辑语句的True,False. (1) 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 T ...
- python学习之老男孩python全栈第九期_day017作业
1. 三级菜单的代码看一遍 2. 斐波那契数列用递归实现:问第n个斐波那契数是多少 1 def fbnq(n): 2 if n == 0 or n == 1: 3 return 1 4 else: 5 ...
- python学习之老男孩python全栈第九期_数据库day004 -- 作业
https://www.cnblogs.com/YD2018/p/9451809.html 11. 查询学过"001"并且也学过编号"002"课程的同学的学号. ...
- python学习之老男孩python全栈第九期_day009之初始函数初窥
'''# len# 计算字符串的长度# s = '金老板小护士'# len(s)# 不能用 len 怎么办#low一点的方法# count = 0# for i in s:# count += 1# ...
最新文章
- mysql 主从复制 position_mysql 主从复制原理及步骤。
- PHP 发邮件《转》
- 采集gpu_GPU温度的采集
- 《Java安全编码标准》一导读
- iptables快速记忆总结
- matlab晶格图,科学网-MATLAB软件绘制一维双原子晶格的格波色散曲线-李金磊的博文...
- 多人远程同时使用谷歌浏览器
- 笔记本电脑已连接WIFI密码查看方法
- C++11新特性——总结
- 往事如烟 - 辉哥的财务自由
- 【小程序“600002“】现象:小程序测试版能正常的进行页面跳转,正式版不能进行页面跳转
- linux网络之怪现象一--接网线启动网络不通,不接网线启动再插线网络通
- u盘 linux 装系统 suse,从u盘启动安装opensuse 11.4 livecd
- 人工智能之父马文・明斯基
- java时钟代码_一个经典的JAVA APPLET时钟程序(一)
- CMake中find_package的学习
- 查看SQL查询数据所话费时间
- 2018年财富中国500强:东方明珠蝉联登榜 领跑文化传媒业
- 当前你所在的服务器更新维护尚未完成,我们将于01月16日09:00-13:00对所有服务器进行更...
- MATLAB里出现一大段橙色的字,出现这样的警告问题在哪呢
热门文章
- 微软打碎了周鸿祎的如意算盘
- 微信小程序微商城(七):动态API实现商品分类
- TP 打开 显示错误信息
- TeaVM辛辛苦苦编译出的wasm,浏览器中不能跑
- 原因及解决办法:error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file
- 管理:权力是用来完成责任的
- C++中map的遍历的代码
- 管理感悟:承认错误,善于总结
- 量子纠缠可能是真实存在
- HTML弹窗上下一步,JS实现从网页顶部掉下弹出层效果的方法