首页 > 编程语言 >python高级之名称空间和作用域

python高级之名称空间和作用域

时间:2023-12-15 22:00:38浏览次数:28  
标签:作用域 高级 python 111 名称 func 空间 全局 def

名称空间与作用域

image

补充知识

栈区 / 堆区

  • 栈区 : 存放的是变量名与变量值的内存地址映射关系

  • 堆区 : 存放的是值真正的位置

image

名称空间

引入:

1.什么是名称空间?
-名称:定义的名字 空间:存放名字的地方
-名称空间即存放名字与对象映射/绑定关系的地方。
-名称空间只是虚拟的概念。栈区才是真正存在的。

2。名称空间有包含关系吗?
-名称空间之间本质是没有包含关系的,是互相独立的。

3.为什么要有名称空间?
-有了名称空间之后,就可以在栈区中存放相同的名字,让所有的名称不冲突。

4.查找名称空间的优先级是:
-在局部作用域查找名字时,起始位置是局部作用域,所以先查找局部名称空间,如果没有找到,再去全局作用域查找,还没有找到就在内置名称空间中查找,都没有找到就会抛出异常。

5.查找顺序:局部名称空间>>全局名称空间>>内置名称空间

6.三种全称空间的个数:内置、全局1只有一个。局部可以多个。

名称空间的分类(三类)

内建名称空间(也叫内置名称空间)

存放的名字:存放的是python解释器内置的名字
存活周期:python解释器启动则产生,python解释器关闭则销毁。
示例:
#例如:我们常用的内置函数

>>> len
>>> <built-in function len>
>>> print
>>> <built-in function print>
>>> input
>>> <built-in function input>

全局名称空间

存放的是顶级名字(文件级别的名字)
存活周期:在执行文件执行时生效,文件运行完毕或文件执行期间被删除则失效

x = 1      #全局名称空间
def foo(): #全局名称空间
    y = 2
注意,"if"下面的定义的变量名都是全局的
if 1 > 0        
    z = 3        #全局
    if 3 > 0: 
        p = 555  #全局

局部名称空间

存放函数内定义的名字
存活周期: 在调用函数时临时生效,函数调用完毕失效
示例一:
def f()
    x = 222    #局部名称空间
    
f()   #函数调用结束失效

示例二:
def func(a, b):
    pass

下面

标签:作用域,高级,python,111,名称,func,空间,全局,def
From: https://www.cnblogs.com/xiao01/p/17904237.html

相关文章

  • python高级之函数对象与闭包函数
    函数对象和闭包函数函数对象1,什么是函数对象?函数对象简单理解就是将函数当变量来使用。如下图所示:定义一个函数可以简单的理解为:func=函数体内存地址函数名+()–>调用函数函数名-->函数对象,函数名不加括号此时的函数名就是函数对象函数用于赋值将函数赋值给某个变......
  • Python OpenCV的下载和安装
    为了更快速地、更简单地下载和安装PythonOpenCV,本书将从清华镜像下载和安装OpenCV-Contrib-Python库。在这个库中,除包括OpenCV-Contrib-Python库外,还包括Numpy库。Numpy库是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算。1 下载和安装OpenCV-Contrib-Python库从......
  • IGP高级特性
    最短路径优先算法  SPF 通过SPF算法影响拓扑形成最短路径树 i-SPF,增量式最短路径优先算法 SPF影响拓扑,第一次完整SPF计算,后续增量式SPF计算 -------------------------------------------------------------------------------------- RPC:根路径开销PRC:部分路由计算  ......
  • 【python基础之三元表达式】--- 三元表达式
    title:【python基础之三元表达式】---三元表达式date:2023-12-1519:34:06updated:2023-12-1519:34:00description:【python基础之三元表达式】---三元表达式cover: https://blog.csdn.net/qq_42076902/article/details/131226900三元表达式Python的三元表......
  • 【python基础之列表生成式】---列表生成式
    title:【python基础之列表生成式】---列表生成式date:2023-12-1519:37:06updated:2023-12-1519:37:00description:【python基础之列表生成式】---列表生成式cover:https://zhuanlan.zhihu.com/p/624339792前言由于之前也简述过相关列表生成式的一些内容......
  • 【python基础之生成器】---生成器
    title:【python基础之生成器】---生成器date:2023-12-1418:54:06updated:2023-12-0619:42:00description:【python基础之生成器】---生成器cover:https://home.cnblogs.com/u/dream-ze/【一】什么是生成器?-Python中的生成器是一种特殊的迭代器,可以在需......
  • 解决方案 | pywintypes.com_error: (-2147221005, '无效的类字符串', None, None) --P
     1背景importpythoncomimportwin32com.clientimportmathwincad=win32com.client.Dispatch("AutoCAD.Application")#强制打开cad,该句发生报错信息doc=wincad.ActiveDocumentdoc.Utility.Prompt("Hello!Autocadfrompywin32com.\n")msp=doc.Mode......
  • Python——Html(表格)
    <table>,<tr>,和<td>是HTML中用于创建表格的标签。<table>元素:<table>元素用于定义HTML表格。表格是由行和列组成的二维数据结构。<table><!--表格内容将在这里添加--></table><tr>元素:<tr>元素用于定义表格中的行(tablerow)。行包......
  • Python_数据规整_宽表变长表-melt
    数据规整melt:英文融化、溶解melt函数的主要作用是将DataFrame从宽格式转换成长格式columnstovaluesmelt函数是把宽表转变为长表,pivot:英文旋转,以...为中心旋转'pivot函数把长表转换成宽表columnvaluestoindex,tocolumn,tovalue两者经常用于数据的长......
  • 【python基础之迭代器】 --- 迭代器
    title:【python基础之迭代器】---迭代器date:2023-12-1318:54:06updated:2023-12-1519:10:00description:【python基础之迭代器】---迭代器cover:https://home.cnblogs.com/u/dream-ze/【一】迭代器介绍迭代器,即用来迭代取值的工具,而迭代是重复反......