一、命名空间、作用域、LEGB法则、

1.命名空间和作用域 :

  命名空间:变量名称与值的映射关系

  作用域:变量作用的区域,即范围。

  注意:class/def/模块会产生作用域;分支语句,循环语句,异常处理语句不会产生新的作用域。

2.作用域的类型区分:

命名空间:变量名称与值的映射关系

作用域:变量作用的区域,范围。

作用域分类型:

  局部作用域:Local 简称 L

  嵌套作用域:Enclosing 简称 E

  全局作用域: Global 简称 G

  内置作用域:Builtin 简称 B

  

3、LEGB法则:局部作用域 > 嵌套作用域 > 全局作用域 > 内置作用域

    

4.局部作用域变量的特点:

  局部变量只能在局部访问

  函数运行,开辟栈帧,在函数栈帧存活期间,访问局部变量,可以访问得到,如果函数栈帧销毁,则所有数据对象销毁。

5.局部作用域内修改全局变量:

  需要在局部作用域内生成全局变量

    

当在局部作用域内修改全局变量时,如果全局变量为不可变类型,需要使用global 生命全局变量,才可以修改;如果全局变量为可变类型,可以直接修改。

6.总结:

  命名空间与作用域

  作用域类型:LEGB

  LEGB法则

  局部作用域内修改全局变量

  可变类型:直接修改

  不可变量:global

  在局部修改全局的:global

  在局部修改嵌套的:nonlocal

二、垃圾回收机制

1.基础概念理解:

  内存空间的申请与回收是非常耗费精力的事情,且存在极大的危险性,稍有不慎就有可能引发内存溢出问题,好在 Cpython 解释器提供了自动的垃圾回收机制来帮我们解决了这件事。 Python 的垃圾回收机制 ( 简称GC ) 主要采用的是引用计数为主、标记清除与分代回收为辅的垃圾回收策略

2.引用计数:

  值被多次引用:不会在内存中重复创建数据,而是引用计数器+1,当对象被销毁时,引用计数器-1,如果引用计数器为0,在内存中进行删除销毁(暂时不考虑其他特殊的情况)。

例:

      

        

        

3.标记清除:

  为了解决循环引用的问题,我们引入了标记清除,只针对那些可能才在循环引用的对象,进行特殊处理,例如:列表、元组、字典、集合。

  当这些类型中引入另外一个,并且只有他们互相引用,那么就给标记清除。

          

4.分代回收:

  对标记清除要进行优化,将那些可能存在循环引用的对象拆分,拆分为3个不同的区域,称为:0/1/2(青年代、中年代、老年代),

  0:当区域内对象个数阈值达到700时,才执行一个0代的扫描检查。

  1:当0代(青年代)扫描次数超过10次,则执行一个1代扫描检查。

  2:当1代(中年代)稻苗次数超过10次后,则执行一次2代的扫价差。

5.总结:

  垃圾回收机制(GC机制)

  以引用计数为主,标记清除和分代回收为辅

 

最新文章

  1. 记lrd的高二上学期第五次调研考试
  2. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理8
  3. JS 判断当前使用浏览器名及版本
  4. Socket通信(转)
  5. 深入理解CRITICAL_SECTION
  6. L0、L1与L2范数、核范数(转)
  7. php 删除文件夹及文件
  8. MVC-ActionResult解说
  9. 探究ListView 的缓存机制
  10. DB2 VC++ 中连接字符串
  11. 实现简单的手写涂鸦板(demo源码)
  12. dubbo源码—dubbo简介
  13. Ueditor1.3.6 setContent的一个bug
  14. Spring Boot学习总结四
  15. C#基础第五天
  16. vim YouCompleteMe 遇到的问题及解决
  17. weapp-mobx
  18. 薛兆丰吴军何帆曾鸣万维刚李笑来罗永浩等得到APP专栏作者的书23本
  19. 图片路径中含有中文在jsp下不能正常显示的问题
  20. Lua基本语法-lua与C#的交互(相当简单详细的例子)

热门文章

  1. 百闻不如一试——公式图片转Latex代码
  2. Nginx对代理HTTP资源的限制访问
  3. adb shell 查看当前与用户交互的 activity
  4. MySQL——获取元数据
  5. yield表达式 python语法
  6. WEB漏洞——XSS
  7. Python - 面向对象编程 - 实战(5)
  8. Golang入门学习(二):控制分支
  9. 通过mstsc复制粘贴失败需要重新启动RDP剪切板监视程序rdpclip.exe
  10. VMware ESXi 7.0 U2 SLIC 2.6 & Unlocker 集成 Intel NUC 网卡、USB 网卡和 NVMe 驱动