Jacob Holm wrote:
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 func(arg=(yield 'starting')): ... return arg ... yield func ...
g = gen() g.next()
f = g.send(42) f()
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.
There's the suggestion that Carl Johnson gave:
def myfunc(a, b, c else ): pass
def myfunc(a, b, c def ): pass
where 'def' stands for 'default' (or "defaults to").