Tuesday, March 21, 2017

When you can update locals()

There are two built-in functions, globals and locals.  These return dicts of the contents of the global and local scope.

Locals usually refers to the contents of a function, in which case it is a one-time copy.  Updates to the dict do not change the local scope:

>>> def local_fail():
...    a = 1
...    locals()['a'] = 2
...    print 'a is', a
... 
>>> local_fail()
a is 1

However, in the body of a class definition, locals points to the __dict__ of the class, which is mutable.

>>> class Success(object):
...    locals().update({'a': 1})
... 
>>> Success.a
1

2 comments:

  1. It is very useful for automatic add fields to generation database orm (like sqlalchemy and django) models.

    ReplyDelete
  2. its a well known fact that understudies in a greater part of the establishments are battling to create splendid exploration papers in a wide range of spaces and subjects, generally with regards to composing a science research paper. There are north of 193 licensed organizations with hec; in any case, an enormous number of someone write my assignment the staff is moderately unpracticed and not good for overseeing understudies for research papers.

    ReplyDelete