如何在另一个函数中使用一个函数的输出?
How to use the output of a function in another function?
我创建了一个函数来从用户那里获取日期并使用 strptime
将其转换为 datetime
格式。该函数称为 Obtaindate()
。这将作为另一个函数 Getdata()
的输入。现在,在第二个函数 Getdata()
中,我需要用 timedelta
从 Obtaindate()
中减去日期。但是我收到错误 TypeError: unsupported operand type(s) for -: 'NoneType' and 'datetime.timedelta'
.
我应该怎么做才能让第一个函数的日期在第二个函数中起作用?
这是代码示例:
def ObtainDate():
isValid=False
while not isValid:
userin = str(input("Type Date ddmmyy: "))
try:
dt = datetime.datetime.strptime(userin, '%d%m%y')
print('You have selected {}'.format(datetime.date.strftime(dt, '%d-%b-%Y')))
break
except:
print("Incorrect format...try again!")
continue
return dt
ObtainDate()
def Getdata():
date1 = ObtainDate() - datetime.timedelta(1)
date2 = datetime.datetime.today()
delta = datetime.timedelta(1)
while date1 < date2:
print('Download in progress...')
试试这个 - 评论显示添加。mmove/delete
except 不是很好 - 最好捕获特定的异常
def ObtainDate():
isValid=False
while not isValid:
userin = str(input("Type Date ddmmyy: "))
try:
dt = datetime.datetime.strptime(userin, '%d%m%y')
print('You have selected {}'.format(datetime.date.strftime(dt, '%d-%b-%Y')))
return dt ####### moved here
except:
print("Incorrect format...try again!")
continue
# REMOVED return dt
def Getdata(adate): # ADDED PARAMETER
date1 = adate- datetime.timedelta(1) # USE PARAMETER
date2 = datetime.datetime.today()
delta = datetime.timedelta(1)
while date1 < date2:
print('Download in progress...')
# ADDED SAVING DATA
data_for_this_date = …
# ADDED RETURN
return data_for_this_date
# ADDED SAVING VALUE OF FUNCTION CALL
theday = ObtainDate()
# ADDED PASSING the result from Obtaindate()
# AND ADDED store result returned by Getdata in a variable
data = Getdata( theday )
我创建了一个函数来从用户那里获取日期并使用 strptime
将其转换为 datetime
格式。该函数称为 Obtaindate()
。这将作为另一个函数 Getdata()
的输入。现在,在第二个函数 Getdata()
中,我需要用 timedelta
从 Obtaindate()
中减去日期。但是我收到错误 TypeError: unsupported operand type(s) for -: 'NoneType' and 'datetime.timedelta'
.
我应该怎么做才能让第一个函数的日期在第二个函数中起作用?
这是代码示例:
def ObtainDate():
isValid=False
while not isValid:
userin = str(input("Type Date ddmmyy: "))
try:
dt = datetime.datetime.strptime(userin, '%d%m%y')
print('You have selected {}'.format(datetime.date.strftime(dt, '%d-%b-%Y')))
break
except:
print("Incorrect format...try again!")
continue
return dt
ObtainDate()
def Getdata():
date1 = ObtainDate() - datetime.timedelta(1)
date2 = datetime.datetime.today()
delta = datetime.timedelta(1)
while date1 < date2:
print('Download in progress...')
试试这个 - 评论显示添加。mmove/delete
except 不是很好 - 最好捕获特定的异常
def ObtainDate():
isValid=False
while not isValid:
userin = str(input("Type Date ddmmyy: "))
try:
dt = datetime.datetime.strptime(userin, '%d%m%y')
print('You have selected {}'.format(datetime.date.strftime(dt, '%d-%b-%Y')))
return dt ####### moved here
except:
print("Incorrect format...try again!")
continue
# REMOVED return dt
def Getdata(adate): # ADDED PARAMETER
date1 = adate- datetime.timedelta(1) # USE PARAMETER
date2 = datetime.datetime.today()
delta = datetime.timedelta(1)
while date1 < date2:
print('Download in progress...')
# ADDED SAVING DATA
data_for_this_date = …
# ADDED RETURN
return data_for_this_date
# ADDED SAVING VALUE OF FUNCTION CALL
theday = ObtainDate()
# ADDED PASSING the result from Obtaindate()
# AND ADDED store result returned by Getdata in a variable
data = Getdata( theday )