空间名称与闭包函数

名称空间

名称空间 namespaces:存放名字的地方,是对栈区的划分

名称空间在栈区中分为三种,详细的划分不同的空间,不同空间可以存放相同名字的名字

内置名称空间

存放的名字:存放的python解析器内置的名字

存活周期:python解析器启动则产生,python解析器关闭则销毁

全局名称空间

存放的名字:运行顶级代码所产生的名字,不是函数内定义的以及不是python自带的名字

存活周期:python文件执行则产生,python文件运行完毕后销毁

局部名称空间

存放的名字:在调用函数时,运行函数体代码的过程中产生的函数内的名字

存活周期:在调用函数时存活,函数调用完毕后销毁

名称空间的加载顺序

内置名称空间 > 全局名称空间 > 局部名称空间

名称空间销毁顺序

局部名称空间 > 全局名称空间 > 内置名称空间

名字查找优先级

从当前位置线上一层一层查找

例如:当前在局部名称空间

局部名称空间 > 全局名称空间 > 内置名称空间

名称空间的嵌套关系

以函数定义阶段为准,与函数调用位置无关

x = 1
def func():
print(x)
def foo():
x = 222
func()
foo()
#输出结果
1

作用域

全局作用域:内置名称空间、全局名称空间

  1. 全局存活
  2. 全局有效:被所以函数共享

局部作用域:局部名称空间

  1. 临时存活
  2. 局部有效:函数内有效

闭包函数

闭包函数 = 名称空间与作用域 + 函数嵌套 + 函数对象

核心:名字的查找关系是以函数定义阶段为准

什么是闭包函数

“闭”函数是指该函数是内嵌函数

“包”函数是指该函数包含对外层函数作用域的引用(不是对全局作用域)

def f1():
x = 1
def f2():
print(x)
return f2 #返回f2的内存地址,f2函数对象 x = 111111
f = f1() #把f2的内存地址给f
f() #执行f2函数
#输出结果
1

Python 空间名称与闭包函数的更多相关文章

  1. Python 函数对象-函数嵌套-名称空间与作用域-闭包函数

    今日内容: 1. 函数对象 函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用 1.可以被引用 2.可以当做参数传给另一个函数 3.可以当做一个函数的返回值 4.可以当做容器类型的元素 2. ...

  2. Python之旅Day4 闭包函数 模块及模块倒入

    闭包函数 闭包函数就是在内部函数当中有对外部函数名字的引用 ###代码示例1### def f1(): x =1 def f2(): print(x) return f2 f=f1() f() ### ...

  3. python基础语法7 闭包函数与装饰器

    闭包函数: 1.闭包函数必须在函数内部定义 2.闭包函数可以引用外层函数的名字 闭包函数是 函数嵌套.函数对象.名称空间与作用域 结合体. # 直接传参 def func(x): print(x) f ...

  4. python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域

    一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): ...

  5. Python 的名称空间和作用域

    最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递 ...

  6. python函数之闭包函数与无参装饰器

    一.global与nonlocal #global x = 1 def f1(): global x # 声明此处是全部变量x x = 2 print(x) f1() # 调用f1后,修改了全局变量x ...

  7. Python入门之函数的嵌套/名称空间/作用域/函数对象/闭包函数

    本篇目录: 一.函数嵌套 二.函数名称空间与作用域 三.函数对象 四.闭包函数 ============================================================ ...

  8. Python之函数对象、函数嵌套、名称空间与作用域、闭包函数、装饰器

    目录 一 函数对象 二 函数的嵌套 三 名称空间和作用域 四 闭合函数 五 装饰器 一.函数对象 1.函数是第一类对象 #第一类对象的特性:# 可以被引用 # 可以当做参数传递 # 返回值是函数 # ...

  9. Python记录9:函数4:名称空间作用域+闭包函数+装饰器

    ''' 一: 名称空间namespaces     名称空间就是存放名字与值绑定关系的内存空间 二: 名称空间分为三种     内置名称空间:         1. 特点: 存放是python解释器自 ...

随机推荐

  1. 前端如何通过js判断浏览器的类型(忽略版本)web html css javascript

    每个页面浏览器会实例出一个window对象,在window对象下有一个属性navigator,navigator本身是一个对象,navigator对象上有一个属性userAgent里面包含了当前浏览器 ...

  2. Centos6.9 安装zabbix3.4 过程

    Centos6.9 安装zabbix3.4 过程 1.安装apache httpd 一开始忘记截图(略...) # yun install httpd 完成后,启动httpd服务 # service ...

  3. Vue src动态引入图片不显示问题

    使用vue动态引入图片显示失败,查看控制台,发现图片返回类型为text/html,这里我的图片是从后台服务器上获取的,如果你没有使用Vue的devServer.proxy 进行代理,可以光速移步百度 ...

  4. 帝国cms插件 解决后台修改信息时内容关键字不替换的问题

    很多站长是不是发现了帝国cms增加信息时,是有关键词替换的,这样是有利于网站优化排名. 但是在后台格式化数据之后,再去进行修改之后,对不起,内容关键字就实效了. 针对这一问题,解决方案如下: 找到 / ...

  5. Hyperledger Fabric组织的动态添加和删除

    前言 在Fabric定制联盟链网络工程实践中,我们虚拟了一个工作室的联盟链网络需求,并根据此需求分析了整个网络的架构且已经完成了一个简单 fabric 网络模型.本文将在其基础上,在 mychanne ...

  6. 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 ...

  7. echarts踩坑总结

    1,有关echarts引用的相关报错直接写这句  import * as echarts from 'echarts' 2,折线图 chartsObj = { tooltip: { trigger: ...

  8. oauth协议原理

    oauth协议关系图(如获取微信用户信息): oauth一般授权步骤:

  9. 技术管理进阶——一线Leader与大Leader的差异是什么?

    原创不易,求分享.求一键三连 ​ 前几年,因为下属的一些骚操作,Leader对我产生了误会,这导致了一些"不信任",这种不信任在短时间会让人丧失安全感,很多人会因此患得患失. 这种 ...

  10. sa-token server认证逻辑

    sa-token client登录逻辑