课后作业 装饰器嵌套
def type_check(correct_type):def outer(func):
def inner(arg):
if(type(arg) == correct_type):
return func(arg)
else:
return "参数类型错误!"
return inner
return outer
print("<<<--- 测试整数 --->>>")
@type_check(int)
def double(x):
return x * 2
print(double(2))
@type_check(int)这个等于 double = type_check(int) 等于 double = outer, double(2) 等于outer(2) 那不对吧 没想明白这里
本帖最后由 lxping 于 2022-12-1 22:46 编辑
double函数是传给outer(func)中的形参func的
@type_check(int)
def double(x):
return x * 2
#相当于
def double(x):
return x * 2
double = type_check(correct_type=int)(func=double)
#实际上就是最后调用的就是double
double(2) #再将参数2传给形参x
lxping 发表于 2022-12-1 22:43
double函数是传给outer(func)中的形参func的
明白了就是装饰器 必须要找到一个有函数形式的参数 才可以停下来 否则就是一直得往里传递参数,大概是这个意思吧,就是必须得找到一个口,这个口就是能装下函数引用的参数 {:10_249:}
页:
[1]