空间名称与闭包函数

名称空间

名称空间 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. h5 在全屏iphonex中的适配

    iphonex 已经上线有一段时间了,作为业界刘海屏幕第一款机型,导致全屏不能正常的全屏显示了,,所以需要对iphonx 适配,下面就详细说说如何适配 先看一张适配前后的图: iphonex 提供的 ...

  2. 【Android开发】通过 style 设置状态栏,导航栏等的颜色

    <style name="test"> <!--状态栏颜色--> <item name="colorPrimaryDark"> ...

  3. 常用 adb 命令总结

    1. 显示当前运行的全部模拟器:    adb devices    2.  安装应用程序:      adb install -r 应用程序.apk    3.  获取模拟器中的文件:      a ...

  4. 在Android中区分点击和滑动操作

    转自:http://blog.csdn.net/do168/article/details/51587933 最近在写一个图片浏览安卓应用,想要弄成全屏显示,只在单击时显示工具栏和状态栏,在触摸滑动时 ...

  5. for循环打印九九乘法表

    学习目标: 熟练掌握 for 循环的使用 例题: 需求:打印九九乘法表 代码如下: // 九九乘法表 // row 为行,col为列 for(int row = 1; row < 10; row ...

  6. [MySQL]IP处理函数inet_aton()和inet_ntoa()

    INET_ATON(expr) 给出一个作为字符串的网络地址的"点地址"(如127.0.0.1)表示,返回一个代表该地址数值的整数.地址可以是4或8比特地址. mysql> ...

  7. 搭建Vue小页面

    学习链接:https://blog.csdn.net/zhenzuo_x/article/details/81013475 环境搭建: 浏览器:Chrome IDE:VS Code或者WebStorm ...

  8. python---插入排序的实现

    插入排序 思想 ​ 列表被分为有序区和无序区两个部分, 最初有序区只有一个元素, 每次从无序区选择一个元素, 插入到有序区的位置, 直到无序区变空 import random from cal_tim ...

  9. HbuilderX失焦时自动保存编辑器内容

    hbuilderX 有一个非常好用的功能:就是自动保存. 而且不需要安装什么插件,只需要在编辑器设置就可以了.接下来我们一起来设置吧: 1.打开我们的hbuilderX编辑器.在最上排选项栏里打开 & ...

  10. HCNP Routing&Switching之组播技术PIM-SM 稀疏模式

    前文我们了解了组播路由协议PIM以及PIM-DM密集模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16084310.html:今天我们来聊一聊PI ...