看代码:
- def fun1(f):
- def fun2(*args):
- f(*args)
- return fun2
- @fun1
- def add(a,b):
- return a+b
复制代码这个代码意思我已经理解了
我只是不理解为什么要这么写. - 第一个不理解在fun1中,为什么函数内部还有一个函数,这样做有什么优势? 我要调用fun2可以直接就在需要的地方直接调用fun2了,这个写法我觉得有点莫名其妙. > 就像这段代码只为了得到一个函数,而后又去调用这个函数,我需要的时候直接调用sum函数不就好了..外面这个有什么必要?:
- 第二个不理解,@fun1这个写法有什么必要性吗?在我看来有点多余,反而让代码更加不易于阅读. > 求大神指点一下,我可是学Python这个玩意遇到了很多莫名其妙的问题,以后整理一下,还有很多很多不理解的地方..
- def lazy_sum(*args):
- def sum():
- ax = 0
- for n in args:
- ax = ax + n
- return ax
- return sum
- >>> f = lazy_sum(1, 3, 5, 7, 9)
- >>> f
- <function lazy_sum.<locals>.sum at 0x101c6ed90>
- >>> f()
- 25
复制代码
|