Python期末复习笔记
author:Nakiri
本文存在部分知识点的遗漏,以个人使用习惯进行整理,仅作期末复习使用!!
第一章 Python概述
- Python的特点
- 简洁。实现同样的功能时相对于其他语言的代码量最少。
- 语法优美
- 简单易学
- 开源
- 可移植性好
- 拓展性好
- 类库丰富
- 通用灵活
- 模式多样,既支持面向对象,又支持面向过程(语法层面)
- 良好的中文支持
- Python 2.x与Python 3.x兼容性不强
- 执行效率不高
- 导入与使用模块
- 可以使用
import 模块1, 模块2……
的方法进行导入,也可以使用from 模块名 import *
的方法导入模块的全部内容。由于第二种方法会降低代码的可维护性,建议使用第一种方法 - 调用模块中的内容,使用
模块名.函数
或模块名.变量
的方法
- 可以使用
- 模块、包、类库的一一
- 模块是最基础的代码组织方式,每个包含有组织的代码片段的.py文件都是一个模块,文件名就是模块名
- 包以类似目录的结构组织模块文件或子包,简单来说,一个包含_init_.py文件的目录就是一个包。
包中必须含有_init_.py文件
,并可以有多个模块和子包 - 库是一个抽象的概念,它是指具有相关功能的模块的集合
第二章 Python基础
注释
单行注释:
# 注释内容 # 若单行注释与代码共占一行,注释和代码之间至少有两个空格
多行注释
""" 主要用于说明函数或类的功能,也被称为说明文档 通过__doc__属性可以获得Python对象的说明文档以下代码举例打印print函数的说明文档 """ print(print.__doc__)
缩进
- 输入空格是Python 3首选的缩进方法。一般使用4个空格表示一级缩进。
- Python 3不允许混合使用Tab键和空格键
- 代码的缩进量不同会导致代码语义的改变,同一代码块的每行代码必须具有相同的缩进量,不允许出现无意义或不规范的缩进
语句换行
建议每行代码不超过79个字符
Python会将圆括号、中括号和大括号中的行进行隐式连接,实例如下
string = ("连接语句1""连接语句2""……""连接语句n")
原本由圆括号、大括号或中括号包裹的语句在换行时不需要另行添加圆括号
标识符规则
由字母、数字、下划线组成,且不能以数字开头
标识符区分大小写。比如Nakiri和nakiri是两个不同的标识符
不允许使用关键字作为标识符
建议:
- 见名知意
- 命名规范:常量名使用大写的单个单词或下划线连接的多个大写单词。模块名、函数名使用小写的单个单词或由下划线连接的多个小写单词
关键字
[‘False’, ‘None’, ‘True’, ‘__peg_parser__’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
数据类型:
数字类型:整型(int)、浮点型(float)、复数类型(complex)、布尔类型(bool)
布尔类型是int类型的子类,只有True和False
字符串:可以由单引号、双引号、三引号包裹
'字符串1' "字符串2" '''字符串3'''
列表:多个元素的集合,可以保存任意数量、任意类型的元素,且可以被修改
['列表元素1','列表元素2','列表元素3']
元组:多个元素的结合,可以保存任意数量、任意类型的元素,但不可以被修改
('元组元素1','元组元素2','元组元素3')
集合:多个元素的集合,可以保存任意数量、任意类型的元素,但是集合中的元素无序且唯一
{'集合元素1','集合元素2','集合元素3'}
字典:是键值对,键不能重复
{"key1":"value1","key2":"value2","key3":"value3"}
输入输出函数
input(“输入提示语句”)
print(*objects, sep = ’ ', end = ‘\n’, file = sys.stdout)
- objects:表示输出对象,若有多个需要用逗号分隔
- sep:用于设定分隔符,默认空格
- end:设定输出结尾,默认换行
- file:数据输出的文件对象
整型:
4种计数方式
5 # 十进制 0b011 # 二进制,以0b或0B开头 0o5 # 八进制,以0o或0O开头 0x5 # 十六进制,以0x或0X开头bin(x) # 将x转换为二进制数 oct(x) # 将x转换为八进制数 int(x) # 将x转换为10进制数 hex(x) # 将x转换为16进制数
python中表示无穷大是inf,无穷小是-inf
复数类型
- 由实部和虚部组成,一般表现形式为
实部 + 虚部
- 由实部和虚部组成,一般表现形式为
Python中常见的布尔值为false的数据:
- None
- False
- 任何数字类型的0
- 任何空序列
- 空字典
数字类型转换
int():将数字转换为整型
float():将数字转换为浮点型
complex():将数字转换为复数类型
运算符
- /:除,获取商
- //:整除,两个数相除,获得商的整数部分
- ** :取幂,比如a**b的意思是取a的b次幂
逻辑运算符
- and:双目运算符,与
- or:双目运算符,或
- not:单目运算符,非
Python中字符串的类型是str类型
第三章 流程控制
条件语句
if语句语法格式
if 判断条件:代码段
if-else语句语法格式
if 判断条件:代码段1 else:代码段2
if-elif-else语句语法格式
if 判断条件1:代码段1 elif 判断条件2:代码段2 elif 判断条件3:代码段3 else:代码段4
if嵌套语法格式
if 判断条件1:代码段1if 判断条件2:代码段2
循环语句
while语句语法格式
while 循环条件:代码段
for语句语法格式
for 临时变量 in 目标对象:代码段 """ for语句也可以和range()函数搭配,range函数可以生成一个由整数组成的可迭代对象,以下示例 """ for i in range(5):print(i) # 打印结果是0-4
跳转语句
- break语句
- continue语句
第四章 字符串
单引号和双引号用于定义单行字符串,三引号用于定义多行字符串
Python3种格式化字符串的方法
%格式化
常见的格式符
格式符 格式说明 %c 格式化为字符 %s 格式化为字符串 %d 格式化为整数 %u 格式化为无符号整型 %o 格式化为八进制数 %x 格式化为十六进制数 %f 格式化为浮点数,可以指定精度 使用%进行格式化的格式
format % values # format表示一个字符串 # values表示单个或多个真实数据
format()方法格式化
语法格式
str.format(values) # str为字符串,其中包含单个或多个为真实数据占位的符号{} # values是单个或多个待替换的真实数据 # 以下为示例use = "{}天下第一可爱!" print(use.format("步束")) """ 大括号中可以填索引值,当有多个真实值时会按照索引来进行替换 也可以填替换值名称,当在方法中填入真实值时,只需要按照 替换值名称=真实值名称 来填写就可以 """use1 = "世间{food}、{book}、{girl}不可辜负!" print(use1.format(food="美食",book="好书",girl="美少女"))
使用f-string格式化
格式
f('{变量名}') 或者 F('{变量名}')# 示例 use = "步束" print(f'{use}天下第一!')
字符串的常见操作
查找find()函数
str.find(sub,start,end) # sub:要查找的子串 # start:开始索引,默认为0,可以不写 # end:结束索引,默认为字符串长度,可以不写
替换replace()函数
str.replace(old,new,count) # old:要被替换的旧子串 # new:新子串 # count:替换旧子串的次数,默认全部替换,可以不写
分割split()函数
str.split(sep=None, maxsplit=-1) # sep:分隔符,默认是空格 # maxsplit:分割次数,默认是-1,表示不限制次数分割,可以省略。
拼接join()函数
str,join(interable) # interrable:表示连接字符串的字符symbol = '*' world = 'Python' print(symbol.join(world)) # 打印结果:P*y*t*h*o*n
删除函数
# 移除字符串头部和尾部的指定字符 str.strip(指定字符) # 移除字符串头部的指定字符 str,lstrip(指定字符) # 移除字符串尾部的指定字符 str.rstrip(指定字符)# 不指定指定字符,默认是空格
大小写转换函数
# 小写全部转换为大写 str.upper()# 大写全部转换为小写 str.lower()# 第一个字母转换为大写形式 str.capitalize()# 每个单词的首字母转换为大写 str.title()
字符串对齐
# 返回长度为width的字符串,原字符居中显示 str.center(width,fillchar) # fillchar:参数width指定的长度大于原字符串长度大于原字符串长度时填充的字符,默认空格# 原字符左对齐显示 str.ljust(width,fillchar)# 原字符右对齐显示 str.rjust(width,fillchar)
第五章 组合数据类型
根据组合数据类型可以分为3类:序列类型、集合类型和映射类型
序列类型
- 支持双向索引:正向递增索引和反向递减索引
- 主要有3种:字符串(str)、列表(list)、元组(tuple)
集合类型
- 特征
- 确定性:集合中每个元素都是确定的
- 互异性:集合中每个元素都是不一样的
- 无序性:集合中的元素没有顺序
- 要求放入集合的必须是不可变类型的
- 整型、浮点型、字符串类型和元组属于不可变类型
- 列表、字典和集合是可变类型
- 特征
映射类型
唯一符合的是字典(dict)
列表
创建
- 使用[]创建
- 使用list()函数创建列表
列表中的元素可以是整型、浮点型、字符串等基本类型,也可以是列表、元组、字典等组合类型,还可以是其他自定义类型,元素使用逗号分隔
isinstance()函数可以判断对象是否为可迭代对象
访问列表元素
以索引方式访问列表元素
list[n]
以切片方式访问列表元素
list[m:n:step] # 获得按步长step获取列表list中m~n对应的元素(不包括list[n]),step默认是1,mn可以省略
在循环中访问列表元素
use = ['n','a','k','i','r','i'] for li in use:print(li,end = ' ')# 利用in 和 not in可以判断元素是否存在于列表
添加列表元素
append()方法
list.append(n) # 在列表末尾添加新的元素
extend()方法
list1.extend(list2) # 在列表末尾一次性添加另一个列表中的所有元素
insert()方法
list.insert(索引位置,新元素) # 按照索引将新元素插入列表的指定位置
元素排列
sort()方法
list.sort(key = None, reverse = False) # key:指定排序规则 # reverse:False表示升序排序,True表示降序排列
sorted()方法
sorted(list) # 按升序排列列表元素,该方法的返回值是升序排列后的新列表,排列操作不会对原列表产生影响
reverse()方法
list.reverse() # 用于逆置列表
删除列表元素
del语句
use = ['n','a','k','i','r','i'] del use[0] # 删除索引为0的元素 del use # 删除整个列表
remove()方法
list.remove(需要匹配的元素)
pop()方法
list.pop(n) # 移除列表中索引为n的元素,n默认为列表中最后一个元素的索引
clear()方法
list.clear() # 清除列表中的元素
列表推导式
[exp for x in list] # exp:用于在每层循环中对列表中的元素进行运算list = [1,2,3,4,5,6,7] list = [data*data for data in list]# 带有if的列表推导式 list = [data for data in list if data > 4]# 嵌套for循环语句的列表推导式 l1 = [1,2,3] l2 = [4,5,6] l3 = [x + y for x in l1 for y in l2] # l3:[5, 6, 7, 6, 7, 8, 7, 8, 9]
元组
- 元组的表现形式是包含在一对圆括号中
- 内置的tuple()可以创建一个空元组
- 若元组中只有一个元素,它后面的逗号不能省略
- 与列表相同,支持以索引、切片和循环的方式访问元组
- 元组是不可变类型,其中元素不能修改,不支持添加元素、删除元素和排序操作
集合(set)
由大括号包裹,逗号分隔元素
集合中的元素无序但必须唯一
常见操作:
常见方法 说明 add(x) 向集合中添加元素x,x若存在则不做处理 remove(x) 删除集合中元素x,若x不存在抛出异常KeyError discard(x) 删除集合中元素x,若x不存在不做处理 pop() 随机返回集合中一个元素,同时删除该元素。若集合为空,抛出KeyError clear() 清空集合 copy() 复制集合 isdisjoint(T) 判断集合与集合T是否没有相同的元素,没有返回True,有返回False 集合推导式
{exp for x in set if cond}
字典
语法格式
{key1:value1,key2:value2,key3,value3}
字典访问
字典变量[键] 字典变量.get(key) dic.keys() # 获取所有键 dic.values() # 获取所有值 dic.items() # 获取所有元素
添加元素
# 当字典中不存在某个键时 字典变量[键] = 值#使用upload()也可以实现以上代码 dic.update(key = value)
修改元素
字典变量[键] = 值 dic.update(key = value)
删除元素
# pop()方法删除字典中的指定元素,若删除成功,该方法返回目标元素的值 dic.pop(key)# popitem()随机删除字典中的元素,返回被删除的元素 dic.popitem()# clear()方法清空字典中的元素 dic.clear()
字典推导式
{new_key:new_value for key,value in dic.items()}# 可以快速交换字典中的键和值 dic = {'name':'nakiri','age':'20'} dic = {value:key for key,value in dic.items()}
运算符
- *运算符:字符串、列表、元组可以与整数进行乘法运算,运算后产生的结果为原数据的整数倍的拼接
第六章 函数
定义函数
def 函数名 ([参数列表]):['''文档字符串''']函数体[return语句]
参数的打包
可以再形参前面添加“*”或“**”:
- 如果是“*”,那么它可以接收以元组形式打包的多个值
- 如果是“**”,那么它可以接收以字典形式打包的多个值
def test(*args):print(args)test(1,2,3,4,5)def test2(**args):print(args)test2(name='nakiri',age=20)
参数的解包
use = (1, 2, 3, 4, 5) def test(a, b, c, d, e):print(a, b, c, d, e)test(*use) # 打印结果:1 2 3 4 5
LEGB原则:
- L:局部作用域
- E:嵌套作用域
- G:全局作用域
- B:内置作用域
- 搜索变量是按照LEGB顺序依次搜索变量
global关键字:可以将局部变量声明为全局变量
global 变量
nonlocal关键字:在局部作用域中修改嵌套作用域中声明的变量
匿名函数
匿名函数无需定义标识符
语法:
lambda <形式参数列表> : <表达式># 定义一个匿名函数,并将它返回的函数对象赋值给变量temp temp = lambda x : pow(x, 2) print(temp(10)) # 打印结果:100
第七章 文件与数据格式化
文件的打开与关闭
打开文件可以通过内置的open()打开:
open(file, model = 'r', encoding = None) # model:r表示以只读打开,w表示以只写打开,a表示以追加模式打开# encoding:设置编码格式
关闭文件
# 可以通过内置的close()关闭文件 file.close# 也可以通过with语句 with open('a.text') as f:pass # 一些操作 # a.text文件使用完成后,会自动关闭文件
文件的读写
读取文件
read(n=-1) # 从指定文件中读取指定字节的数据,若n为-1,表示一次返回文件中所有的数据readline() # 从指定文件中读取一行数据readlines(hint-1) # 可以一次性读取文件中所有数据,若读取成功返回一个列表,文件中每一行对应着列表中的一个元素 # hint单位为字节,用于控制要读取的行数
写文件
write(data) # 可以将指定字符串写入文件writelines(lines) # 将列表写入文件
文件的定位读写
tell()获取文件当前的读写位置
seek()控制文件的读写位置,实现文件的随机读写
seek(offset, from) # offset:偏移量,即需要移动的字节数 # from:0表示文件开头,1表示当前读写位置,2表示文件末尾
文件与目录管理
删除文件:remove()
import os os.remove('a.text')
重命名:rename()
import os os.rename('a.text','b.text')
创建、删除目录:mkdir(), rmdir()
import os os.mkdir('dir') os.rmdir('dir')
获取当前目录: getcwd()
更改默认目录:chdir()
获取文件名列表:listdir()
基于维度的数据分类:
一维数据(CSV格式)、二维数据(矩阵、二维数组)、三维数据(JSON格式)
第八章 面向对象
类的定义
class 类名:属性名 = 属性值def 方法名(self):方法体
对象的创建和使用
对象名 = 类名()
类属性:声明在类内部,方法外部的属性
实例属性:是方法内部声明的属性
- 访问实例属性:只能通过对象访问
- 修改实例属性:通过对象进行修改
- 动态添加实例属性:支持在类的外部使用对象动态的添加实例属性
实例方法
- 形似函数,但它定义在类内部,以self为第一个形参,代表对象本身,会在实例方法被调用时自动接收由系统传递的该方法的对象
- 只能通过对象调用
类方法
定义在类内部,使用装饰器@classmethod修饰的方法
@classmethod def 类方法名(cls):方法体
可以通过类和对象调用
静态方法
定义在类内部,使用装饰器@staticmethod修饰的方法
@staticmethod def 静态方法名():方法体
静态方法没有任何默认参数,它适用于与类无关的操作,或者无需使用类成员的操作
静态方法内部不能直接访问属性或方法,但可以使用类名访问类属性或调用类方法
私有成员:在类成员的名称前面添加双下划线(__)的方式表示私有成员
__方法名 __属性名
构造方法:__init__()方法,有有参无参两种形式
析构方法:__del__()方法,销毁对象时调用的方法
封装
- 基本思想:对外隐藏类的细节,提供用于访问类成员的公开接口
- 2点要求:
- 将属性声明为私有属性
- 添加2个供外界调用的公有方法,分别用于设置或获取私有属性的值
继承
单继承
class 子类名(父类名):
多继承
class 子类名(父类名1, 父类名2, ...):
子类不会继承父类的私有成员
重写:只要在子类中定义与父类方法名同名的方法,然后在方法中按照子类需求重新编写功能代码即可
多态:让不同类的同一功能可以通过一个接口调用,并表现出不同的行为
运算符重载
第九章 异常
NameError:未定义变量引发的异常
IndexError:访问越界
AttributeError:使用对象访问不存在的属性
FileNotFondError:未找到文件或指定目录
异常捕获:try-except语句、try-except-else语句、try-except-finally语句
抛出异常
raise 异常类 # 使用异常类引发异常 raise 异常类对象 # 使用异常类对象引发异常 raise # 使用刚出现的异常重新引发异常
assert语句抛出异常
assert 表达式[,异常信息]assert num != 0,'除数不能为空!' # 如果触发了异常,则是AssertionError异常
异常传递:如果程序中的异常没有被处理,默认情况下会将该异常传递到上一级,如果上一级仍旧没有处理,会继续向上传递,直到被处理或程序崩溃为止
自定义异常:需要继承Exception或Exception子类的类
Python期末复习笔记相关推荐
- 大一Python期末复习笔记
目录 前言 一,输出格式控制 ①多行输出 ②不换行输出 ③精度保留和对齐 Ⅰ.format Ⅱ.f'{}' Ⅲ.% 二,嵌套 ①嵌套循环 Ⅰ.for Ⅱ.while ②嵌套列表,字典 三,列表与字符串 ...
- python 期末复习笔记
关于python大数据分析的期末选择题已经整理好啦,关注公众号:大数据智库,回复[大数据选择题],即可获得网盘连接! 文章目录 1.类型 数据类型 数值类型 值类型与引用类型 可变与不可变对象类型 1 ...
- 【Python数据分析与可视化】期末复习笔记整理(不挂科)
[Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...
- RFID原理及应用期末复习笔记 | 1.RFID概述【完结✿✿ヽ(°▽°)ノ✿】
系列索引:RFID原理及应用期末复习笔记 | 快速索引 RFID是博主大三下的一门专业课,因为疫情缩短学期进程提前结课,所以期末考试也来的更早,这里就简单记录一下自己复习时的一些笔记,也给后来的学弟学 ...
- 【数据分析与挖掘】期末复习笔记(不挂科)
[数据挖掘]期末复习笔记 1. 数据挖掘概论 1.1 参考资料 1.2 简介 1.3 数据.信息.知识 1.4 数据分析与数据挖掘 1.5 主要任务 1.6 数据库系统与数据仓库 1.7 数据挖掘常用 ...
- 太牛了 Python期末复习总结,提高成绩必备回家过个开心年
Python期末复习之语法 将用一张思维导图的形式来展示python的基础语法. Python期末复习之运算符 Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑 ...
- 【期末复习笔记】知识产权法——著作权、专利法、商标权
[期末复习笔记]知识产权法 著作权 著作权法不予以保护的客体 著作权的归属 著作权的内容 著作人身权 著作财产权 著作权的取得方式:自动取得 著作权的保护期限: 邻接权 表演者权 表演者义务 表演者权 ...
- 南邮部分期末复习笔记汇总@tou
README 知识库链接:tou/njupt-cst-notes 这个知识库存放了部分我在 NJUPT-CST 专业就读期间的期末复习笔记,这一部分公开的语雀笔记是我众多笔记中总结的还算 OK 的,仅 ...
- 奇异矩阵能lu分解条件_矩阵分析-期末复习笔记(上)
(复习笔记,可能有点乱.夹杂着乱七八糟的英文,因为要用英文考试.) (如果有误请一定要和我说!祝我final考个好成绩-) 目录: 特征值,特征向量,相似 (Eigenvalues, eigenvec ...
最新文章
- 春泥棒(偷春人) — ヨルシカ(MV + 歌词、汉译、罗马音)
- Css实现的图片灰度
- 战神笔记本电脑自带access吗_双·12超值价 十代酷睿+GTX1650游戏本只卖4219元_神舟 战神Z7M-CU5NB_笔记本新闻...
- mysql 配置文件设置最大链接数 max_connections不生效
- 创建Node.js Express 项目
- DNN、CNN、RNN、LSTM的区别
- JAVA-Lambda表达式
- 【今日CS 视觉论文速览】Thu, 6 Dec 2018
- Context是怎么在Go语言中发挥关键作用的
- 汇编语言-显示九九乘法表
- 2020身高体重标准表儿童_2020上海1-12岁男女孩最新身高标准表,你家孩子达标了吗?...
- Hihocoder 1142 三分
- 通过HttpURLConnection模拟post表单提交
- 斑马打印机linux驱动安装教程,linux-Zebra软件包的基本安装与配置
- 国内外AI绘画软件汇总
- 解决 ArchLinux 下中文 Chinese 不能输入 couldnt input 的问题
- 战双帕弥什登入显示服务器错误,战双帕弥什渠道账号登陆失败怎么解决 解决方法...
- bilibili直播间利用python爬虫自动发送弹幕
- 悲观锁、乐观锁和自旋锁
- day22-作业贝壳租房100页数据