Reference
The Official Python3 Tutorial
Python3-Runoob.com
UTF-8(Universal Character Set/Unicode Transformation Format)8位元:针对Unicode(统一编码)的一种可变长度字符编码,即数字和自负之间的逻辑映射的概念编码。最致命的字符集ASCII
语言参考手册
词法分析
标识符和关键字
关键字
关键字 即预定义标识符,是作为保留字的标识符,不可用作普通标识符。
class # 类 应用于面向对象编程语言,描述所创建对象的属性和方法
def # 定义函数方法
保留的标识符类
某些标识符类(除了关键字)具有特殊含义,其命名模式以下划线开头和结尾:
__*__ # 系统定义的名称,简称为dunder(double underscore),这些名称由解释器及其实现(包括标准库)定义
__init__(self) # 一个特殊的类实例方法,称为构造方法/函数。每创建一个类的实例对象,Python解释器会自动调用它,一般用来对实例属性初始化。必须包含`self`且其作为第一个参数,指被创建的类实例本身
数据模型
对象、值和类型
标准类型层级结构
Python内置类型列表
- 可调用类型:此类型可以被应用于函数调用操作
-
- 类
特殊方法命名
基本定制
函数
lambda arguments: expression # 匿名函数:将参数传入表达式并返回结果
5/7种标准/基本数据类型
类别 | 数据类型 | 可变形 | 有序性 | 元素要求 |
---|---|---|---|---|
1 数值型 | int/float/complex -3/-3.14/2+3j | 不可变 | - | - |
2 序列型 | str/list/tuple/range | list可变,其他不可变 | 有序 | range整数,其他任意类型 |
3 映射型 | dict | 可变 | 无序 | 键不可变,值任意 |
4 集合型 | set/frozenset | set可变,另不可变 | 无序 | 元素不可变(元素不能是可变元素如list) |
5 布尔型 | bool | 不可变 | - | - |
6 二进制型 | bytes/bytearray | 不可变/可变 | 有序 | 0-255整数 |
7 空类型 | NoneType | - | - | - |
总结:
- 只有list、dict值、集合可变,其他不可变
- 序列型有序,集合/映射无需
1. 数值类型 Numeric Types
- int 证书
- float 浮点数
- complex 复数,如3+5j
2. 序列类型
str 字符串
用引号扩起来
方法
- replace()方法
str.replace(old, new[, max])
将字符串中旧字符串替换成新字符串,可设置替换不超过最大次数 - split()方法:通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个子字符串。返回分割后的字符串列表
str.split(str="", num=string.count(str)) # str -- 分隔符,默认为所有的空字符,包括空格、换行/回车(\n)、制表符/tab(\t)等;num -- 分割次数,默认为-1,即分隔所有
- title()方法:返回标题话字符串,所有单词都是以大写开始,其余字母均为小写
运算符
r
或 R
原始字符串
r'\n' # 字面意思
R'\n' # 等价于\\n即\n
'\n' # 转义字符换行
list 列表
- 格式:
[1, "a", 'test', 1]
值可重复 - 常用操作:索引从0开始
.append()
在列表末尾添加新对象。浅拷贝,追加的是对象的引用,随原对象变化而变化
tuple元祖
元素不变,除非包含可变元素如列表
3. 映射类型 Mapping Type
dict字典
{'key1': value1, 'key2': value2}
可变容器模型,键唯一不可变,值可存储任意类型对象。以关键字为索引
dict.keys()
返回一个视图对象dict_keys(['key1', 'key2']
),不是列表,不支持索引,可用list()
转换为列表。(‘key1’ in deit.keys)
访问字典里的值dict['key1']
添加元素dict['key'] = value
4. 集合类型 Set Type
集合
Python 中的集合(Set)是一种无序、可变的数据类型,用于存储唯一(元素不重复)的元素。
5. 布尔类型 Boolean Type
- bool 布尔值, True或False
6. 二进制类型 Binary Types
7. 空类型 Non Type
python标准库
文本处理服务
re — 正则表达式操作
- findall()方法:对string返回一个不重复(不同索引位的切片)的pattern的匹配列表。
re.findall(pattern, string, flags=o) # pattern -- 匹配的正则表达式;string -- 要匹配的字符串;flags -- 标志位用于控制正则表达式的匹配方式,如是否区分大小写、多行匹配等
正则表达式(pattern)
1 .
匹配除换行符\n以外的任意一个字符
2 *
前面的字符出现0次或以上
3 .*
贪婪,匹配从符号前开始到后面未结束的最长所有内容
4 .*?
非贪婪,遇到开始和结束旧进行截取,中间没有字符也会进行截取
5 (.*?)
非贪婪,同4,只保留括号里内容
加密服务
hashlib — 安全哈希与消息摘要
针对不同的安全哈希(现代术语)和消息摘要(旧称)算法实现了一个通用的接口。包括MD5算法
# 哈希对象具有下列方法 hash.
update(data) # 用bytes-like object字节类对象来更新哈希对象
digest() # 返回当前已传给 update() 方法的数据摘要
hexdigest() # 类似于 digest() 但摘要会以两倍长度字符串对象的形式返回,其中仅包含十六进制数码。 这可以被用于在电子邮件或其他非二进制环境中安全地交换数据值。
通用操作系统服务
os — 多种操作系统接口
本模块提供了一种使用与操作系统相关功能的便捷式途径。
# os.
getcwd() # 返回表示当前工作目录的字符串
time — 时间的访问和转换
函数功能
# time.
sleep(secs) # 暂停执行secs秒,常用于等待元素
time() # 返回以float浮点数表示的从epoch(时间开始的点,取决于平台)开始的描述的是时间值
logging — 日志记录设施
# logging.
basicConfig(**kwargs) # filename 使用指定文件名;logging 指定日志级别 CRITICAL > ERROR > WARNING > INFO > DEBUG;format 指定格式字符串
Logger(__name__) # 返回具有指定名称的日志记录器
exception(msg, *args, **kwargs) # 在日志中记录异常信息,此方法只能从异常处理程序调用
开发工具
unittest — 单元测试框架
assert断言:判断结果pass或fail
第三方库
pytest — 测试框架
常用注释
# 执行测试用例
pytest # pytest文件名/或进入目录下运行Pytest,执行某个目录下所有的用例
pytest *_test.py 或 pytest test_*.py # 执行某个.py文件下的测试用例
python -m pytest # 运行当前目录下的所有测试用例文档
pytest 文件名::类名::方法名 # 节点运行,仅运行某个.py文件/模块中的某个函数或方法
pytest -x 有fail就停止执行
---常用---
pytest -v 显示用例名称,不限时print内容
pytest -s 显示print内容
pytest --maxfail=3 fail等于3个时停止执行
pytest -sv -m "demo or smoke" 执行标签包含demo或smoke的用例
pytest -sv -m "demo and smoke" 执行标签同时包含demo和smoke的用例
Pandas库
Pandas是一个强大的分析结构化数据的工具集,使用基础是Numpy(提供高性能的矩阵运算);勇于数据挖掘和数据分析,同时也提供数据清洗功能
Series
它是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。
DataFrame
DataFrame是Pandas中的一个表格型数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame既有行索引也有列索引,可以被看做是由Series组成的字典。
结构:`DataFrame([data, index, columns, type, copy])
–\–
random库
提供各种伪随机数,随机种子seed=()
随机整数:randint(a, b) #[a, b]
randrange(a, b, step) #[a, b)
随机浮点数:random() #[0.0, 1.0)
uniform(a, b) #[a, b]
序列用函数:choices(seq)
choices(seq, weights=None, k)
shuffle(seq) #返回随机排列序列
sample(pop, k) #return list
概率分布-高斯分布:gauss(mean, std)
collections库
项目
#--> iterate through each and store in dictionary 依次遍历并存入字典
sections_dictionary = {} # 创建一个新的字典
iterative = 0 # 遍历次数初始化
for section in cleaned_sections: # 遍历已删除对话文本中的每个段落
iterative += 1 # 遍历段落次数自增
for char in characters: # 遍历角色
if char in section: # 如果角色出现在段落中
if str(iterative) in sections_dictionary.keys():
sections_dictionary[str(iterative)].append(char) # 新建后遍历每段中新增角色名作为列表元素
else:
sections_dictionary[str(iterative)] = [char] # 新增键值对(遍历次数:角色名称)