# coding=utf-8
# 所有能把函数作为参数传递的语言都能使用装饰器
# 装饰器是特殊的函数,为已有函数增加功能,而不改变原代码块,如打日志,测试代码运行时间
# 装饰器是根据闭包,作用域的特性实现的
def print_hi(func):
def inner():
print('hi')
func()
return inner
@print_hi
def print_1():
print(1)
@print_hi
def print_2():
print(2)
print_1()
print_2()
# 运行结果:
# hi
# 1
# hi
# 2
带参数 :
# coding=utf-8
def print_hi(func):
def inner(*args):
print('hi')
func(*args)
return inner
@print_hi
def print_1(ar):
print(1, ar)
@print_hi
def print_2():
print(2)
print_1(55)
print_2()
# 运行结果:
# hi
# 1 55
# hi
# 2