Python3 装饰器

闭包:

将组成函数的语句和这些语句的执行环节打包到一起所得到的对象。

当使用嵌套函数(函数中定义函数)时,闭包将捕获内部函数执行所需的整个环境。

此外,嵌套函数可以使用被嵌套函数中的任何变量,就行普通函数中可以引用全局变量一样。

e.g.

x=14

def f():

    x=3

    def b():

        return x
    return b

y=f()
print(y())

 

输出:

3

 

装饰器

对函数参数或返回值等进行加工处理,生成一个功能增强版的一个函数。

装饰器的参数是一个函数或者类,专门针对类或者函数进行加工处理。

使用@来实现,定义装饰器用于装饰函数时,使用@装饰器名称,放在函数或类定义行前

e.g.

import time

def deco(f):
    def wrapper():
        startTime = time.time()
        f()
        endTime = time.time()
        msecs = (endTime - startTime)*1000
        print("time is %d ms" %msecs)
    return wrapper


@deco
def func():
    print("hello")

 

输出:

hello
world
time is 1000 ms

    time.sleep(1)
    print("world")

if __name__ == '__main__':
    f = func #这里f被赋值为func,执行f()就是执行func()
    f()

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章