Python - 检查变量是否赋予函数或是否使用了默认变量

时间:2017-03-05 20:04:36

标签: python

我有一个使用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秒,否则返回给定的日期。

2 个答案:

答案 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))