When I have needed this I have added a separate <name>_factory keyword argument to my function - so the user can specify a value to <name> or a callable to <name>_factory with the doc string clearly spelling out the semantics - and what happens if neither is passed - yes another argument but the semantics are entirely clear.
The other option where having a default value of a function doesn’t ever make sense is to assume that if a callable is passed then it must be a factory. So you can do an iscallable check -- Anthony Flury email : anthony.fl...@btinternet.com Twitter : @TonyFlury > On 11 Aug 2020, at 14:41, William Pickard <lollol22...@gmail.com> wrote: > > What you're running into is how Python handles default arguments. > > Take this for example: > def my_func(seq=[]): > print(seq) > seq.append(42) > print(seq) > > my_func() > # [] > # [42] > > my_func() > # [42] > # [42, 42] > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/DJLTF3B2KQ6G3EITA5EJCSVYYISJIVUZ/ > Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/GSKUAUNHXS7FK7A3VULIXB3FKGGGA7GO/ Code of Conduct: http://python.org/psf/codeofconduct/