Python 基础

动态类型

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

  1. 创建一个对象表示3
  2. 创建一个变量,如果它还没有被创建
  3. 将变量与新的对象3连接

实际效果如图所示:

image

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

  • 变量是一个系统表的元素,拥有指向对象的连接的空间
  • 对象是分配的一块内存,由足够的空间去表示它们所代表的值
  • 引用是自动形成从变量到对象的指针

作用域

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

  • 当函数中使用未认证变量名时,python会搜索4个区域[本地作用域L,上一层结构的def或lambda的本地作用域,之后是全局作用域G,最后是内置作用域B],并且在在第一处能够找到这个变量名的地方停下来,如果没有找到此变量名就会报错。
  • 当函数给一个变量名赋值时,Python总是创建或改变本地作用域的变量名,除非它在函数中已经声明为全局变量global。
  • 当在函数外给一个变量赋值时,本地作用域与全局作用域是相同的。

image

Import如何工作

import 执行的3个步骤:

  1. 找到模块代码
  2. 编译成位码(如果需要,比如源文件被修改)
  3. 执行模块代码来创建其所定义的对象

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

类与OOP

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

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

类接口技术:

  • Super 定义一个method函数以及在子类中期待一个动作的delegate
  • Inheritor 没有提供任何变量名,会继承Super定义的一切内容
  • Replacer 用自己的版本覆盖Super的method
  • Extender 覆盖并回调默认的method,从而定制Super的method
  • Provider 实现Super的delegate方法预期的action方法
原文地址:https://www.cnblogs.com/hotbaby/p/4903877.html