我正在做一个函数来帮助我在一次考试中,它应该告诉我,当你以某种方式组合两种数据类型时,你会得到哪种数据类型。您还应该能够判断它是否会产生错误,因此我编写了以下代码:
a = '123'
b = 123
def check(data):
try:
print(type(data))
except TypeError as error:
print(f'Error: {error}')
check(a+b)但是,我没有返回异常,而是收到一条错误消息,上面写着"TypeError:只能将str (而不是int)连接到str“。为什么试/除功能不起作用?
发布于 2021-12-05 13:56:23
如果要检查在安全组合两个对象时发生了什么,则需要在try块中执行组合:
def check(a, b):
try:
print(f'Trying to combine types {type(a)} and {type(b)}')
c = a + b
print(f'Resulting type: {type(c)}'))
except TypeError as error:
print(f'Error: {error}')发布于 2021-12-05 13:57:20
因为a+b是在行check(a+b)中计算的,在行中没有异常处理。
下面是使用元编程实现您所要做的事情的一种方法,您可以将操作符函数作为参数传递给check函数。这里不方便的地方是您不能直接传递+运算符,所以您必须定义一个单独的函数。或者,您也可以使用operator库,如Python Mathematical signs in function parameter?中所述
a = '123'
b = 123
# ====================
def add(a, b):
return (a+b)
# ====================
def check(data1, data2, combination_method):
try:
result = combination_method(data1, data2)
print(type(result))
except TypeError as error:
print(f'Error: {error}')
check(a, b, add)https://stackoverflow.com/questions/70234879
复制相似问题