干净地处理多个变量的 TypeErrors
Cleanly handling TypeErrors of multiple variables
目前我正在开发一个网络应用程序,我遇到了一个问题,即一个函数必须处理多个输入,但其中任意数量的输入都可能 None
(或者导致其他一些错误):
def my_func(input_1: set, input_2: set, input_3: set): -> set
return input_1 | input_2 | input_3
最优雅的处理方式是什么?把所有的情况都写出来当然是一种选择。
期待学习一些东西,非常感谢!
如果唯一的情况是输入可能是 None
您可以分配空 set()
而不是 None
:
def my_func(input_1: set, input_2: set, input_3: set) -> set:
inputs = (
input_1 or set(),
input_2 or set(),
input_3 or set()
)
return set.union(*inputs)
是否通过输入所有案例以暴力方式:
def my_func(input_1, input_2, input_3):
types = (
type(input_1),
type(input_2),
type(input_3),
)
if not all(types):
return None
elif not (types[0] and types[1]):
return input_3
elif not (types[0] and types[2]):
return input_2
elif not (types[1] and types[2]):
return imput_1
elif not types[0]:
return input_2 | input_3
elif not types[1]:
return input_1 | input_3
elif not types[2]:
return input_1 | input_2
else:
return input_1 | input_2 | input_3
不幸的是,如果使用更多输入,这将失败,因为需要处理 2^(num_inputs) 个案例,所以我愿意接受更好的建议。
目前我正在开发一个网络应用程序,我遇到了一个问题,即一个函数必须处理多个输入,但其中任意数量的输入都可能 None
(或者导致其他一些错误):
def my_func(input_1: set, input_2: set, input_3: set): -> set
return input_1 | input_2 | input_3
最优雅的处理方式是什么?把所有的情况都写出来当然是一种选择。
期待学习一些东西,非常感谢!
如果唯一的情况是输入可能是 None
您可以分配空 set()
而不是 None
:
def my_func(input_1: set, input_2: set, input_3: set) -> set:
inputs = (
input_1 or set(),
input_2 or set(),
input_3 or set()
)
return set.union(*inputs)
是否通过输入所有案例以暴力方式:
def my_func(input_1, input_2, input_3):
types = (
type(input_1),
type(input_2),
type(input_3),
)
if not all(types):
return None
elif not (types[0] and types[1]):
return input_3
elif not (types[0] and types[2]):
return input_2
elif not (types[1] and types[2]):
return imput_1
elif not types[0]:
return input_2 | input_3
elif not types[1]:
return input_1 | input_3
elif not types[2]:
return input_1 | input_2
else:
return input_1 | input_2 | input_3
不幸的是,如果使用更多输入,这将失败,因为需要处理 2^(num_inputs) 个案例,所以我愿意接受更好的建议。