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)
  • 相关阅读:
    Vue.js 章6 v-model与表单
    Vue.js 简单购物车开发
    Vue.js实战 章五:内置指令
    Vue stage3
    Vue初接触 stage1
    前端代码的一些恶优化
    websocket介绍 以及 vue websocket使用案例
    回忆一下跨域
    如何使用Flexible这样的一库来完成H5页面的终端适配
    css 输入px单位的数值 直接转换为rem的插件
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8018665.html
Copyright © 2011-2022 走看看