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
    

      

  • 相关阅读:
    全球市场
    去做《波士堂》的现场观众?
    JavaScript测试工具
    Opera 10 正式版发布
    [ZZ]亚马逊购物的用户体验分析
    中国电子商务十二年调查报告
    推荐——李黎的《轻公司》
    [ZZ]国外互联网发展趋势
    [ZZ]走出Google(下)
    空中英语教室
  • 原文地址:https://www.cnblogs.com/qqran/p/8806560.html
Copyright © 2011-2022 走看看