python 装饰器写法

# 如果装饰器没有参数,但是被装饰的函数需要参数时,接收被装饰函数的形参需要写在装饰器函数的形参位置
# def dec1(func):
#     def wrapper(*args):
#         print()
#         func(*args)
#     return wrapper
#
#
# @dec1
# def foo(name):
#     print(name)
#
# foo('name')


# 如果装饰器没有参数,被装饰的函数也没有参数

# def dec1(func):
#     def wrapper():
#         func()
#     return wrapper
#
# @dec1
# def foo():
#     print("foo")
#
# foo()

# 如果装饰器有参数,但是被装饰的函数没有参数

# def dec(x):
#
#     def wrapper(func):
#         print(x)
#         return func
#     return wrapper
#
# @dec('dec')
# def foo():
#     print("foo")
# foo()


# 如果装饰器和被装饰的函数都有参数

def dec1(x):
    def outdec(func):
        print(x)
        def inner_dec(*args):
            func(*args)
        return inner_dec
    return outdec

@dec1('dec1')
def foo(name):
    print(name)
foo('foo')

猜你喜欢

转载自www.cnblogs.com/liy36/p/12684865.html