您的位置:首页 > 编程语言 > Python开发

Python 基础

2015-10-23 11:15 447 查看

动态类型



从概念上将,Python将会执行三个不同步骤去完成这个操作:

创建一个对象表示3

创建一个变量,如果它还没有被创建

将变量与新的对象3连接

实际效果如图所示:





变量总是连接到对象上,并且绝对不会连接到其他变量上,但是更大的对象可能连接到其他的对象。

变量是一个系统表的元素,拥有指向对象的连接的空间

对象是分配的一块内存,由足够的空间去表示它们所代表的值

引用是自动形成从变量到对象的指针

作用域

python 的变量名解析机制成为LEGB原则:

当函数中使用未认证变量名时,python会搜索4个区域[本地作用域L,上一层结构的def或lambda的本地作用域,之后是全局作用域G,最后是内置作用域B],并且在在第一处能够找到这个变量名的地方停下来,如果没有找到此变量名就会报错。

当函数给一个变量名赋值时,Python总是创建或改变本地作用域的变量名,除非它在函数中已经声明为全局变量global。

当在函数外给一个变量赋值时,本地作用域与全局作用域是相同的。





Import如何工作

import 执行的3个步骤:

找到模块代码

编译成位码(如果需要,比如源文件被修改)

执行模块代码来创建其所定义的对象

这三个步骤,只有模块在第一次导入时才会进行。当再次导入时,会跳过以上三个步骤,直接提取内存中已加载的对象。

类与OOP

类vs实例:类是生产实例的工厂

类vs模块:内存中特定模块只能有一个实例,类可以可以有多个实例

类接口技术:

Super 定义一个method函数以及在子类中期待一个动作的delegate

Inheritor 没有提供任何变量名,会继承Super定义的一切内容

Replacer 用自己的版本覆盖Super的method

Extender 覆盖并回调默认的method,从而定制Super的method

Provider 实现Super的delegate方法预期的action方法

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: