Python datetime.now() 作为默认函数参数 return 不同时间的相同值

Python datetime.now() as a default function parameter return same value in different time

现在我遇到了一些无法解释和修复的问题。
这是我的第一个 python 模块

TimeHelper.py

from datetime import datetime

def fun1(currentTime = datetime.now()):
    print(currentTime)

另一个是

Main.py

from TimeHelper import fun1
import time

fun1()
time.sleep(5)
fun1()

当我运行 Main.py时,输出是
2020-06-16 09:17:52.316714
2020-06-16 09:17:52.316714

我的问题是为什么结果中的时间相同?将 datetime.now() 传递给默认参数时是否有任何限制?

在函数中分配变量时,实际上只在导入函数时分配一次。要动态分配它,您需要在每次 运行.

时在函数内部设置变量
from datetime import datetime

def fun1():
    currentTime = datetime.now()
    print(currentTime)

编辑:

如果要具体说几点的话:

from datetime import datetime

def fun1(time):
    currentTime = time
    print(currentTime)

这是因为当你定义一个函数时 datetime.now() 只在那个时候计算并且那个值存储在 currentTime 中,所以每当你 运行 fun1 当前时间值不更新。
您可以在 TimeHelper.py

中简单地执行此操作
from datetime import datetime

def fun1(currentTime=None):
    if currentTime:
        print(currentTime)
    else:
        print(datetime.now())

希望对您有所帮助:)

我想我找到了答案。 感谢@user2864740
所以我把我的TimeHelper.py改成这个

from datetime import datetime

def fun1(currentTime = None):
    if currentTime is None:
        currentTime = datetime.now()
    print(currentTime)

一切都符合我的预期。