Python函数缓存?

Python函数缓存?,python,function,caching,return,Python,Function,Caching,Return,我在Python中遇到了一个非常奇怪的情况 我在脚本中有一个while True:循环,它不断地捕获实时数据。数据只能在工作时间抓取,因此我在名为lib/date.py的模块中有一个helper函数 这就是功能: def isTime(utc_now=datetime.datetime.utcnow()): ''' 9:00 AM UTC - 5:00 PM UTC Mon - Fri. The parameter utc_now can be used to spe

我在Python中遇到了一个非常奇怪的情况

我在脚本中有一个
while True:
循环,它不断地捕获实时数据。数据只能在工作时间抓取,因此我在名为
lib/date.py
的模块中有一个helper函数

这就是功能:

def isTime(utc_now=datetime.datetime.utcnow()): 
    '''
    9:00 AM UTC - 5:00 PM UTC Mon - Fri.

    The parameter utc_now can be used to specify a specific     
    datetime to be checked instead of the utcnow(). 
    '''

    week_day = utc_now.weekday()

    # no good on Saturdays and Sundays
    if 5 == week_day or 6 == week_day:
        return False

    now_int = (utc_now.hour * 60) + utc_now.minute

    if (17 * 60) >= now_int >= (9 * 60):
        return True

    return False
我意识到检查时间的方式有些过分,但这是我函数的简化版本。我的真实函数还包括一系列时区转换,这使得上述内容成为必要

这是我的主要脚本(简化):

这在一周内非常有效,每周晚上停止,第二天早上继续。然而,在周末,它并没有从长时间的休息中“恢复”。换句话说,
isTime
不会在周一早上返回
True

我检查了日志,脚本只是每隔10秒打印一次“活动”,但数据获取部分从未发生过(而且“它的时间”也从未打印过)。因此,我假设这意味着
isTime
返回
False

可能是因为函数在周末被频繁调用,并且因为它连续多次返回
False
,Python会缓存结果,并且永远不会从中恢复吗

当我在主脚本仍在错误模式下运行时生成相同的代码实例时,
isTime
返回
False
,新实例将从
isTime
获得
True
,并开始正常工作


发生了什么?

第一次导入date.py时,以下行运行一次:

def isTime(utc_now=datetime.datetime.utcnow()):

运行时,
utc\u now
的默认值设置为该时刻的时间,并且永远不会重新计算。

默认参数在编译时计算。设置默认值
None
,并使用
检查是否为None

def isTime(utc_now=datetime.datetime.utcnow()):