是否有一种方法可以编写相同的try,但不需要硬编码就可以编写多行代码?python
我有多个函数可能返回是否有一种方法可以编写相同的try,但不需要硬编码就可以编写多行代码?python,python,error-handling,try-catch,except,hardcode,Python,Error Handling,Try Catch,Except,Hardcode,我有多个函数可能返回None: 做某事(),做某事2(),做某事3(),等等 为了克服非类型错误,我必须从代码的另一部分对进行硬编码,并尝试以下操作: try: x = do_other_things(do_something()) except someError: # because of None Type return x = None try: y = do_other_things(do_something2()) except someError: # because
None
:
做某事()
,做某事2()
,做某事3()
,等等
为了克服非类型错误,我必须从代码的另一部分对进行硬编码,并尝试以下操作:
try:
x = do_other_things(do_something())
except someError: # because of None Type return
x = None
try:
y = do_other_things(do_something2())
except someError: # because of None Type return
y = None
是否有任何方法可以将相同的try-except
应用于不同的代码行/不同的函数调用?如果您正在测试相同的异常类型,则可以将try/except块包装到一个函数中,该函数接受其他函数和参数列表作为参数
def try_except(myFunction, *params):
try:
return myFunction(*params)
except ValueError as e:
return None
except TypeError as e:
return None
我不是python专家,但我可以换一种方式思考
创建函数数组并在循环中调用它们:
listOfFuncs = [do_something,do_something2,do_something3]
results = []*len(listOfFuncs)
for index, func in enumerate(listOfFuncs):
try:
results[index] = do_other_things(func())
except someError:
results[index] = None
要使其适用于多个或无参数,还需要在函数体中包含星号(*):return myFunction(*params)