0
我有一个方法:获取当前日期作为缺省参数的方法
def do_something(year=?, month=?):
pass
我想year
和month
参数是可选的,但我想他们的默认等于当前年份和月份。我曾想过在方法声明之前设置两个变量,但这是其中一部分的过程可以运行数月。它需要是动态的。
似乎它不应该很难,但我今天有一个心理障碍,所以你会怎么做呢?
我有一个方法:获取当前日期作为缺省参数的方法
def do_something(year=?, month=?):
pass
我想year
和month
参数是可选的,但我想他们的默认等于当前年份和月份。我曾想过在方法声明之前设置两个变量,但这是其中一部分的过程可以运行数月。它需要是动态的。
似乎它不应该很难,但我今天有一个心理障碍,所以你会怎么做呢?
的惯用方法在这里将分配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
感谢抬起头,这是完全正确的。 – 2010-08-03 16:35:40
'如果不是一年'和'如果不是一个月'比'没有'更加pythonic。否则很好。 – 2010-08-03 18:07:12
@ Zonda:也许,但这也会使零值无效。对于这个月零可能是一个奇怪的价值,但这一年似乎是合理的,没有任何关于OP的确切情况的背景。 – 2010-08-03 21:25:21