Python是一种解释型脚本语言,简单来讲就是不需要编译
- You: 编译是什么意思?
- Me: 编译就是把源代码(人看的)转化为机器能理解的语言
- You: 那Python不编译,机器怎么理解
- Me: 所以叫解释型语言啊,简单来讲就是需要一个解释器(Interpreter)翻译给机器看
- You: 还有…
- Me: 打住,这里我只想给自己做个笔记,方便自己翻阅,并没有想写教程,另外,文章内容针对Python3
基本语法
- 使用缩进来划分语句块,注意缩进空格数
- 多行语句通过反斜杠实现(
\
), 括号内的多行语句不需要反斜杠 - 复合赋值,
a, b = b, a+b
- Python中没有
switch...case
语句 - Python中没有
do...while
循环 - Python中有
while...else
pass
是空语句- 基本数据类型
- 数字: int, bool, float, complex
- 字符串:str
- 单引号和双引号完全相同, 三引号可以实现多行字符串
- 反斜杠(
\
)为转义符,使用r
可以让反斜杠不发生转义。如:r"\" == “\\” +
可以直接连接,*
实现重复- 负索引
a[-1]
即最后一个元素 - 字符串不能改变
- 没有单独的字符类型
- 字符串截取
str[start:end:step]
,注意是<end
而不是<=end
,左闭右开原则 - 字符串格式化:
print("I %s you %d times!" % ('love', 3000))
或者print('I {} you {} times!'.format('love', 3000))
- 列表:list
- 列表中元素类型可以不同
[]
之间,,
隔开(和Matlab不同,不能是空格或者;
)- 可负索引,
+
代表连接,*
实现重复,可被截取 - 列表元素可更改
- 列表推导式:从序列创建列表,将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素
new = [3*x for x in vec]
ornew = [3*x for x in vec if x > 3]
- 元祖:tuple
- 与列表类似,但元祖元素在小括号
()
内,,
隔开,元素不可更改 - 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用,
tup = (1,)
- 与列表类似,但元祖元素在小括号
- 字典:dict
- 元素在
{}
之间,是键 (key): 值 (value)
的集合 - 通过键来存取
- 键必须唯一且不可变
- 元素在
- 集合:set
- 无序的不重复元素序列,可以使用大括号
{ }
或者set()
函数创建集合 - 创建一个空集合必须用
set()
而不是{ }
,因为{ }
是用来创建一个空字典的
- 无序的不重复元素序列,可以使用大括号
- 数据类型转换
- 以数据类型为函数名, 如 int(3.14)
- 遍历
- 字典:使用
item()
可以同时解读关键字和对应的值for k, v in knights.items():
- 序列:使用
enumerate()
可以同时索引位置和对应的值for i, v in enumerate(['tic', 'tac', 'toe']):
- 同时遍历两个或更多的序列,可以使用 zip() 组合
for q, a in zip(questions, answers):
- 字典:使用
运算
- 除法:
/
返回浮点数,//
返回整数 %
取模,除法余数**
幂运算,如 2**3 即2的3次方- 混合运算,整型会转换为浮点型
- 逻辑运算符:and, or, not
- 成员运算符:in, not in
- 身份运算符:is, is not
常用数学函数
函数 | 描述 |
---|---|
abs(x) | 返回绝对值 |
ceil(x) | 向上取整 |
floor(x) | 向下取整 |
round(x) | 四舍五入 |
exp(x) | 求e的x次幂 |
log(x) | 求x的自然对数 |
pow(x, y) | x的y次方 |
sqrt(x) | 求x的平方根 |
max(lst) | 最大值 |
min(lst) | 最小值 |
random() | 生成[0, 1)范围内的一个实数 |
uniform(x, y) | 生成[x, y]范围内的一个实数 |
seed([x]) | 改变随机数生成器的种子seed |
shuffle(lst) | 将序列的所有元素随机排序 |
常用内建函数
数据类型 | 函数或方法 |
---|---|
字符串 str | len() split() joint() |
列表 list | len() max() min() list.append() list.insert() list.pop() list.remove() |
元组 tuple | len() |
字典 dict | len() |
集合 set | len() s.add() s.remove() s.discard() |
迭代器与生成器
迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象,从集合的第一个元素开始访问,直到所有的元素被访问完结束。
迭代器有两个基本的方法:iter()
和 next()
。
把自定义的类作为迭代器使用需要在类中实现两个方法:__iter()__
与 __next()__
StopIteration
异常用于标识迭代的完成,防止出现无限循环的情况
使用了 yield
的函数被称为生成器(generator),生成器是一个返回迭代器的函数,只能用于迭代操作。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next()
方法时从当前位置继续运行。
函数
- 参数传递:python中一切都是对象,所以严格来讲,没有传值或者引用调用,通常说传可变对象和不可变对象。可变对象:list, dict等。不可变对象:string, tuple, number等
- Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域
模块
**模块(module)**就是一个python文件(.py),模块可被导入,可被直接运行,通过__name()__
属性来区分,其值为'__main__'
时,表示模块自身运行,否则为被引入。
包(package): 管理 Python 模块。是一个目录,必须包含__init__.py
文件
错误和异常
try...except
try...except...else
面向对象
类和对象
成员变量和方法
继承和方法重写
公有和私有
Python标准库
os模块提供与操作系统相关联的函数
shutil模块提供针对日常的文件和目录管理任务
glob模块提供了一个函数用于从目录通配符搜索中生成文件列表
sys模块
re模块为高级字符串处理提供了正则表达式工具
math模块为浮点运算提供了对底层C函数库的访问
random提供了生成随机数的工具
urllib.request 用于处理从 urls 接收的数据
smtplib 用于发送电子邮件
datetime模块为日期和时间处理同时提供了简单和复杂的方法
未完待续…