欢迎您光临本站
首页 > Python > 正文
李蓝猫头像
李蓝猫

2021-07-11

评论者
Python
14 0

很早时候就想学习这门语言,看了些许视频,颇有感慨

世界上没有最好的语言,语言是为了更好的完成各样的功能需求

选择适合的,才是最重要的


Python 普通装饰器

#装饰器
def decorator(func):
    def wrapper(*args, **kw):
        if args[0]:
            #代码块
            print('我是一个装饰器哈哈')
        return func(*args,**kw)
    return wrapper
 
@decorator
def demo1(param, param2, param3):
    print(param)
    print(param2)
    print(param3)
 
 
demo1(1,2,3)
 
输出
 
我是一个装饰器哈哈
1
2
3


Python 多参数装饰器

def out_record(id):
    def decorator(func):
        def wrapper(*args,**kw):
            print('我是装饰器参数'+str(id))
            return func(*args,**kw)
        return wrapper
    return decorator
 
@out_record(66)
def demo2(param, param2, param3):
    print(param)
    print(param2)
    print(param3)
 
demo2(1,2,3)
 
输出
 
我是装饰器参数66
1
2
3


多个参数的装饰器要比普通的装饰器外部需要多一层结构。


Python *args,**kw区别

*args 用来将参数打包成tuple(元组)给函数体调用

**kw 打包关键字参数成dict(字典)给函数体调用


*args样例

def demo3(*args):
    print(args)
demo3(1, 2, 3)
 
输出
(1, 2, 3)

**kw样例

def demo4(**kw):
    print(kw)
demo4(a=1, b=2, c=3)
 
输出
{'a': 1, 'b': 2, 'c': 3}

*args和**kw样例

def demo5(*args,**kw):
    print(args)
    print(kw)
demo5('arg1','arg2',a=1, b=2, c=3)
 
输出
('arg1', 'arg2')
{'a': 1, 'b': 2, 'c': 3}

注意点:参数arg、*args、**kw三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。


哎呀,写完了。

端午节,多想,多想提一壶酒  约几个老朋友  驾一叶小船儿,

迷失在故乡江南水乡里。小舟荡清波,过万水千山。

版权声明:本站所提供的文章、图片等内容均为用户发布或互联网整理而来,仅供学习参考,如有侵犯您的版权,请联系我们客服人员删除。

375

精彩推荐

暂无评论

文明用语