Is vars() meant to include globals?
Hamish Lawson
hamish_lawson at yahoo.co.uk
Fri Sep 15 04:56:57 EDT 2000
My understanding was that all variables known to a given scope would be
listed in vars(), effectively the union of globals() and locals().
However inside both SomeClass's __init__() and somefunc() in the
program below, vars() gives just the local variables. But the global
variable globalname is known in each case. Have I misunderstood about
vars()?
Hamish Lawson
-------------------------------------------------------------
globalname = "Bob"
class SomeClass:
classvar = 3
def __init__(self, param):
localvar = 4
print 'globals():', globals()
print 'locals():', locals()
print 'vars():', vars()
print 'globalname:', globalname
def somefunc(param):
localvar = 2
print 'globals():', globals()
print 'locals():', locals()
print 'vars():', vars()
print 'globalname:', globalname
SomeClass("Joe")
print
somefunc("Sue")
This gives:
globals(): {'globalname': 'Bob', '__doc__': None, 'somefunc': <function
somefunc at 78f210>, 'SomeClass': <class __main__.SomeClass at
78f1f0>, '__name__': '__main__', '__builtins__': <module '__builtin__'
(built-in)>}
locals(): {'self': <__main__.SomeClass instance at
78f230>, 'param': 'Joe', 'localvar': 4}
vars(): {'param': 'Joe', 'self': <__main__.SomeClass instance at
78f230>, 'localvar': 4}
globalname: Bob
globals(): {'globalname': 'Bob', '__doc__': None, 'somefunc': <function
somefunc at 78f210>, 'SomeClass': <class __main__.SomeClass at
78f1f0>, '__name__': '__main__', '__builtins__': <module '__builtin__'
(built-in)>}
locals(): {'param': 'Sue', 'localvar': 2}
vars(): {'param': 'Sue', 'localvar': 2}
globalname: Bob
Sent via Deja.com http://www.deja.com/
Before you buy.
More information about the Python-list
mailing list