2020年暑假Python复习-第一课python基础知识

一.

标识符:用来识别变量和函数等元素的名称

(1)由字母、数字和下划线组成的任意长度的字符序列1

(2)开始字符必须是字母和下划线、但不能是数字

 (3)不能是关键字

变量:指向(或引用)内存中存储的名字

赋值语句:variable = expression
expression是由数值、变量和操作符组成的、可以求得数值的有意义的组合,例如
    y = 1    radius = 1.0    x = 6 * (6 / 2) + 4    x = x + y

同时赋值:var1, var2, …, varn = exp1, exp2, …, expn(顺序是一一对应)
同时赋值还可以用来从一条语句中获取多个输入的值,例(这个就类似于C语言的语法输入多个值)

 2020年暑假Python复习-第一课python基础知识

数据类型:

(1)数字类型:整型和实型

等价于false的:【】,(){},0,None,0.0

可以通过内置函数bool()来检测bool(0.0)

(2)操作符

a.‘-‘作为一元运算符代表取相反数

b.‘‘/‘执行实数除法操作,得到的结果为实数

c."//‘‘执行整数除法操作,得到的结果为整数

d."%"执行取余数操作

二.

1.Python是动态类型语言(dynamically typed language),其特点是变量内存地址的分配和类型的检查是在运行(而非编译时)时进行的


动态类型语言的核心是对象和引用分离。例如
         a = 5           a = “hello”
a.5是内存中的一个对象,a是指向这个对象的一个引用
b.当引用a指向另外一个字符串对象时,对象5就没有引用指向它,此时Python会将这个没有引用指向的对象销毁,释放相应的内存

2.可变数据对象和不可变数据对象

(1)列表可以通过引用其元素,改变对象数组,这类对象称为可变数据对象

(2)数字和字符串不能改变对象本身,只能改变引用的指向,这类对象称为不可变数据对象

3.动态类型和函数传递

2020年暑假Python复习-第一课python基础知识

参数x是一个引用,指向a所指向的对象
如果参数是不可变的数据对象,则x和a相互独立,对参数x的操作不会影响引用a
如果参数是可变的数据对象,改变参数有可能改变原对象,因此所有指向该对象的引用都会受影响

 2020年暑假Python复习-第一课python基础知识

4.对象池机制

(1)小整数对象--小整型对象池

由于数值比较小的小整数会频繁出现,将[-5,257)之间的数,缓存在在小整型对象池中。

(2)大整数对象--通用整数对象池

Python运行环境提供了一块内存空间供大整数轮流使用,称为通用整数对象池,这也就是说大整数其实也是有缓存的。该对象池使用链表组织。
ps:对于字符串的缓存仅仅缓存一个单词的字符串

5.三种内存管理机制

(1)垃圾回收

当Python中某个对象的引用计数降为0时,说明没有任何引用指向该对象,该对象将作为垃圾被回收
频繁的垃圾回收将大大降低Python的工作效率,所以Python只会在特定条件下,自动启动垃圾回收
垃圾回收启动的条件是Python中分配对象(object allocation)和取消分配对象(object deallocation)的次数的差值高于某个阈值(如下所示,此处为700)
2020年暑假Python复习-第一课python基础知识

 (2)标记清楚

第一阶段是标记阶段,GC(垃圾回收)会把所有的活动对象打上标记
第二阶段是把那些没有标记的非活动对象进行回收

(3)分代回收

原理:存活时间越久的对象,越不可能在后面的程序中变成垃圾
回收策略:

a.Python将所有对象分为0、1和2代,新建对象为第0代
某代对象经历过垃圾回收依然存活,即被归入下一代
垃圾回收时启动对0代对象扫描,0代经过一定次数垃圾回收则会启动对1代对象的垃圾回收;1代经过一定次数垃圾回收则会启动对2代对象的垃圾回收
b.用户也可以通过gc.collect()来手动启动垃圾回收机制

6.内存池机制

a.Python中引入内存池机制,用于对小块内存的分配和释放,即Pymalloc机制
           (1)当申请的内存小于256字节时,PyObject_Malloc会在内存池中申请内存
                当申请的内存大于256字节时,PyObject_Malloc的行为将转化为malloc的行为
(2)Python对象都有其独立的私有内存池,对象间不共享内存池
(3)不用的内存放到内存池而不是返回给操作系统


相关推荐