zoukankan      html  css  js  c++  java
  • python 装饰器 第五步(1):带有参数的装饰器

    #第五步:带有参数的装饰器
    #用于扩展基本函数的函数
    def kuozhan(func):
        #内部函数(扩展之后的eat函数)
        #5由于调用的时候传了两个参数,未来的eat函数没有参数接收
        #5报错的时候显示neweat没有形参接收,但是给了两个实参
        #5所以需要添加两个形参接收shui,na
        def neweat(shui,na):#5调用的杨羊传到了shui,na
            #4以下三步就是扩展之后的功能,于是我们把这三个哥们做成一个函数
            #4取名叫做neweat
            #扩展功能1
            print('饭前要洗手')
            #调用基本函数
            func(shui,na)#5上面的shui,na传到了这里的shui,na
            #扩展功能2
            print('饭后溜一圈')
        #4这里需要有返回值才能传给eat
        #添加返回值func
        #4return 12  eat原来是函数,eat扩展之后还以函数的形式赋值给eat
        #4所以return后面必须是扩展之后的函数
        return neweat
    #基本函数
    @kuozhan#eat = kuozhan(eat) #4eat就相当于以前的result,用来接收返回值
    def eat(who,where):#5上面的func的shui,na传到了这里的who,where
        print(who,'',where,'吃饭')
        print('吃饭')
    #扩展之后的函数要重新赋值给基本函数!(但是此步骤还实现不了)
    #eat = kuozhan(eat) #4eat就相当于以前的result,用来接收返回值
    #print(eat)#4第四步的目的是为了让打印eat函数的时候打印一个函数
    #4而不是像第二步和第三步打印回来的是None
    #调用函数
    eat('李白','江南')#eat就是扩展的内部函数neweat函数,就是return返回的值
    eat('杜甫','江西')
  • 相关阅读:
    Java openrasp学习记录(一)
    Java ASM3学习(3)
    Java ASM3学习(2)
    Java Instrumentation插桩技术学习
    Java ASM3学习(1)
    从JDK源码学习HashSet和HashTable
    从JDK源码学习HashMap
    从JDK源码学习ArrayList
    Java XXE漏洞典型场景分析
    CVE-2020-7961 Liferay Portal 复现分析
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8018650.html
Copyright © 2011-2022 走看看