This is clearly one for me to abandon!  Thanks for the explanations.

John

On Mon, Jan 17, 2022 at 7:04 PM Paul Moore <p.f.mo...@gmail.com> wrote:

> On Mon, 17 Jan 2022 at 18:51, John Sturdy <jcg.stu...@gmail.com> wrote:
> >
> > My idea is to support the style in which each variable comes into
> existence at a single well-defined point, whatever path is taken through
> the code, and so in the case of that example, it would be encouraging the
> use of conditional expressions.
>
> But that's a style that Python explicitly rejected right back when it
> was first designed, and it's fundamental to the language that you
> *don't* explicitly declare variables. So sorry, but it's never going
> to happen[1].
>
> If you want to be really precise, technically "the style in which each
> variable comes into existence at a single well-defined point" is
> actually what Python already does. The "well-defined point" is the
> start of the scope (function or class definition) where the variable
> is used, though, and not at some new "let" keyword.
>
> To see this, look at the following:
>
> >>> def f():
> ...   print(n)
> ...   n = 1
> ...
> >>> f()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "<stdin>", line 2, in f
> UnboundLocalError: local variable 'n' referenced before assignment
>
> The variable "n" exists when the print statement runs (it's unbound,
> but it exists - that's what the exception says), and that's because
> the variable comes into existence at the *start* of the scope
> (function).
>
> And the choice to only have a limited number of ways to define scopes
> is *also* a fundamental design principle of Python, so arguing that
> suites should each define their own scope won't get you very far
> either.
>
> Essentially, you're proposing to change Python to no longer be Python,
> in some fairly fundamental ways. Don't be surprised if you get very
> few supporters for your idea...
>
> Paul
>
> [1] In theory, the SC could say that such a change is fine, but I
> can't see that ever happening.
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/WNJSIYW6EGAV5PHQK2JWYA7EXEY4YJNH/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to