12-11 装饰器 四
# 12-10 装饰器 二
import time
def decorator(func):#定义装饰器的外部函数
def wrapper():#装饰器内部定义一个函数(被封装的)
print(time.time())
func()
return wrapper
def f1():
print('this is a function')
f = decorator(f1)
f()
# 打印结果如图1
# 注意与上一节对比,发现没有什么大的不同
import time
def decorator(func):#定义装饰器的外部函数
def wrapper():#装饰器内部定义一个函数(被封装的)
print(time.time())
func()
return wrapper
@decorator
def f1():
print('this is a function')
# f = decorator(f1)加上@语法糖以后,这部分可以省略了
f1()#直接调用f1 ,这个就是装饰器的优势!!
# 打印结果如图1
# 12-11 装饰器 四
import time
def decorator(func):#定义装饰器的外部函数
def wrapper():#装饰器内部定义一个函数(被封装的)
print(time.time())
func()
return wrapper
@decorator
def f1():#此时的f1没有传入任何参数,那么如果有参数传入装饰器需要做哪些改变?
print('this is a function')
# f = decorator(f1)加上@语法糖以后,这部分可以省略了
f1()#直接调用f1 ,这个就是装饰器的优势!!
import time
def decorator(func):#定义装饰器的外部函数
def wrapper(func_name):#装饰器内部定义一个函数(被封装的)
print(time.time())
func(func_name)
return wrapper
@decorator
def f1(func_name):#此时的f1没有传入任何参数,那么如果有参数传入装饰器需要做哪些改变?
print('this is a function named' + func_name)
# f = decorator(f1)加上@语法糖以后,这部分可以省略了
f1('test func')#直接调用f1 ,这个就是装饰器的优势!!
# 打印结果如图2
# 传入多个参数的情况
import time
def decorator(func):#定义装饰器的外部函数
def wrapper(*args):#可变参数
print(time.time())
func(*args)
return wrapper
@decorator
def f1(func_name):#此时的f1没有传入任何参数,那么如果有参数传入装饰器需要做哪些改变?
print('this is a function named' + func_name)
@decorator
def f2(func_name1,func_name2):#此时的f1没有传入任何参数,那么如果有参数传入装饰器需要做哪些改变?
print('this is a function named' + func_name1)
print('this is a function named' + func_name2)
f1('test func')
f2('test func1','test func2')
# f = decorator(f1)加上@语法糖以后,这部分可以省略了
f1('test func')#直接调用f1 ,这个就是装饰器的优势!!
# 打印结果如图3
3.jpg
网友评论