Review
基础知识
对象模型
- python中一切都是对象
变量
- 不需要事先声明变量名及其类型,直接赋值即可创建
- python属于强类型编程语言,数据类型将通过python解释器自动推断
- 允许多个变量指向同一个值:
- Python采用的是基于值的内存管理方法
- 相同的值在内存中只有一份,多个变量指向同一块内存地址
- 变量名规则:
- 字母或下划线开头
- 中不能有空格及标点符号
- 不能使用关键字
- 不建议使用系统内置的模块名
- 大小写敏感
- Python中的变量并不直接存储值,而是存储了值的内存地址或引用
赋值语句的执行过程:计算等号右侧的表达式,然后创建,并指向
- Python具有自动内存管理功能:自动删除不再有变量指向的值
- 使用
del
手动删除
- 使用
数字类型
- 数字是不可变对象,可以表示任意大小的数字
- 三类:整数、浮点、复数
- 整数:
- 浮点:
- 复数:
- 可在数字中间位置使用单个下划线提高数字的可读性
字符串
- 字符串属于不可变序列
- 使用多种形式实现复杂字符串
- 空字符串:
''|""
- 可换行字符串:
""" """|''' '''
- 字符串之间的连接:
+
:将两个字符串连接成为一个新的字符串*
:生成一个由其本身字符串重复连接而成的字符串
len()
- 支持转义字符
- 字符串界定符前加字母
r/R
便是原始字符串,其中的特殊字符不进行转义
运算符
- and|or
惰性求值
- 特殊说明:
- ,
不是运算符
- 不支持++|--
常用内置函数
- 迭代器
- 基本方法:
iter()
、next()
- 迭代器对象可以使用常规的for语句进行遍历
- 基本方法:
sorted()
返回排序后的新列表zip()
:- 返回一个zip对象(可转)
- 元素个数与最短的列表一致
模型的导入与使用
Python文件
__name__
序列
列表
- 有序、可变
- 增删元素时,对象自动进行拓展或收缩内存
- 列表中的数据类型可以不同
- 常用方法
- 列表元素的添加:
+
:创建一个新列表append()
:尾部追加
- 列表中包含的是元素值的引用,而非其本身
切片
- 用来原地修改
- 结合del
删除列表元素
- 切片返回的是列表元素的浅复制,左开右闭
- 浅复制:生成一个新的列表,并且把原列表元素的引用都复制到新的列表中
- 修改任何一个都会对原列表产生影响
深复制:使用copy.deepcopy()函数实现 对原列表中的元素进行递归,把所有值都复制到新列表中,对嵌套的子列表不再是复制引用 新列表与原列表相互独立,修改任何一个都不会影响原列表
列表排序
sorted()
:返回一个新列表reserse()
:原地逆序reversed()
:返回逆序序列并返回迭代器(一次性)
sum
1. 看:求 数值和 或 集合和 2. 脱:一层方括号 判断 类型匹配 再运算
列表推导式
元组
字典
读取
集合
程序控制结构
- 局部变量的查询和访问速度比全局变量略快
字符串与正则表达式
- 默认UTF8
- 在统计字符串长度时,中英文都按照一个字符对待和处理
- 字符串属于不可变序列
- Python字符串驻留机制:对于短字符串,将其赋值给多个不同对象时,内存中只有一个副本,多个对象共享该副本
字符串格式化
- format()
方法
- f''
常用方法
- 查找 - 分割 - 连接
不推荐使用+,效率低
- 其他
Python的许多内置函数也可以对字符串进行操作 切片同样适用于字符串,但仅限于读取其中的元素,不支持字符串修改
正则表达式
- re - re.sub()
函数
- 对于绝大多数情况下,在函数内部直接修改形参的值不会影响实参,而是创建一个新的变量 - 如果传递给函数的实参是可变序列,并且在函数内部使用下表或可变序列自身的方法增加或删除或修改元素时,实参也得到响应的修改 - 默认值参数的赋值只会在函数定义时被解释一次,当使用可变序列作为参数默认值时,需要谨慎 - return语句及变量作用域
lambda表达式
- 实例: