Python 空间名称与闭包函数
空间名称与闭包函数
名称空间
名称空间 namespaces:存放名字的地方,是对栈区的划分
名称空间在栈区中分为三种,详细的划分不同的空间,不同空间可以存放相同名字的名字
内置名称空间
存放的名字:存放的python解析器内置的名字
存活周期:python解析器启动则产生,python解析器关闭则销毁
全局名称空间
存放的名字:运行顶级代码所产生的名字,不是函数内定义的以及不是python自带的名字
存活周期:python文件执行则产生,python文件运行完毕后销毁
局部名称空间
存放的名字:在调用函数时,运行函数体代码的过程中产生的函数内的名字
存活周期:在调用函数时存活,函数调用完毕后销毁
名称空间的加载顺序
内置名称空间 > 全局名称空间 > 局部名称空间
名称空间销毁顺序
局部名称空间 > 全局名称空间 > 内置名称空间
名字查找优先级
从当前位置线上一层一层查找
例如:当前在局部名称空间
局部名称空间 > 全局名称空间 > 内置名称空间
名称空间的嵌套关系
以函数定义阶段为准,与函数调用位置无关
x = 1
def func():
print(x)
def foo():
x = 222
func()
foo()
#输出结果
1
作用域
全局作用域:内置名称空间、全局名称空间
- 全局存活
- 全局有效:被所以函数共享
局部作用域:局部名称空间
- 临时存活
- 局部有效:函数内有效
闭包函数
闭包函数 = 名称空间与作用域 + 函数嵌套 + 函数对象
核心:名字的查找关系是以函数定义阶段为准
什么是闭包函数
“闭”函数是指该函数是内嵌函数
“包”函数是指该函数包含对外层函数作用域的引用(不是对全局作用域)
def f1():
x = 1
def f2():
print(x)
return f2 #返回f2的内存地址,f2函数对象
x = 111111
f = f1() #把f2的内存地址给f
f() #执行f2函数
#输出结果
1
Python 空间名称与闭包函数的更多相关文章
- Python 函数对象-函数嵌套-名称空间与作用域-闭包函数
今日内容: 1. 函数对象 函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用 1.可以被引用 2.可以当做参数传给另一个函数 3.可以当做一个函数的返回值 4.可以当做容器类型的元素 2. ...
- Python之旅Day4 闭包函数 模块及模块倒入
闭包函数 闭包函数就是在内部函数当中有对外部函数名字的引用 ###代码示例1### def f1(): x =1 def f2(): print(x) return f2 f=f1() f() ### ...
- python基础语法7 闭包函数与装饰器
闭包函数: 1.闭包函数必须在函数内部定义 2.闭包函数可以引用外层函数的名字 闭包函数是 函数嵌套.函数对象.名称空间与作用域 结合体. # 直接传参 def func(x): print(x) f ...
- python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域
一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): ...
- Python 的名称空间和作用域
最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递 ...
- python函数之闭包函数与无参装饰器
一.global与nonlocal #global x = 1 def f1(): global x # 声明此处是全部变量x x = 2 print(x) f1() # 调用f1后,修改了全局变量x ...
- Python入门之函数的嵌套/名称空间/作用域/函数对象/闭包函数
本篇目录: 一.函数嵌套 二.函数名称空间与作用域 三.函数对象 四.闭包函数 ============================================================ ...
- Python之函数对象、函数嵌套、名称空间与作用域、闭包函数、装饰器
目录 一 函数对象 二 函数的嵌套 三 名称空间和作用域 四 闭合函数 五 装饰器 一.函数对象 1.函数是第一类对象 #第一类对象的特性:# 可以被引用 # 可以当做参数传递 # 返回值是函数 # ...
- Python记录9:函数4:名称空间作用域+闭包函数+装饰器
''' 一: 名称空间namespaces 名称空间就是存放名字与值绑定关系的内存空间 二: 名称空间分为三种 内置名称空间: 1. 特点: 存放是python解释器自 ...
随机推荐
- 前端如何通过js判断浏览器的类型(忽略版本)web html css javascript
每个页面浏览器会实例出一个window对象,在window对象下有一个属性navigator,navigator本身是一个对象,navigator对象上有一个属性userAgent里面包含了当前浏览器 ...
- Centos6.9 安装zabbix3.4 过程
Centos6.9 安装zabbix3.4 过程 1.安装apache httpd 一开始忘记截图(略...) # yun install httpd 完成后,启动httpd服务 # service ...
- Vue src动态引入图片不显示问题
使用vue动态引入图片显示失败,查看控制台,发现图片返回类型为text/html,这里我的图片是从后台服务器上获取的,如果你没有使用Vue的devServer.proxy 进行代理,可以光速移步百度 ...
- 帝国cms插件 解决后台修改信息时内容关键字不替换的问题
很多站长是不是发现了帝国cms增加信息时,是有关键词替换的,这样是有利于网站优化排名. 但是在后台格式化数据之后,再去进行修改之后,对不起,内容关键字就实效了. 针对这一问题,解决方案如下: 找到 / ...
- Hyperledger Fabric组织的动态添加和删除
前言 在Fabric定制联盟链网络工程实践中,我们虚拟了一个工作室的联盟链网络需求,并根据此需求分析了整个网络的架构且已经完成了一个简单 fabric 网络模型.本文将在其基础上,在 mychanne ...
- Exception in thread "main" java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibilit
系统环境 Ubuntu 20.04 focal 问题分析 该异常出现的原因,从谷歌上可以得到答案 one of the more common causes of this exception is ...
- echarts踩坑总结
1,有关echarts引用的相关报错直接写这句 import * as echarts from 'echarts' 2,折线图 chartsObj = { tooltip: { trigger: ...
- oauth协议原理
oauth协议关系图(如获取微信用户信息): oauth一般授权步骤:
- 技术管理进阶——一线Leader与大Leader的差异是什么?
原创不易,求分享.求一键三连 前几年,因为下属的一些骚操作,Leader对我产生了误会,这导致了一些"不信任",这种不信任在短时间会让人丧失安全感,很多人会因此患得患失. 这种 ...
- sa-token server认证逻辑
sa-token client登录逻辑