Eric V. Smith writes:
> That's why I think we should have a larger concept that just late-bound
> parameters: I think there's a general concept here that can be extended
> beyond parameters.
One advantage of Chris's preferred syntax is that as a default in a
function's parameter list it could do whatever it needs to do there,
while in an executable context, it could return the object, as :=
does. That's a bit inconsistent and quite ugly, I guess, and it might
lead to code like
def foo(x=>[]):
a = bar()
return x
foo(x=>[a])
which I think would be rather confusing. Whether it would be
acceptable is a question of how often it would be used as an
assignment expression rather than as an assignment statement.
I think I've just convinced myself this is a non-starter, but I'll
leave it in as documentation that defining the syntax is a nontrivial
issue.
> later, we'd have two ways to specify late-bound parameters [0].
We might want that anyway. One of the aspects of Chris's proposal is
that late-bound parameters get resolved to objects in a well-specified
(if complicated) order at call time, before entering the function
body. In
foo(x=othermodule.bar())
the compiler cannot know that x's value is a "deferred object" (aside:
how about "autoevaluated expression object", presumably with an
abbreviated form such as "autoeval" for normal use). I don't see how
we can guarantee order of evaluation without syntax for late binding
of parameters. I think the predictability is a potentially valuable
aspect of Chris's proposal that might justify special syntax for
late-bound defaults of formal arguments.[1]
> [0]: Or arguments, I can never remember which is which: someone needs to
> invent a memorable mnemonic device.
C: argv and argc refer to the actual arguments, not the parameter list.
I just use "formal" vs. "actual" to modify "argument".
Footnotes:
[1] I write "potential" not to deprecate it but because I have no
particular use case for late-bound defaults that demands them, rather
than the sentinel idiom. So I have no sense whether this
predictability is a big deal.
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/2Y5GOHDLAWWP5D337BWVRISW65M3Q5CW/
Code of Conduct: http://python.org/psf/codeofconduct/