On 2019-02-16, Barry <ba...@barrys-emacs.org> wrote: > On 11 Feb 2019, at 20:00, Felix Lazaro Carbonell <fe...@epepm.cupet.cu> wrote: > >>> The most pythonic way is to do this: >>> >>> def find_monthly_expenses(month=datetime.date.today().month, >> year=datetime.date.today().year): >>> ... > > This has subtle bugs. > The default is calculated at import time and not at function call time.
Indeed. That was the entire point of that posting: it was an example of a not-uncommon misunderstanding about when intializer values are determined. Unfortunately the subsequent remark about initializers not working that way has been lost in the shuffle. > Also the defaults for month and year are not calculated at the same > moment in time. Yep. The race condition between the evaluation of the two initializer expressions is a bit more subtle than the fact that the evaluations only happen once at compile time. -- Grant -- https://mail.python.org/mailman/listinfo/python-list