我有一个使用datetime对象作为默认值的函数:
from datetime import datetime, timedelta
from random import randint
def getTime(date = datetime.now()):
i = randint(1,300)
date = date - timedelta(seconds = i)
return date
现在,我需要检查函数内的日期变量是由另一个函数给出还是使用默认的datetime.now()。如果使用默认值,则减去i秒,否则返回给定的日期。
答案 0 :(得分:5)
您可以按照以下方式执行此操作:
def my_function(date=None):
if date is None:
# The default is used
date = datetime.now()
...
答案 1 :(得分:0)
假设您希望每次都计算“now”:
def getTime(date=None):
return date or datetime.now() - timedelta(seconds=randint(1,300))
否则:
引入默认的arg:
def getTime(date=None, _default=datetime.now()):
return date or _default - timedelta(seconds=randint(1,300))
或者创建一个装饰者:
def just_return_if_provided(f):
def inner(date=None):
return date or f(date)
return inner
@just_return_if_provided
def getTime(date=datetime.now()):
return date - timedelta(seconds=randint(1,300))