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

2 投票
1 回答
1877 浏览
提问于 2025-04-16 02:15

我有一个方法:

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

我希望yearmonth这两个参数是可选的,但它们的默认值应该是当前的年份和月份。我考虑过在方法声明之前设置两个变量,但这个过程可能会持续几个月。它需要是动态的。

看起来这应该不难,但今天我有点卡壳,所以你会怎么做呢?

1 个回答

11

这里的常见做法是把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),但这样会把这个值缓存起来,导致每次调用do_somethingyear的值都是一样的。

为了演示这个概念:

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

撰写回答