zoukankan      html  css  js  c++  java
  • Python-装饰器

    装饰器:在不改变函数原代码的前提下扩展函数功能。

    1、被装饰的函数带固定参数:

    #!/usr/bin/env python
    #_*_ coding:utf-8 _*_  
    #encoding=utf-8
    #created by xkq
    #date: 2018
    def login(func):
        def wrapper(arg):#只接受一个参数
            print("login verify................")
            return func(arg)
        return wrapper
    
    @login#login(hello)->wrapper内存地址
    def hello(arg):
        print("hello   %s"%arg)
    
    
    hello('xkq')#login(hello)->wrapper('xkq')->print->hello('xkq')
    
    #-----------result————
    #login verify................
    #hello   xkq
    

    2、被装饰的函数参数不固定:

    #!/usr/bin/env python
    #_*_ coding:utf-8 _*_  
    #encoding=utf-8
    #created by xkq
    #date: 2018
    
    def login(func):
        def wrapper(*args,**kwagrs):#可接受任意多个参数
            print("login verify2................")
            return func(*args,**kwagrs)
        return wrapper
    
    @login
    def introduce(name,sex='man'):
        print("My name is %s, sex:%s"%(name,sex))
    
    @login
    def introduce2(name,age,sex='man'):
        print("My name is %s, age:%s, sex:%s"%(name,age,sex))
    
    introduce('xkq')
    introduce('qq','girl')
    introduce2('xkq',18)
    introduce2('qq',18,'girl')
    
    #---------result-----------
    #login verify2................
    #My name is xkq, sex:man
    #login verify2................
    #My name is qq, sex:girl
    #login verify2................
    #My name is xkq, age:18, sex:man
    #login verify2................
    #My name is qq, age:18, sex:girl
    

      

  • 相关阅读:
    Java Web入门二
    Java web入门之Http请求和响应
    Java中的heap和stack
    JSP和Servlet的区别和联系
    MVC设计思想
    Java中int和Integer的区别
    Java使用文件通道复制文件
    Maven项目的pom.xml配置文件格式初识
    面向对象编程思想
    1.struts 防止表单重复提交 2. 拦截器
  • 原文地址:https://www.cnblogs.com/qqran/p/8806560.html
Copyright © 2011-2022 走看看