|
|
发表于 2023-1-12 14:17:09
|
显示全部楼层
本楼为最佳答案
本帖最后由 isdkz 于 2023-1-12 14:18 编辑
@type_check(int)
def double(x):
相当于 double = type_check(int)(double)
从
- 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
复制代码
中不难看出:
type_check(int) 返回的是 outer,而且 correct_type 为 int,即
type_check(int) 相当于
- def outer(func):
- def inner(arg):
- if(type(arg) == int):
- return func(arg)
- else:
- return "参数类型错误!"
- return inner
复制代码
type_check(int)(double) 就相当于 outer(double),即
- def inner(arg):
- if(type(arg) == int):
- return double(arg)
- else:
- return "参数类型错误!"
复制代码
通过 @type_check(int) 的修饰,其实 double 已经被替换成了上面的这个 inner 函数了
|
|