一 函数的有用信息

本函数的功能:绘图功能,实时接收数据并绘图.
:return: 绘图需要的数据,返回给前端某标签

def f1():
'''
本函数的功能:绘图功能,实时接收数据并绘图.
:return: 绘图需要的数据,返回给前端某标签
'''
print(f1.__doc__)
print(f1.__name__)
print(666) print(f1.__doc__) #获取函数的说明信息
print(f1.__name__) # 获取函数的名字
f1()


from functools import wraps
def wrapper(func):
@wraps(func)
def inner(*args,**kwargs):
'''执行函数前进行的操作'''
ret = func(*args,**kwargs)
'''执行函数后进行的操作'''
return ret
return inner @wrapper
def f1():
'''
本函数的功能:绘图功能,实时接收数据并绘图.
:return: 绘图需要的数据,返回给前端某标签
'''
print(f1.__doc__)
print(f1.__name__)
f1()  


def wrapper(func):
def inner(*args,**kwargs):
'''执行函数前进行的操作'''
ret = func(*args,**kwargs)
'''执行函数后进行的操作'''
return ret
return inner
@wrapper # f1 = wrapper(f1)
def f1(a,b,c,d): # 接收函数的时候,* 聚合.
print(a,b)
# print(args) # (1,2,3,4)
f1(1,2,2,3)
f1(*[1,2,3,4]) # 执行函数时,加个*打散

二 带参数的装饰器

import time
flag = False
def timmer_out(f):
def timmer(func):
def inner(*args,**kwargs):
'''执行函数前操作'''
if f:
start_time = time.time()
time.sleep(0.3)
ret = func(*args,**kwargs)
'''执行函数后操作'''
end_time = time.time()
print('执行效率%s'%(end_time - start_time))
return ret
else:
ret = func(*args,**kwargs)
return ret
return inner
return timmer @timmer_out(flag) # 1, timmer_out(flag) 返回 timmer --->
def f1(): # 2, @timmer 就是你认识的装饰器 f1 = timmer(f1)
print(666)
@timmer_out(flag) # f2 = timmer(f2)
def f2():
print(777)
f1()
f2()
 
def wrapper1(func):  # func = f
def inner1():
print('wrapper1 ,before func')
func()
print('wrapper1 ,after func')
return inner1 def wrapper2(func): # func = inner1
def inner2():
print('wrapper2 ,before func')
func()
print('wrapper2 ,after func')
return inner2 @wrapper2 # f = wrapper2(f) 里面的f == inner1 外面的f = inner2
@wrapper1 # f = wrapper1(f) 返回inner1 f = inner1
def f():
print('in f')
f() # inner2()


def wrapper1(func):  # func = f
def inner1():
print('wrapper1 ,before func')
func()
print('wrapper1 ,after func')
return inner1 def wrapper2(func): # func = inner1
def inner2():
print('wrapper2 ,before func')
func()
print('wrapper2 ,after func')
return inner2 @wrapper2 # f = wrapper2(f) 里面的f == inner1 外面的f = inner2
@wrapper1 # f = wrapper1(f) 返回inner1 f = inner1
def f():
print('in f')
f() # inner2()


最新文章

  1. Python微信-- 分享接口(分享到朋友圈、朋友、空间)
  2. 群里分享的react的收藏一下!今日周末,改了个表单验证然后无所事事了!
  3. StartUML反向(逆向)Java工程通过代码生成类图
  4. android--asp.net webservice 返回json
  5. bzoj 4237稻草人
  6. YII 创建后台模块
  7. 【Android 应用开发】 ActionBar 样式详解 -- 样式 主题 简介 Actionbar 的 icon logo 标题 菜单样式修改
  8. bison实例
  9. .NET反射
  10. docker入门(二)容器与镜像的理解
  11. cocos2D v3.4 在TileMap中开启高清显示
  12. Uncaught ReferenceError: jQuery is not defined
  13. Mac下安装最新版本的Graphviz
  14. react.css
  15. SPL之AccessArray
  16. 面向切面编程--AOP(转)
  17. CloseableHttpClient与 CloseableHttpResponse应用
  18. jQuery继承extend用法详解
  19. js urlencode
  20. SpringBoot入门(五)——自定义配置

热门文章

  1. JSTL的比较运算符有哪些,用例说说它们的作用
  2. vmware搭建lnmp环境配置域名
  3. IE快捷键
  4. shiro 密码的MD5盐值加密
  5. python3.6安装-windows
  6. java 递归 树形
  7. SimpleAdapter用法
  8. jackson支持LocalDate等java8时间
  9. 使用iptables禁止外网访问tomcat的8080端口
  10. hdu 5023 线段树+位运算