[Python-Dev] replacing 'global'
Phillip J. Eby
pje at telecommunity.com
Sun Oct 26 11:06:10 EST 2003
At 04:54 PM 10/26/03 +0100, Just van Rossum wrote:
>My question above is misleading with respect to my personal feelings
>about the issue. It should have been:
>"""*If* we decide we need to be able to assign to names in outer scopes,
>would it be a good idea to add a rebinding operator?"""
>I actually don't care much whether the cability is added or not, but
>*if* we add it, I'd much rather see a rebinding operator than an
>extension to the global statement or a new declarative statement.
If we have a rebinding operator, I'd rather it be something considerably
more visible than the presence or absence of a ':' on an assignment
statement. So far, all the examples have been downright scary in the
invisibility of what's happening. Mostly, I can imagine some poor sap
trying to debug a program that uses := and is missing one somewhere or has
one where it's not intended -- and hoping that poor sap won't be me. :)
I've mostly stayed out of this discussion, but so far something like the
scope(function).variable proposals, with perhaps a special case for
scope(global) or scope(globals) seems to me like the way to go. It seems
very Pythonic, in that it is explicit and calls attention to the fact that
something special is going on, in a way that ':=' does not. And 'scope'
can be looked up in a manual more easily than ':=' can. Last, but not
least, ':=' looks enough like normal assignment in other languages, that
somebody just plain might not notice that they *need* to look it up.
More information about the Python-Dev