I've encountered the same issue, either matching the default values in
the else clause (and hoping they won't later be changed) or having to
revert to building a kwargs dict, and then in multiple `if` statements,
conditionally including arguments.

I've also felt this same pain building dicts with conditionally-
included items. I can't recall such pain with lists as illustrated, or
with list comprehensions for that matter.

+0 on the suggested syntax. I can't comment on complexity to implement
in the interpreter.

 
On Sat, 2021-03-20 at 14:36 -0700, Peter O'Connor wrote:
> bump!
> 
> On Wed, Jan 13, 2021 at 9:32 AM Peter O'Connor
> <peter.ed.ocon...@gmail.com> wrote:
> > I often find that python lacks a nice way to say "only pass an
> > argument under this condition".  (See previous python-list email in
> > "Idea: Deferred Default Arguments?")
> > 
> > Example 1: Defining a list with conditional elements
> >     include_bd = True
> >     current_way = ['a'] + (['b'] if include_bd else
> > [])+['c']+(['d'] if include_bd else [])
> >     new_way = ['a', 'b' if include_bd, 'c', 'd' if include_bd]
> >     also_new_way = list('a', 'b' if include_bd, 'c', 'd' if
> > include_bd)
> >     
> > Example 2: Deferring to defaults of called functions
> >     def is_close(a, b, precicion=1e-9): 
> >         return abs(a-b) < precision
> > 
> >     def approach(pose, target, step=0.1, precision=None):  
> >        # Defers to default precision if not otherwise specified:
> >         velocity = step*(target-pose) \
> >             if not is_close(pose, target, precision if precision is
> > not None) \  
> >             else 0 
> >         return velocity
> > 
> > Not sure if this has been discussed, but I cannot see any clear
> > downside to adding this, and it has some clear benefits (duplicated
> > default arguments and **kwargs are the scourge of many real world
> > code-bases)
> > 
> _______________________________________________
> 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/KM2Y3BFF2GDVPS56Z7TX2VMZXJEKKRHZ/
> 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/TS4GOT6VU3QK6G2GJ2OFUL4F3VS7RDXI/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to