[Python-ideas] optional parameters
Devin Jeanpierre
jeanpierreda at gmail.com
Wed Apr 16 19:59:37 CEST 2014
More information about the Python-ideas mailing list
Wed Apr 16 19:59:37 CEST 2014
- Previous message: [Python-ideas] optional parameters
- Next message: [Python-ideas] optional parameters
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, Apr 16, 2014 at 10:29 AM, Guido van Rossum <guido at python.org> wrote: > TBH I think it's usually an anti-pattern when you have an API where the > absence of a parameter is not equivalent to some default value. It makes > wrapping such APIs awkward, e.g. > > def logging_foo(*, arg1='something_other_than_spam', arg3=None, > arg4=<what???>): > loging.info('calling foo(arg1=%r, arg3=%r, arg4=%r)', arg1, arg3, arg4) > return foo(arg1=arg1, arg3=arg3, arg4=arg4) Wrapping the APIs in such a tightly coupled way is already awkward, since if the argspec (e.g. the default) changes, so must your wrapper. *args/**kwargs are better when possible. -- Devin > On Wed, Apr 16, 2014 at 10:09 AM, Yury Selivanov <yselivanov.ml at gmail.com> > wrote: >> >> Hello, >> >> There is a very common pattern for creating optional arguments >> when you can't use None: >> >> _optional = object() >> def foo(*, arg1='spam', arg3=None, arg4=_optional): >> if arg4 is _optional: >> # caller didn't pass *anything* for arg4 >> else: >> # caller did pass some (maybe None) value for arg4 >> >> It's a bit annoying to create this marker objects, and also, >> if you try to render a signature of such function, you'll get >> something like: >> >> "(*, arg1='spam', arg3=None, arg4=<object object at 0x104be7080>)" >> >> What if we add a standard marker for this use-case: >> functools.optional or inspect.Parameter.optional? >> >> >> Yury >> _______________________________________________ >> Python-ideas mailing list >> Python-ideas at python.org >> https://mail.python.org/mailman/listinfo/python-ideas >> Code of Conduct: http://python.org/psf/codeofconduct/ > > > > > -- > --Guido van Rossum (python.org/~guido) > > _______________________________________________ > Python-ideas mailing list > Python-ideas at python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/
- Previous message: [Python-ideas] optional parameters
- Next message: [Python-ideas] optional parameters
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list