On Wed, May 26, 2021 at 10:31 PM Shreyan Avigyan
<pythonshreya...@gmail.com> wrote:
>
> Reply to Paul Moore:
>
> if some_condition:
>     constant a = 1
> else:
>     a = 2
> a = 3
>
> Yes this is allowed. This is runtime.
>
> for i in range(10):
>     constant a = []
>
> Not sure. Though it's preferable to be runtime. Preferable is "not allowed".
>
> And lists are also literals. Any Python Object that is not assigned to a 
> variable is a literal. Python claims that itself. A preview -
>
> [10] = [2]
> SyntaxError: Can't assign to literal here.

The literal that you can't assign to here is "10". You're perfectly
allowed to assign to a list display:

[x, y, z] = range(3)

> Constants should have a similar error -
>
> constant x = 10
> x = [2]
> SomeErrorType: Can't assign to constant here.

Is it a syntax error? Be VERY specific here. It makes a huge difference.

Also, what about this:

constant x = 10
def f():
    x = 20

SyntaxError? Runtime error? Shadowing?

This is important and cannot be brushed aside.

ChrisA
_______________________________________________
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/GN7X4QEFVZQUUUYCTJCRWD5IKX27RO6E/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to