明天的算法大佬 发表于 2021-5-22 18:07:28

请问这里函数没有被覆盖掉吗?

a_function_requiring_decoration = a_new_decorator(a_function_requiring_decoration)

这句话执行以后,怎么理解现在的a_function_requiring_decoration和原来的a_function_requiring_decoration函数之间的区别啊

原来的a_function_requiring_decoration被覆盖后,原函数还存在于内存之中可以被调用?

明天的算法大佬 发表于 2021-5-22 18:10:35

def a():
    print ('函数在这里')
   
a()

#output: 函数在这里

a = 1

a()

Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'int' object is not callable

这么执行的话,a会背覆盖啊

wp231957 发表于 2021-5-22 18:51:51

明天的算法大佬 发表于 2021-5-22 18:10
def a():
    print ('函数在这里')
   


有啥问题啊
你非要弄一样的名字

Twilight6 发表于 2021-5-22 18:54:25

明天的算法大佬 发表于 2021-5-22 18:10
def a():
    print ('函数在这里')
   



a 确实被覆盖了,但是你认真观察下你图中代码的函数返回值,发现也是个函数所以再次 () 调用是没问题的

也就是说第一次相当于你调用 a_function_requiring_decoration 函数

第二次调用的是 a_new_decorator 函数返回的内部函数 wrapTheFunction

kogawananari 发表于 2021-5-23 03:25:57

wp231957 发表于 2021-5-22 18:51
有啥问题啊
你非要弄一样的名字

名字一样才叫装饰器啊{:10_323:}
页: [1]
查看完整版本: 请问这里函数没有被覆盖掉吗?