代码中存在一些错误和问题,下面是我对代码进行修改的建议:
1. 在
type_check 函数中,判断
func 是否为
int 或
str 时,应该使用
is 运算符而不是比较运算符
==,同时在判断类型时应该使用
type() 函数,而不是直接与字符串比较。
2.
elif 语句缺少条件表达式。
3. 在
type_check 函数中,应该将传入的参数
x 作为函数的参数进行处理,而不能直接引用。
4. 装饰器应该在函数定义之前使用
@ 符号进行装饰,而不是在调用函数时进行。
下面是修改后的代码:
- def type_check(func):
- def decorator(x):
- if func is int:
- if type(x) is int:
- print(double(x))
- else:
- print("参数类型错误!")
- elif func is str:
- if type(x) is str:
- print(upper(x))
- else:
- print("参数类型错误!")
- return decorator
- @type_check(int)
- def double(x):
- return x * 2
- @type_check(str)
- def upper(s):
- return s.upper()
- print("<<<--- 测试整数 --->>>")
- double(2) # 这里打印结果应该是 4
- double("2") # 这里打印结果应该是 “参数类型错误”
- print("\n<<<--- 测试字符串 --->>>")
- upper('I love FishC.') # 这里打印结果应该是 I LOVE FISHC
- upper(250) # 这里打印结果应该是 “参数类型错误”
复制代码
请注意,以上修改仅是根据你提供的代码进行推测,可能还需要根据实际需求进一步调整。
如果问题已经解决,请设置最佳答案