一,闭包
二,*args 和 **kwargs
三,无参装饰器实现
知识储备,需要了解名称空间,闭包函数,参数传递(*args和**kwargs的用法)
一,闭包函数
想要实现装饰器,那么首先就需要了解什么是闭包,闭包函数简单来说就是一个函数中嵌套一个函数,其中内部嵌套的函数能调用外部函数传递的参数。光说概念难以理解,那么上代码。
def func(x):
def func1():
y = 10;
print(x + y)
return func1
outer = func(10)
outer()
----------------
>>>20
这里可以看到func1函数是嵌套在func函数中的,同时调用函数func的时候返回的是函数func1的函数名的内存地址,这样用变量名outer这个变量名来接收,那么是不是这个outer 变量名的值就是该返回的函数名的内存地址?同时我们知道,在python中,函数名加()后才表示开始调用函数体,所以现在的格式就相当于“func1的内存地址()”来调用函数体,同时变量outer和函数名func1在名称空间中也并不冲突,这也就导致了在调用的时候并不会导致冲突。
二,*args 和 **kwargs
在Python中的代码中经常会见到这两个词 args 和 kwargs,前面通常还会加上一个或者两个星号。其实这只是编程人员约定的变量名字,ar