|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zzhsb 于 2022-10-15 21:46 编辑
- 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)) # 这里打印结果应该是 4
- print(double("2")) # 这里打印结果应该是 “参数类型错误”
-
- print("\n<<<--- 测试字符串 --->>>")
-
- @type_check(str)
- def upper(s):
- return s.upper()
-
- print(upper('I love FishC.')) # 这里打印结果应该是 I LOVE FISHC
- print(upper(250)) # 这里打印结果应该是 “参数类型错误”
复制代码
把装饰器转换为原本的样貌是:
- 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("<<<--- 测试整数 --->>>")
- def double(x):
- return x*2
- print(double(2))
- print(double('2'))
- print("\n<<<--- 测试字符串 --->>>")
- def upper(s):
- return s.upper()
- print(upper('I love FishC'))
- print(upper(250))
- double = type_check(int)(double)
- upper = type_check(str)(upper)
复制代码
为什么会报错呢?转换错了吗? |
|