返回信息流def de(f):
def call(*args,**kwargs):
print '------------------'
f(*args,**kwargs)
return call
call方法为什么可以直接使用f呢。
这是一条镜像帖。来源:北邮人论坛 / python / #7970同步于 2015/8/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
请教个修饰的问题
tycoon0
2015/8/2镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
因为传入了f f在整个函数体内都可以访问
就好比你定义了一个全局变量 函数内可以直接用
【 在 tycoon0 (bbs) 的大作中提到: 】
: def de(f):
: def call(*args,**kwargs):
: print '------------------'
: ...................
大体能明白这个意思,但是细节总觉得有点模糊。
被修饰函数正真执行时候,调用的是call函数。call没有显示的传人参数f。
【 在 wangxiaobupt 的大作中提到: 】
: 因为传入了f f在整个函数体内都可以访问
: 就好比你定义了一个全局变量 函数内可以直接用
:
你在调用decorator时,就已经将被装饰的函数(def f)传入了装饰函数。(def de)
【 在 tycoon0 的大作中提到: 】
: 大体能明白这个意思,但是细节总觉得有点模糊。
: 被修饰函数正真执行时候,调用的是call函数。call没有显示的传人参数f。