Gökhan SEVER wrote:
Hello,

Could you please explain why locals() allow me to create variables that are not legal in Python syntax.

It doesn't.

Example: locals()['1abc'] = 55. Calling of 1abc results with a syntax error.

Within a function, locals() is a persistemt dictionary copy of the local namespace. In that situation, using even a legal name as the key does not change the local namespace, and trying to use that legal name will give a NameError.

Better to ask about globals(), which *is* the global namespace.

 Shouldn't it be better to raise an
error during the variable creation time?

To do that would require a separate legal-name-string-only dictionary.
That has been considered, but has not seemed worth the trouble.
Also, people have found uses for what you are calling an error.

Few newbies try to add non-identifiers to locals(). More often, they fail to real the red warning about not trying to add even a legal identifier.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to