美文网首页
Python装饰器

Python装饰器

作者: popma | 来源:发表于2017-09-08 21:45 被阅读10次

    """
    author:Popma
    title: 装饰器
    """

    装饰器实际上就是一个函数

    2个特别之处:

    1.参数是一个函数

    2.返回值也是一个函数

    注意:1. 装饰器中定义的函数,要使用args,*kwargs传入,并且在这个函数里执行原始函数也要传入

    2. 需要使用functools中的wraps,避免改变传入装饰器的原始函数的name

    任务:在所有函数之前打印helloworld

    from functools import wraps
    def my_log(func):
    @wraps(func) #加上run.name就不显示为wapper,不更改原来函数的name了
    def wrapper(args,kwargs): #args:a,b, *kwargs:c=a(关键字参数)
    print('helloworld')
    func(
    args)
    return wrapper #返回的是一个函数体

    @my_log #run = my_log(run)
    def run():
    print('run')

    run.name : run函数的名称

    print('run.name:',run.name) # wapper

    @my_log #add = my_log(add)
    def add(a,b):
    print('{} + {} = {}'.format(a,b,a+b))

    run()

    add(1,2)

    相关文章

      网友评论

          本文标题:Python装饰器

          本文链接:https://www.haomeiwen.com/subject/dxinjxtx.html