美文网首页
Python入门与进阶(12-11)

Python入门与进阶(12-11)

作者: buaishengqi | 来源:发表于2018-05-17 12:15 被阅读2次

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

相关文章

网友评论

      本文标题:Python入门与进阶(12-11)

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