内置函数--global() 和 local()

前端之家收集整理的这篇文章主要介绍了内置函数--global() 和 local()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
 一 . globals :返回当前作用域内全局变量的字典。
 
>>> globals()
{'__spec__': None,'__package__': None,'__builtins__': <module 'builtins' (built-in)>,'__name__': '__main__','__doc__': None,'__loader__': <class '_frozen_importlib.BuiltinImporter'>}
>>> a = 1
>>> globals() #多了一个a
{'__spec__': None,'a': 1,'__loader__': <class '_frozen_importlib.BuiltinImporter'>}
 

 

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

复制代码

>>> locals()
{'__package__': None,'__loader__': <class '_frozen_importlib.BuiltinImporter'>,'__spec__': None}

>>> a = 1

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

复制代码

  2. 可用于函数内。

复制代码

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

    
>>> f
<function f at 0x03D40588>
>>> 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"]:  1
change locals value
b["a"]:  2
a is  1
>>> 
 

 

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

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

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

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

m()

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

  返回结果:

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

  

 

猜你在找的Python相关文章