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
    

      

  • 相关阅读:
    书单
    部署邮件系统
    解决配置文件注释太多的方法
    SHELL脚本自动备份
    如何在 Centos7 中修改yum源(三种方法)
    关于油猴子脚本的下载和使用方法
    问卷星全自动刷流量
    实验四、EIGRP 高级实验
    CentOS7修改主机名的三种方法
    IntelliJ IDEA 2018.3 x64的破解和安装
  • 原文地址:https://www.cnblogs.com/qqran/p/8806560.html
Copyright © 2011-2022 走看看