内置函数--global() 和 local()
发布日期:2021-05-08 23:41:53 浏览次数:24 分类:博客文章

本文共 2009 字,大约阅读时间需要 6 分钟。

 一 . globals :返回当前作用域内全局变量的字典。
 
>>> globals(){'__spec__': None, '__package__': None, '__builtins__': 
, '__name__': '__main__', '__doc__': None, '__loader__':
}>>> a = 1>>> globals() #多了一个a{'__spec__': None, '__package__': None, '__builtins__':
, 'a': 1, '__name__': '__main__', '__doc__': None, '__loader__':
}
 

 

二 .local() 函数功能返回当前作用域内的局部变量和其值组成的字典,与globals函数类似(返回全局变量)

>>> locals(){'__package__': None, '__loader__': 
, '__doc__': None, '__name__': '__main__', '__builtins__':
, '__spec__': None}>>> a = 1>>> locals() # 多了一个key为a值为1的项{'__package__': None, '__loader__':
, 'a': 1, '__doc__': None, '__name__': '__main__', '__builtins__':
, '__spec__': None}

  2. 可用于函数内。

>>> def f():    print('before define a ')    print(locals()) #作用域内无变量    a = 1    print('after define a')    print(locals()) #作用域内有一个a变量,值为1    >>> f
>>> f()before define a {} after define a{'a': 1}

  3. 返回的字典集合不能修改。

 
>>> def f():    print('before define a ')    print(locals()) # 作用域内无变量    a = 1    print('after define a')    print(locals()) # 作用域内有一个a变量,值为1    b = locals()    print('b["a"]: ',b['a'])     b['a'] = 2 # 修改b['a']值    print('change locals value')    print('b["a"]: ',b['a'])    print('a is ',a) # a的值未变    >>> f()before define a {}after define a{'a': 1}b["a"]:  1change locals valueb["a"]:  2a is  1>>>
 

 

总结: (老男孩python全栈视频教程) 

global();获取全部的全局变量,返回一个字典

local():获取指定范围内的局部变量, 返回一个字典

def m():    a = 10    print("全局变量:", globals())    print("局部变量:", locals())m()

  分析: 在m()函数内增加了一个a局部变量, 所以局部变量只有一个, 全局变量. 全局变量有很多, 都是默认的

  返回结果:

全局变量: {'__name__': '__main__', '__doc__': '内置函数', '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0291A410>, '__spec__': None, '__annotations__': {}, '__builtins__': 
, '__file__': 'D:/PycharmProjects/test/dir05/neiZhiHanShu.py', '__cached__': None, 'm':
} 局部变量: {'a': 10}

  

 

上一篇:python file文件操作--内置对象open
下一篇:内置函数 -- filter 和 map

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月14日 09时03分42秒