Question about locals()

Terry Reedy tjreedy at
Tue May 19 01:54:03 EDT 2009

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 

Terry Jan Reedy

More information about the Python-list mailing list