import functools #导入functools模块
def now(func): #定义装饰器函数
@functools.wraps(func) #返回被装饰函数的name属性
def w(*a,**kw): #定义包装器函数
print('begin call') #在调用被装饰函数前打印
func(*a,**kw) #运行被装饰的函数
print('end call') #在调用被装饰函数后打印
return w
#现在唯一没想通的是,
使它既支持:
@log def f(): pass
又支持:
@log('execute') def f(): pass
欢迎来一起讨论
补充一句 定义函数的时候输出用print打印不要用return return不会输出任何结果 不知道为什么
return 作用是返回,除非返回的是有print的函数才会有结果
print只负责操作打印输出,没有返回值。(注意,Python的所有的操作函数都是“过程”,像VB 的 Sub。)
return print(.......) == return None == return
1、’用return的时候,你在打印前必须要用一个变量进行接收。
2、装饰器带参数,必须在原有装饰器外面在定义一个接收参数的函数。
Sign in to make a reply
真诚的刘海柱
import functools #导入functools模块
def now(func): #定义装饰器函数
@functools.wraps(func) #返回被装饰函数的name属性
def w(*a,**kw): #定义包装器函数
print('begin call') #在调用被装饰函数前打印
func(*a,**kw) #运行被装饰的函数
print('end call') #在调用被装饰函数后打印
return w
#现在唯一没想通的是,
使它既支持:
又支持:
欢迎来一起讨论