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