加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2021-05-21 06:09:14 所属栏目:大数据 来源: https://www.jb51.cc
导读:一 . globals :返回当前作用域内全局变量的字典。 ? globals(){'__spec__': None,'__package__': None,'__builtins__': module 'builtins' (built-in),'__name__': '__main__','__doc__': None,'__loader__': class '_frozen_importlib.BuiltinImporter'} a
 一 . 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}

  

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读