On 27Nov2020 00:25, Steven D'Aprano <st...@pearwood.info> wrote: >Block scoping allows shadowing within a function.
Just to this: it needn't. You could forbid shadowing of the _static_ outer scope easily enough at parse/compile time. That would prevent a certain class of easy misuse. i = 9 { new scope here for "i" ==> parse/compile error, since "i" is in play } It depends what the scope's for: to define a variable lifetime (very desireable sometimes) or to _actually_ shadow something (I'm against that myself - there are better and less error prone ways). Anyway, I'm against proliferation of new scopes on the whole. That said, there _are_ times I wish I could mark out the lifetime of a variable, akin to C level: ... i does not exist ... { int i; ... use i ... } ... i now unknown, use is an error ... The nearest Python equivalent is: i = blah() ... use i del i which feels fragile - accidental assignment to "i" later is not forbidden. Of course, in C variables must be declared. Not so easy with Python, syntacticly. Cheers, Cameron Simpson <c...@cskk.id.au> _______________________________________________ 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/MGHMZ7TPPSHMKHVJ2HLTQSVH4ZRSUNLK/ Code of Conduct: http://python.org/psf/codeofconduct/