【发布时间】:2020-12-10 13:29:04
【问题描述】:
为了测试一个函数是否适用于多个参数之一,我创建了一个带有 try-except 结构的递归函数。 函数递归后返回return语句,输出正确,但是return语句返回一个NoneType对象,就好像没有return语句一样。
from datetime import datetime, timedelta
import datetime as dt
# Bombard function with different tryinputs untill it works or all options are tested.
def tryexcept(function, tryinputs, *args, **kwargs):
try:
if True:#contains_explicit_return(function):
output = function(tryinputs[0],*args,**kwargs)
if type(output) == dt.date:
print(output)
return output
else:
raise ValueError("Output didn't return datetime.date object.")
else:
function(tryinputs[0],*args,**kwargs)
except:
if len(tryinputs) > 1:
tryexcept(function,tryinputs[1:],*args,**kwargs)
else:
raise ValueError("WARNING: All tried inputs failed.")
# Date Conversion Functions
def stringtotime(stringformat,string):
output = datetime.strptime(str(string),stringformat).date()
return output
# Execution part
tryinputs = ['%d/%m/%Y %H:%M', '%d/%m/%Y %I:%M %p', '%m/%d/%Y %H:%M', '%m/%d/%Y %I:%M %p',
'%d/%m/%Y %H:%M:%S', '%d/%m/%Y %I:%M:%S %p', '%m/%d/%Y %H:%M:%S',
'%m/%d/%Y %I:%M:%S %p']
test = '29/9/2020 13:02:00'
output = tryexcept(stringtotime, tryinputs, test)
之后会打印以下内容:
2020-09-29
但变量“输出”包含一个 NoneType 对象:
In [176]: type(output)
Out[176]: NoneType
我不知道为什么会这样,也找不到任何遇到相同问题的帖子。有谁知道为什么会这样?
谢谢!
【问题讨论】:
标签: python-3.x