Python-装饰器

TomTao626 于 2019-04-05 发布
🥰本站访客数 👀本文阅读量

装饰器

# 为已存在的功能添加额外的功能,只在初始化脚本的时候执行一次
#!/usr/bin/env python
def deco(func):
def wrapper(*args, **kwargs):
print("Wrap start")
func(*args, **kwargs)
func(*args, **kwargs)
print("Wrap end\n")
return wrapper

@deco
def foo(x):
    print("In foo():")
    print("I have a para: %s" % x)
@deco
def foo_dict(x,z='dict_para'):
    print("In foo_dict:")
    print("I have two para, %s and %s" % (x, z))

if __name__ == "__main__":
    # 装饰器 @deco  等价于 foo = deco(foo)
    foo('x')
    foo_dict('x', z='dict_para')
# 结果
# 
# Wrap start
# In foo():
# I have a para: x
# In foo():
# I have a para: x
# Wrap end
# 
# Wrap start
# In foo_dict:
# I have two para, x and dict_para
# In foo_dict:
# I have two para, x and dict_para
# Wrap end