作者回复: print(add())一般会输出add函数的返回内容,但因为我们的add函数是被tips函数装饰的,所以函数nei()返回值为口时,print函数会打印None,那么我们试着将程序改成这样,猜猜会有什么输出呢?
def tips(func):
def nei(a,b):
print('start')
func(a,b)
print('stop')
return 'I am here!!!!'
return nei
@tips
def add(a,b):
print(a+b)
print(add(4,5))
作者回复: o( ̄▽ ̄)d
作者回复: 返回值为None,而sum() 函数很简单,问题应该出现在 tips装饰器里面, 装饰器里最后获得的返回值是 nei, 而nei 和 func(a,b) 之间没有任何关联,所以 nei 没办法获得 func() 的返回值。考虑改为:
def tips(func):
def nei(a,b):
start_time = time.time()
result = func(a,b)
end_time=time.time()
print('运行时间: %s' %(end_time-start_time))
return result
return nei
将结果返回给 nei , 就组成了 sum() 返回值给 func(), func() 给 nei() , nei()给tips()返回,最终使用nei函数名,返回给 调用sum()函数
作者回复: Typescript 不懂,不敢乱比较;python 是有类和类成员装饰器的,比如经典的@property 特性装饰器
作者回复: 没太理解你的问题,把你的想法用代码实现出来?
我的理解是这样的:
def 外():
def 内1(内参1):
def 内2():
return 内参1
return 内2
return 内1
按顺序调用的啊
作者回复: 代码实现的需求很少,不用考虑过度封装。
作者回复: 说一说具体哪里不理解呢?通过搜索引擎或者技术网站找到了什么答案?对答案有哪些质疑?通过自己的程序得出哪些不一样的结论?
作者回复: 要根据需求看实现代码的价值,不能以复杂度看待
作者回复: 为了照顾初学编程及没有计算机基础的同学简化了大量的代码,建议了解一下flask web框架的 “路由”功能,应该会有所帮助。
参考网站:
http://docs.jinkan.org/docs/flask/quickstart.html
作者回复: 再详细一点描述你的问题?