Python-装饰器

2018-06-18 02:20:46来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

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

  

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:初学Python——文件操作

下一篇:神经网络(BP)算法Python实现及简单应用