Changing calling sequence

Grant Edwards grant.b.edwards at gmail.com
Wed May 11 15:25:53 EDT 2022


On 2022-05-11, David Raymond <David.Raymond at tomtom.com> wrote:

> Maybe not the prettiest, but you could also define it like this,
> which also wouldn't require changing of any existing calls or the
> main body of the function past this if block.
>
> def TempsOneDay(*dateComponents):
>     if len(dateComponents) == 3:
>         year, month, date = dateComponents
>     elif len(dateComponents) == 1 and isinstance(dateComponents[0], datetime.date):
>         year, month, date = (dateComponents[0].year, dateComponents[0].month, dateComponents[0].day)
>     else:
>         raise Exception("Error message here")

That would be my preference were I reading the code. It makes it quite
clear that there are two completely separate signatures. I think I
would be a little confused by the 2nd and 3rd values with default
values — the implication would be that I can supply a datetime object
as the first argument and then additional month and date values in the
2nd and 3rd args. You could try to explain it with a comment, but I
tend to ignore comments...


More information about the Python-list mailing list