首页 > 其他分享 >11. 名称空间

11. 名称空间

时间:2024-09-26 19:12:21浏览次数:1  
标签:11 函数 print 名称 空间 scope locals

一、什么是名称空间

  名称空间(namespace)指的是变量存储的位置,是对栈区的划分。每一个变量都需要存储到指定的名称空间中。每一个作用域都会有一个它对应的名称空间。名称空间主要分为 内置名称空间全局名称空间局部名称空间 三种。名称空间实际上就是一个字典,是一个专门用于存储变量的字典。

  • 内置名称空间 用来保存 Python 解释器内置的名字。内置名称空间 在 Python 解释器启动时产生,在 Python 解释器关闭时销毁。
  • 全局名称空间 用来保存 全局变量(不是函数内定义的名字)。全局名称空间 在 Python 文件执行时产生,在 Python 文件运行完毕后销毁。
  • 函数名称空间 用来保存 函数中的变量(在调用函数时,运行函数体代码过程中产生的函数内的名字)。局部名称空间 在调用函数时存活,函数调用完毕后销毁。
def func():
    print(x)

x = 10

func()

名称空间的加载顺序:内置名称空间 > 全局名称空间 > 局部名称空间;

名称空间的销毁顺序:局部名称空间 > 全局名称空间 > 内置名称空间;

名字的查找优先级:当前所在的位置向上一层一层查找;

二、获取名称空间

  我们可以使用 locals() 函数来获取当前作用域的名称空间。

  如果在全局作用域中调用 locals() 函数,则获取全局名称空间;如果在函数作用域中调用 locals() 函数,则获取函数的名称空间。locals() 函数返回的是一个字典。我们可以向字典中添加一个 key-value,这相当于在全局中创建了一个变量,但是不建议这样做。

a = 10

scope = locals()
print(scope,'\n')
print(type(scope), '\n')

# 向字典中添加key-value就相当于在全局中创建了一个变量
scope['b'] = 10
print('b = ',b)

  在函数内部调用 locals() 会获取函数的名称空间。

def func():
    a = 10
    scope = locals()
    print(scope,'\n')
    print(type(scope),'\n')

func()

  我们可以使用 globals() 函数在任意位置获取全局名称空间。

a = 10

def func():
    b = 10
    global_scope = globals()
    print(global_scope, '\n')
    print(type(global_scope), '\n')
    print(global_scope['a'])

    global_scope['a'] = 30

func()
print(a)

标签:11,函数,print,名称,空间,scope,locals
From: https://www.cnblogs.com/FlurryHeart/p/18434105

相关文章

  • Debian 11 安装与配置 SMB
    1.安装samba等相关服务sudoaptinstallsambasmbclientcifs-utils2.配置组及用户1)建立smb访问目录sudomkdir/mnt/scan2)建组sudogroupaddsmbscan3)建立用户sudouseradd-M-s/sbin/nologinscanner4)设置群组sudousermod-aGsmbscanscanner5)设置SMB用户密......
  • COMM1190 Data, Insights and Decisions
    COMM1190 Data, Insightsand DecisionsAssessment 1:InitialreportTelcomCochurnrate projectThe General Manager (GM) at TelcomCo is mandated to deliver a customer retention update to the Board of Directors. To prepare, the GM in......
  • Windows11电脑弹窗“找不到ole32.dll”文件该怎么办?Win11电脑系统提示“缺少ole32.dll
    在使用Windows11电脑的过程中,突然弹窗提示“找不到ole32.dll”文件,这可如何是好?别慌,这种情况通常是由于系统文件缺失或损坏导致的。下面将为您细致地介绍解决这一问题的有效办法,帮助您消除困扰。本篇将为大家带来Windows11电脑弹窗“找不到ole32.dll”文件该怎么办的内容,感兴趣......
  • ArduSub程序学习(11)--EKF实现逻辑①
    1.read_AHRS()进入EKF,路径ArduSub.cpp里面的fast_loop()里面的read_AHRS();//从AHRS(姿态与航向参考系统)中读取并更新与飞行器姿态有关的信息voidSub::read_AHRS(){//PerformIMUcalculationsandgetattitudeinfo//-------------------------------------......
  • 巧用时间换空间:解读 ArcGraph 如何灵活应对有限内存下的图分析
    导读:ArcGraph是一款云原生架构、存查分析一体化的分布式图数据库。本文将详细解读ArcGraph如何灵活应对有限内存下的图分析。01引言在图分析技术广泛应用的当下,学术界和各大图数据库厂商热衷于提升图分析技术的高性能指标。然而,追求高性能计算的过程中,常采用“以空间换时间......
  • Node-GDAL:简洁强大的Node.js地理空间数据处理库
    一、简介node-gdal是Node.js环境下的一个强大库,它是GDAL(GeospatialDataAbstractionLibrary)的原生绑定库。GDAL是一个开源的地理空间数据处理库,用于读写多种栅格和矢量地理空间数据集。node-gdal允许开发者在Node.js环境中直接利用GDAL的功能,无需额外安装GDAL即可使用。......
  • 2024年11月ACP敏捷认证报名时间及备考指南
    PMI-ACP®敏捷项目管理考试是一项国际认证,被全球范围内的企业和组织所认可。持有PMI-ACP®证可以帮助持证者在全球范围内寻找更好的职业机会,因此每年都有不少人报考PMI-ACP®考试,2024年11月PMI-ACP®考试即将到来,那么2024年11月PMI-ACP®考试报名日期是几号?怎么报名呢?一、2024年11......
  • 微软Win11新功能曝光!任务管理器显示SSD类型
    微软在最新的Windows11Beta版本22635.4225中,引入了一项新功能,任务管理器现在能够显示固态硬盘(SSD)的具体类型。此前,Windows11的任务管理器仅能识别硬盘是SSD还是机械硬盘(HDD),而更新后,用户可以更详细地了解自己的SSD是采用SATA、NVMe或其他接口类型。这项功能目前处于隐藏状态,微......
  • 洛谷题单指南-分治与倍增-P3517 [POI2011] WYK-Plot
    原题链接:https://www.luogu.com.cn/problem/P3517题意解读:有n个连续的点p1,p2,...,pn,将这n个点分成不超过m堆,每堆点连续,每一堆都缩成一个点qi,要使得原来的点p1~ps距离qi的最大值最小(最相似),求这个相似度,并计算一共分成几堆,以及每堆缩到的点qi的坐标。解题思路:要使得若干点缩到一......
  • 工业 RJ 连接器:DRP10188321011 DRP10188321012 DRP10188400001 DRP10188400002 提供
    工业以太网连接器能够实现以太网和其他工业协议的物联网连接,覆盖了从企业/云到工厂车间中传感器/执行器的所有操作层面。工业RJ系列模块化以太网插头提供符合ANSI/TIA-568.2-D的CAT6A性能。它在长达100m的应用中支持千兆位以太网协议和10G链路。可现场端接的设计便于......