记录学习廖雪峰 Python 教程的笔记,供参考
Python 基础
数据类型和变量
|
|
变量
变量本身类型不固定 动态语言
常量
不能变的变量
使用大写的变量名标识常亮
精确除法 /
整数除法 //
余数 %
字符编码
ASCII 码: 127个字符(一字节)
UTF-8: 可变长编码,包含ASCII编码
Unicode: 统一各国语音到一套编码里(常用两字节)
ord(s): 获取字符的整数表示
chr(编码): 编码转化为对应字符
str.encode(‘utf-8’): 字符串转化为指定编码的字节码
b’\xe4’.decode(‘uft-8’): 字节码转化为字符串
注意:计算机内存中统一使用 Unicode 编码,需要保存硬盘或者需要传输转换为UTF-8编码
格式化
同 C 语言一致:
‘%d’ 整数
‘%f’ 浮点数
‘%s’ 字符串
‘%x’ 十六进制整数
format(): 格式化方法,替换占位符
list&tuple
list:可变的有序表 []
append(‘’): 追加元素
insert(i, ‘’): 插入元素
pop(i): 删除元素
tuple:指向不可变的有序列表 (1,)
条件判断和循环
if … elif … else: …
for x in …
while 循环
dict&set
dict:字典dictionary 类似 map(key-value) 具有极快的查找速度,key 是不可变对象。
in: 判断 key 是否存在
get(): 获取元素
pop(): 删除元素
与 list 比较,dict 特点:
- 查找插入速度快,不随 key 增加变慢
- 占用大量内存,浪费内存多
list特点:
- 查找和插入随着元素的增加而增加
- 占用空间小,浪费内存少
set: 无序的 key 值集合。
set([]): 生成 set 集合
add(key): 添加元素
remove(key): 删除元素
Python 函数
内置函数
运算函数
abs() mix() max()
数据类型转化
int() float() str() bool()
自定义函数
|
|
空函数
|
|
递归函数
递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。
尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。