Идиоматический подход здесь заключается в назначении 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