python 装饰器 第五步(2):带有返回值得装饰器
#第五步:带有返回值的装饰器 把第四步复制过来 #用于扩展基本函数的函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(): #以下三步就是扩展之后的功能,于是我们把这三个哥们做成一个函数 #取名叫做neweat #扩展功能1 print('饭前要洗手') #调用基本函数 result1 = func() #扩展功能2 print('饭后溜一圈') #未来的eat函数没有返回值,所以在最后调用的时候返回值为None #为neweat添加返回值 return result1 #这里需要有返回值才能传给eat #添加返回值 #return 12 eat原来是函数,eat扩展之后还以函数的形式赋值给eat #所以return后面必须是扩展之后的函数 #5装饰器用于返回未来的eat函数的return #5而不是neweat(eat)自带的返回值 #5应该在neweat函数里面再加一个return return neweat #基本函数 @kuozhan#eat = kuozhan(eat) #eat就相当于以前的result,用来接收返回值 def eat(): print('吃饭') return '睡觉' #扩展之后的函数要重新赋值给基本函数!(但是此步骤还实现不了) #eat = kuozhan(eat) #eat就相当于以前的result,用来接收返回值 #print(eat)#第四步的目的是为了让打印eat函数的时候打印一个函数 #而不是像第二步和第三步打印回来的是None #调用函数 result = eat()#eat就是扩展的内部函数neweat函数,就是return返回的值 print('原函数的返回值为',result)