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)
一切都符合我的预期。
现在我遇到了一些无法解释和修复的问题。
这是我的第一个 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)
一切都符合我的预期。