# print("hello world")
def old_fun():
return 99
def fun(func):
a= 1#内部函数之外,外部函数里的变量
def inner():#内部函数
# b=a+1 #内部表达式用到了外部的a
old_num=func()+a
return old_num
return inner #执行外部函数完了,返回inner,inner里没有a
old_fun=fun(old_fun)
print(old_fun())
#既然已经返回了inner,他就是一个普通的函数,事实上他不普通,
# new_fun函数相当于inner函数,但是inner函数里没有a。
#现象是,inner函数能找到a。
理解装饰器的一点浅见,python3提供了装饰器的语法,如下
@fun
def old_fun():
return 99
不需要我们再使用这样的形式
old_fun=fun(old_fun)
@装饰器函数名
被装饰函数
上面的格式,必须紧挨着的两行
被装饰函数,要在装饰器函数的下面,如果在装饰器函数上面会报错
装饰器函数 is not defined