我在项目中使用MVC
(Module-View-Controller
)模式。我想保留我的代码DRY(不要重复自己)所以我不想再为另一个输入写get_date函数。
我多次使用函数get_date()
,但输入不同。如何将这些输入传递给函数get_date()
,以便它可以工作?
我在这里致电get_date()
函数:
date = get_date(date_input = provide_date())
这里我想通过输入消息传递函数:
def get_date(date_input):
ask = True
while ask:
date_input
try:
validation = datetime.strptime(date_input, '%Y-%m-
%d').strftime('%Y-%m-%d')
date_list = validation.split('-')
correct_date =
date(int(date_list[0]),int(date_list[1]),int(date_list[2]))
return correct_date
ask = False
except ValueError:
wrong_input()
Provide_date函数是:
def provide_date():
return input('Type date in format Y-M-D: ')
我有另外的输入用于不同的情况,例如重新安排与另一条消息。
如何将此输入传递给get_date()
函数,以便它可以在While循环中工作?因为当我引发TypeError时它会永远循环。
答案 0 :(得分:1)
您的代码存在一些问题:
get_date
;相反,传递函数本身get_date
内的函数,并将结果绑定到某个变量ask
变量试试这个:
def get_date(date_input):
while True:
inpt = date_input() # add () and bind result to variable
try:
dt = datetime.strptime(inpt, '%Y-%m-%d') # no need to parse-format-parse
return date(dt.year, dt.month, dt.day) # use attributes of parsed datetime
except ValueError:
wrong_input()
print(get_date(provide_date)) # no () here