python之globals()和locals()

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>}

你可能感兴趣的:(python,globals,locals)