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
    

      

  • 相关阅读:
    全站HTTPS底层实现原理
    python十个实战项目
    CP30,DBCP数据源配置
    FileUtils
    我的HttpClients工具
    Hibernate如何一个类映射两个表
    SSH2中实例化不了Action的一个原因
    二进制实现权限的分配管理
    myclips常用快捷键
    Hibernate 的*.hbm.xml文件的填写技巧
  • 原文地址:https://www.cnblogs.com/qqran/p/8806560.html
Copyright © 2011-2022 走看看