global()返回全局作用域的属性字典, locals()返回局部作用域的属性字典.当locals()在模块顶层的位置时返回的值与global()相同.
实例
#!/usr/bin/python
#coding=utf-8
class Dog(object):
x = 11
y = 12
def __init__(self):
m = 44
n = 33
def eat(self):
k = 11
h = 22
''' 打印 {'h': 22, 'k': 11, 'self': <__main__.Dog object at 0x7fc2985b8e10>} '''
print locals()
def func():
x = 1
y = 2
def wrap():
pass
''' 打印 func local is: {'wrap': <function wrap at 0x7fc2985be938>, 'y': 2, 'x': 1} '''
print 'func local is: %s' % locals()
x = 1
y = 2
func()
''' 两者都打印{'__builtins__': <module '__builtin__' (built-in)>, '__file__': 't.py', 'Dog': <class '__main__.Dog'>, '__package__': None, 'func': <function func at 0x7fc2985be7d0>, 'x': 1, 'y': 2, '__name__': '__main__', '__doc__': None} '''
print 'local is: %s' % locals()
print 'globals is: %s' %globals()
dog = Dog()
dog.eat()
输出
func local is: {'wrap': <function wrap at 0x7febea277938>, 'y': 2, 'x': 1}
local is: {'__builtins__': <module '__builtin__' (built-in)>, '__file__': 't.py', 'Dog': <class '__main__.Dog'>, '__package__': None, 'func': <function func at 0x7febea2777d0>, 'x': 1, 'y': 2, '__name__': '__main__', '__doc__': None}
globals is: {'__builtins__': <module '__builtin__' (built-in)>, '__file__': 't.py', 'Dog': <class '__main__.Dog'>, '__package__': None, 'func': <function func at 0x7febea2777d0>, 'x': 1, 'y': 2, '__name__': '__main__', '__doc__': None}
{'h': 22, 'k': 11, 'self': <__main__.Dog object at 0x7febea271e10>}