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>}
时间: 2024-08-01 19:16:44

python之globals()和locals()的相关文章

【转】Python 内置函数 locals() 和globals()

Python 内置函数 locals() 和globals() 转自: https://blog.csdn.net/sxingming/article/details/52061630 1>这两个函数主要提供,基于字典的访问局部变量和全局变量的方式. python 使用叫做名字空间的东西来记录变量的轨迹.名字空间是一个字典 ,它的键就是字符串形式的变量名字,它的值就是变量的实际值. 名字空间可以像 Python 的 dictionary 一样进行访问. 在一个 Python 程序中的任何一个地方

python globals()和locals(),global和nonlocal,以及闭包

1. 命名空间和作用域 命名空间 1. 内置命名空间: python解释内部运行时的变量函数 2. 全局命名空间: 我们在py文件中直接声明出来的变量, 函数 3. 局部命名空间: 在函数内部声明的变量和函数 作用域: 1. 全局作用域: 内置 + 全局 2. 局部作用域: 局部 globals() 查看全局作用域中的名字 locals() 查看当前作用域中的名字 2. global和nonlocal global: 把全局变量拿到局部来用. nonlocal:把离他最近的一层的变量拿过来, 不

Python globals和locals函数_reload函数

Python globals和locals函数_reload函数: globals( ): 返回所有能够访问到的全局名字 num = 5 sum = 0 def add(num): func_sum = 0 func_sum += num return func_sum print(globals()) ''' {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importl

python之函数用法locals()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法locals() #locals() #说明:查找局部变量,返回一个名字/值对的字典对象.只具备查找权限 ''' locals(...) locals() -> dictionary Update and return a dictionary containing the current scope's local variables. ''' #案例 def test(): na

globals() 和 locals() 函数

globals() 和 locals() 函数 根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字. 如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名. 如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字. 两个函数的返回类型都是字典.所以名字们能用 keys() 函数摘取. 原文地址:https://www.cnblogs.com/MaxElephant/p/10168412.html

016.Python闭包函数以及locals和globals

一 闭包函数 内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程叫做闭包,这个内函数叫做闭包函数 1.1 闭包函数语法 def outer(): a = 5 def inner(): print(a) return inner 对比正常的局部变量 局部变量的生命周期最短,在调用结束之后,立即释放. def func(): a = 5 print(a) func() print(a) 执行 1.2 闭包函数的定义 def bibao(): people = "孙仲谋" def

Python标准库:内置函数eval(expression, globals=None, locals=None)

本函数是用来动态地执行一个表达式的字符串,或者compile函数编译出来的代码对象.参数expression是一个表达式字符串,或者表示编译出来代码对象的名称:参数globals是全局命名空间,可以指定执行表达式时的全局作用域的范围,比如指定某些模块可以使用.如果本参数缺省,就使用当前调用这个函数的当前全局命名空间:参数locals是局部作用域命名空间,是用来指定执行表达式时访问的局部命名空间.如果全局命名空间参数出现,但缺省内置模块,那么会自动拷贝这个模块到全局命名空间,意味着无论怎么设置,都

Python标准库:内置函数__import__(name, globals=None, locals=None, fromlist=(), level=0)

本函数实现导入模块的功能.这个函数主要为了语句import的功能而实现的,大多数情况之下,是不需要直接使用这个函数.比如想动态地加载模块,才需要使用这个函数. 例子: import glob,os modules = [] for module_file in glob.glob("*-plugin.py"): try: module_name,ext = os.path.splitext(os.path.basename(module_file)) module = __import

globals和locals的区别

Python的两个内置函数,locals 和globals,它们提供了基于字典的访问局部和全局变量的方式. 1.locals()是只读的.globals()不是.这里说的只读,是值对于原有变量的只读.其实还可以对locals()赋值的.见下图 上面的图就可以看出了,对locals()中增加了一个b变量. 2.locals和globals的返回不同. globals返回的是当前模块的全局变量,locals返回的是局部变量.注意,locals返回的是当前所在最小命名空间的局部变量的一个拷贝.比如说在