51Testing软件测试论坛
标题:
Python返回函数不理解之处
[打印本页]
作者:
测试积点老人
时间:
2019-1-7 09:39
标题:
Python返回函数不理解之处
看代码:
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
复制代码
作者:
vingk
时间:
2019-1-7 11:48
你有没有想过在fun2里加入一些其他额外的功能呢,比如打印函数名,记录运行开始时间和结束时间等与f函数不相关的功能,这样在你有很多函数的时候就不用在每个方法里去加入这些内容了,如果你不需要,那就直接写f然后调用就行
作者:
海海豚
时间:
2019-1-8 09:29
https://blog.csdn.net/cv_you/article/details/70880405
参考下这个
作者:
abcsell
时间:
2019-1-8 10:27
应该是为了解决变量传输的问题
作者:
qqq911
时间:
2019-1-8 10:50
代码规范
作者:
jingzizx
时间:
2019-1-8 11:18
看你的真实需要,代码规范问题
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2