Python 2.4: Why only assignments to None are forbiden?

Josef Meile jmeile at hotmail.com
Fri Nov 12 22:11:59 CET 2004


Hi,

Textually from the highlights of python 2.4:

"Assigning to None - the compiler now treats assigning to None as a 
SyntaxError."

I think in general assignments to built-in types, functions, and 
variables should be also forbiden. It's a common mistake to do things 
like this:

 >>> def getFileName(file):
...   parts=file.split('/')
...   return parts('/')[-1]

Specially if you come from python 2.1.x where "file" didn't exist. 
Instead, there was "open"

On the example's context, file is a string and won't cause any damage 
because it is inside a function, so, the scope is local and it will be 
deleted after the function call. But think what would happen if somebody 
defines "file" as a global variable and other people use that code? For 
the author won't be any consequences at all, because if s/he does this, 
it means that probably s/he isn't working with files, but if somebody 
else takes that code and doesn't see this, then s/he will invest some 
time trying to find the bug.

Doing this validation for python 2.4.x will break some things, like the 
validation with "None" does. But I think it's better when you now that 
you are trying to use a "reserved word", you could as well use the "str" 
as an example, which I think is also common on newies.

Regards,
Josef



More information about the Python-list mailing list