如何在另一个函数中使用一个函数的输出?

How to use the output of a function in another function?

我创建了一个函数来从用户那里获取日期并使用 strptime 将其转换为 datetime 格式。该函数称为 Obtaindate()。这将作为另一个函数 Getdata() 的输入。现在,在第二个函数 Getdata() 中,我需要用 timedeltaObtaindate() 中减去日期。但是我收到错误 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 )