获取当前日期作为方法的默认参数

时间:2010-08-03 16:26:32

标签: python datetime

我有一个方法:

def do_something(year=?, month=?):
    pass

我希望yearmonth参数是可选的,但我希望它们的默认值等于当前年份和月份。我已经考虑过在方法声明之前设置两个变量,但是这个过程可以运行几个月。它需要是动态的。

似乎不应该很难但我今天有心理障碍所以你会怎么做?

1 个答案:

答案 0 :(得分:8)

此处的惯用方法是将None指定为默认值,然后在值仍为None的情况下在方法中重新分配:

def do_something(year=None, month=None):
    if year is None:
        year = datetime.date.today().year
    if month is None:
        month = datetime.date.today().month

    # do stuff...

您可能认为可以执行def do_something(year=datetime.date.today().year),但这会缓存该值,以便在year的所有调用中do_something都相同。

要证明这个概念:

>>> def foo(x=time.time()): print x
...
>>> foo()
1280853111.26
>>> # wait a second at the prompt
>>> foo()
1280853111.26