python中函数的闭包 python 函数闭包( 三 )


get_undifined(name='amy',age=14) # 打散
get_undifined(**{'a':1,'b':'hello'}) # 打散
注意两者共同使用的时候 位置参数 要在前
4 python中装饰器 与 AOP 面向切面编程
切面需求: 较为经典的有插入日志、性能测试、事务处理等
而装饰器这种设计模式 是解决这类问题的绝佳途径,可以为已经存在的对象添加额外的功能
5 python中鸭子模型
会鸭子叫的就是鸭子,不关心对象是什么类型,只关心对象的特性 。
比如众多的文件句柄,可迭代对象等具有同一类特征的不同数据对象
鸭子类型在动态语言中经常使用,非常灵活
6 Python中的作用域
python中,一个变量的作用域总是由在代码中被赋值的地方所决定的 。
Python变量的搜索顺序:
本地作用域(Local)→当前作用域被嵌入的本地作用域(Enclosing locals)→全局/模块作用域(Global)→内置作用域(Built-in)
7 python中的语法结构闭包
闭包(closure)是函数式编程的重要的 语法结构 。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性 。
当一个内嵌函数引用其外部作作用域的变量,我们就会得到一个闭包. 总结一下,创建一个闭包必须满足以下几点:
1 必须有一个内嵌函数
2 内嵌函数必须引用外部函数中的变量
3 外部函数的返回值必须是内嵌函数
8 python 的 垃圾回收机制
Python垃圾回收机制
Python GC主要使用 引用计数(reference counting)来跟踪和回收垃圾 。在引用计数的基础上,通过“标记-清除”(mark and sweep)
解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率 。
1 引用计数
PyObject是每个对象必有的内容 , 其中ob_refcnt就是做为引用计数 。当一个对象有新的引用时,它的ob_refcnt就会增加,
当引用它的对象被删除,它的ob_refcnt就会减少.引用计数为0时,该对象生命就结束了 。
2 标记-清除机制
基本思路是先按需分配,等到没有空闲内存的时候从寄存器和程序栈上的引用出发,遍历以对象为节点、以引用为边构成的图,
把所有可以访问到的对象打上标记,然后清扫一遍内存空间,把所有没标记的对象释放 。
3 分代技术
分代回收的整体思想是:将系统中的所有内存块根据其存活时间划分为不同的集合,每个集合就成为一个“代” , 
垃圾收集频率随着“代”的存活时间的增大而减?。婊钍奔渫ǔ@镁复卫厥绽炊攘?。
Python默认定义了三代对象集合,索引数越大,对象存活时间越长 。
9 python种类以及与其他计算机语言类型对比
C语言: 代码编译得到机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作–速度较快
Java,c#,python,php 其他语言: 代码编译得到字节码,虚拟机执行字节码并转换成机器码再后在处理器上执行—-速度慢
python的种类
Cpython
Python的官方版本,使用C语言实现,使用最为广泛,
CPython实现会将源文件(py文件)转换成字节码文件
(pyc文件),然后运行在Python虚拟机上 。
Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java
字节码,然后在JVM上运行 。
IronPython
Python的C#实现,IronPython将Python代码编译成C#字节
码,然后在CLR上运行 。(与Jython类似)
PyPy(特殊)
Python实现的Python,将Python的字节码字节码再编译成机器
码 。
9 python PEP8 编码规范
一 代码编排
1 缩进 。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格 。

推荐阅读