[Python-ideas] Default arguments in Python - the return - running out of ideas but...

Jacob Holm jh at improva.dk
Wed May 13 11:00:41 CEST 2009


Pascal Chambon wrote:
> One last idea I might have : what about something like
> 
> *    def myfunc(a, b, c = yield []):
>               pass*
> 

> [...], but there is no interpretation conflict for the parser, and we 
> might quickly get used to it


I am surprised that there is no conflict, but it looks like you are 
technically right.  The parentheses around the yield expression are 
required in the following (valid) code:


 >>> def gen():
...     def func(arg=(yield 'starting')):
...         return arg
...     yield func
...
 >>> g = gen()
 >>> g.next()
'starting'
 >>> f = g.send(42)
 >>> f()
42


I would hate to see the meaning of the above change depending on whether 
the parentheses around the yield expression were there or not, so -1 on 
using "yield" for this.

I'm +0 on the general idea of adding a keyword for delayed evaluation of 
default argument expressions.

- Jacob



More information about the Python-ideas mailing list