zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    119. Pascal's Triangle II
    118. Pascal's Triangle
    112. Path Sum
    111. Minimum Depth of Binary Tree
    110. Balanced Binary Tree
    108. Convert Sorted Array to Binary Search Tree
    88. Merge Sorted Array
    83. Remove Duplicates from Sorted List
    70. Climbing Stairs
    陌陌面试经历
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8018665.html
Copyright © 2011-2022 走看看