Python 教程装饰模式
有几个需求: 1.函数需要有/无参数 2.装饰函数需要有无参数 3.函数还是原来的调用方法 4.函数属性还是原来的结果 5.装饰新的功能
这里就有一个疑惑了,装饰的新功能貌似只能用于原执行之前。我能不能让他在执行后附加执行一些东西呢?
另外那一章节后面有些朋友公布了他们的答案,但觉得好像不能解决我的疑惑,想请老师或者其他大神帮我解惑。
1.原函数后面执行 别人有三种方法,第一种像我代码那样写,但是实际上并不能后补代码
另一种直接执行了,不作参数返回原函数,这种虽然执行效果看是对的,但是已经丧失了原来的函数特性
第三种return func_decorater_before,func,func_decorater_after; 貌似看起来也有一样效果,但是当函数赋值到变量的时候不同,实际上也不对。
import functools def decorater_param_f(*args_o, **kw_o): def decorater_f(func): @functools.wraps(func) def decorater_inner(*args, **kw): print('decorate %s() ↑:' % func.__name__) fr = func(*args, **kw) print('decorate %s() ↓:' % func.__name__) return fr return decorater_inner return decorater_f @decorater_param_f('x+y=') def func(x,y): return x+y print("\n") f = func print(f(1,2)) # decorate func() ↑: # decorate func() ↓: # 3 print("\n函数名:") print(func.__name__) # 函数名: # func print("\n") print(func(1,2)) # decorate func() ↑: # decorate func() ↓: # 3
Sign in to make a reply
_Again_
Python 教程装饰模式
有几个需求: 1.函数需要有/无参数 2.装饰函数需要有无参数 3.函数还是原来的调用方法 4.函数属性还是原来的结果 5.装饰新的功能
这里就有一个疑惑了,装饰的新功能貌似只能用于原执行之前。我能不能让他在执行后附加执行一些东西呢?
另外那一章节后面有些朋友公布了他们的答案,但觉得好像不能解决我的疑惑,想请老师或者其他大神帮我解惑。
1.原函数后面执行 别人有三种方法,第一种像我代码那样写,但是实际上并不能后补代码
另一种直接执行了,不作参数返回原函数,这种虽然执行效果看是对的,但是已经丧失了原来的函数特性
第三种return func_decorater_before,func,func_decorater_after; 貌似看起来也有一样效果,但是当函数赋值到变量的时候不同,实际上也不对。