求学者

Python 基础(廖雪峰版)

记录学习廖雪峰 Python 教程的笔记,供参考

Python 基础

数据类型和变量

1
2
3
4
5
整数
浮点数
字符串
布尔值
空值(None

变量

变量本身类型不固定 动态语言

常量

不能变的变量
使用大写的变量名标识常亮

精确除法 /
整数除法 //
余数 %

字符编码

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 特点:

  1. 查找插入速度快,不随 key 增加变慢
  2. 占用大量内存,浪费内存多

list特点:

  1. 查找和插入随着元素的增加而增加
  2. 占用空间小,浪费内存少

set: 无序的 key 值集合。

set([]): 生成 set 集合
add(key): 添加元素
remove(key): 删除元素

Python 函数

内置函数

运算函数
abs() mix() max()
数据类型转化
int() float() str() bool()

自定义函数

1
2
def funcname():
return 1

空函数

1
2
def funcname():
pass

递归函数

递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。

尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。