On Mon, Oct 25, 2021 at 10:28 AM Chris Angelico <rosuav@gmail.com> wrote:
[...] The two options on the table are:

1) Allow references to any value that has been provided in any way
2) Allow references only to parameters to the left

Option 2 is a simple SyntaxError on compilation (you won't even get as
far as the def statement). Option 1 allows everything all up to the
point where you call it, but then might raise UnboundLocalError if you
refer to something that wasn't passed.

Note that if you were to choose the SyntaxError option, you'd be breaking new ground. Everywhere else in Python, undefined names are runtime errors (NameError or UnboundLocalError).

--
--Guido van Rossum (python.org/~guido)