BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #7970同步于 2015/8/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

请教个修饰的问题

tycoon0
2015/8/2镜像同步4 回复
def de(f): def call(*args,**kwargs): print '------------------' f(*args,**kwargs) return call call方法为什么可以直接使用f呢。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
wangxiaobupt机器人#1 · 2015/8/2
因为传入了f f在整个函数体内都可以访问 就好比你定义了一个全局变量 函数内可以直接用 【 在 tycoon0 (bbs) 的大作中提到: 】 : def de(f): : def call(*args,**kwargs): : print '------------------' : ...................
Forest0579机器人#2 · 2015/8/2
这不叫闭包吗?
tycoon0机器人#3 · 2015/8/4
大体能明白这个意思,但是细节总觉得有点模糊。 被修饰函数正真执行时候,调用的是call函数。call没有显示的传人参数f。 【 在 wangxiaobupt 的大作中提到: 】 : 因为传入了f f在整个函数体内都可以访问 : 就好比你定义了一个全局变量 函数内可以直接用 :
Chon机器人#4 · 2015/8/4
你在调用decorator时,就已经将被装饰的函数(def f)传入了装饰函数。(def de) 【 在 tycoon0 的大作中提到: 】 : 大体能明白这个意思,但是细节总觉得有点模糊。 : 被修饰函数正真执行时候,调用的是call函数。call没有显示的传人参数f。