栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python笔记005 - 命名空间

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python笔记005 - 命名空间

Python笔记005 - 命名空间 1.介绍:

命名空间(namespace),指的是变量存储的位置,每一个变量都需要存储到指定的命名空间当中

每一个作用域都会有一个它对应的命名空间

全局命名空间,用来保存全局变量。函数命名空间用来保存函数中的变量。

命名空间实际上就是一个字典,是一个专门用来存储变量的字典。

locals( ) 用来获取当前作用域的命名空间

  • 如果在全局作用域中调用 locals( ) ,则获取全局命名空间;
  • 如果在函数作用域中调用 locals( ) ,则获取函数命名空间;

返回的是一个字典。

2.在全局作用域调用 locals() 会获取到全局命名空间:
print(locals())
# 可以通过locals()[key]来查找想要的数据
def fn(a:int,b:bool,c:str='hello') -> str:
  '''
  这里是文档字符串部分:
  author:paul
  date:2022-05-06
  函数的作用:
  函数的参数:
  
  '''
  return 10 


a = 20 
b = 1111 
print(locals())
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_impornal.SourceFile0>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': '/Users/pamo02.py', '__cached__': None, 'fn': , 'a': 20, 'b': 1111}
print(locals()['a'])
print(a)
# 20
# 20

在 locals( ) 字典中添加键值对就相当于在全局作用域中创建了一个变量(了解即可)。

a = 20 
b = 1111 
locals()['d'] = 'abc'
print(d)
# abc
3.在函数内部调用 locals() 会获取到函数的命名空间:
a = 100
b = 'ace'
def fn():
    # 在函数内部调用 locals() 会获取到函数的命名空间
    scope = locals() 
    print(scope)


def fn1():
    c = 77 
    d = 23 
    print(c + d)
    scope = locals() 
    print(scope)

fn()
# {}
# 这里输出为空
# 因为在该函数内部没有变量
fn1()
# 100
# {'c': 77, 'd': 23}
# 其中 100 是函数自身打印的结果
# {'c': 77, 'd': 23} 就是在该函数fn1里面存在的变量

在 locals( ) 字典中添加键值对就相当于在函数作用域中创建了一个变量(了解即可)。

相较于 在函数作用域中如何访问全局作用域 一样,那如何在函数作用域访问全局作用域的命名空间?

globals( )

a = 100
b = 'ace'
def fn():
    d = 'add'
    # globals() 函数可以用来任意位置获取全局命名空间
    global_scope = globals()
    print(global_scope)


fn()
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x1010b71f0>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': '/Usemo02.py', '__cached__': None, 'a': 100, 'b': 'ace', 'fn': }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928834.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号