获取当前日期作为方法的默认参数
我有一个方法:
def do_something(year=?, month=?):
pass
我希望year
和month
这两个参数是可选的,但它们的默认值应该是当前的年份和月份。我考虑过在方法声明之前设置两个变量,但这个过程可能会持续几个月。它需要是动态的。
看起来这应该不难,但今天我有点卡壳,所以你会怎么做呢?
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_something
时year
的值都是一样的。
为了演示这个概念:
>>> def foo(x=time.time()): print x
...
>>> foo()
1280853111.26
>>> # wait a second at the prompt
>>> foo()
1280853111.26