对于python装饰器结合递归的进一步理解
2020-12-22 05:28
阅读:510
-
装饰器memoize实际上对于函数nsum()只执行了第一次加载的时候的预处理,然后就是nsum = memoizer。
-
装饰器的实质是通过
functools.wraps(fn)
获得函数的名字,便于nsum.__name__ ==nsum
,并将参数传至memoize(*args)
,也就是*args
。 -
装饰器通过memory(),和外面的装饰器获得的函数,在内部对函数进行功能改造。在上例子中,通过
known[args] = fn(*args)
先执行fn函数,即上例子中nsum(10),然后就进入递归,t同时调用memoizer()和nsum()函数10次,且先memoizer再nsum,而且每次都在``known[args] = fn(*args)`进入递归,也就是每次nsum的执行,故,对于为什么打印konwn中的元素是集中在一起的解释就知道了,到了n == 0,才跳出递归,故,known的第一个元素是0,然后就循环往复。 -
最后,其实,递归函数执行的是fn(*args),即nsum()。
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:对于python装饰器结合递归的进一步理解
文章链接:http://soscw.com/index.php/essay/37500.html
文章标题:对于python装饰器结合递归的进一步理解
文章链接:http://soscw.com/index.php/essay/37500.html
评论
亲,登录后才可以留言!