作者回复: 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))
作者回复: func(a,b,c(x)) 这行对func第三个参数进行了函数方式的调用 c() 但是传参数用了下面这行 one = parabola(int(input('请输入a=')),int(input('请输入b=')),int(input('请输入c='))) 这行会传一个整数int(input('请输入c=')) , 例如我给参数传递10 ,就会让 func(a,b,c(x)) 变成 func(a,b,10(x)), 那么10(x)肯定不能执行,所以看到了你所得到的异常。 另外程序逻辑要再拆分一下,目前逻辑不清晰,不清楚要实现什么功能
作者回复: 问题出现在这两行: func(a,b) return('') --- func(a,b) 执行之后是add(3,5) 的返回结果8 , 但是 nei(a,b) 函数对 func()函数并没有进行返回值的接收, 而是使用了return('') 返回 “空”, 所以最后看不到结果,改为 return func(a,b) # return('') 就可以了
作者回复: 要根据需求看实现代码的价值,不能以复杂度看待
作者回复: 为了照顾初学编程及没有计算机基础的同学简化了大量的代码,建议了解一下flask web框架的 “路由”功能,应该会有所帮助。 参考网站: http://docs.jinkan.org/docs/flask/quickstart.html
作者回复: 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 按顺序调用的啊
作者回复: 代码实现的需求很少,不用考虑过度封装。