计算机二级 Python 考试知识点大全
1. Python 语言概述与开发环境
- Python 特点:解释型、面向对象、动态数据类型、高级语言。
- 开发环境:IDLE(官方自带)、PyCharm、VS Code、Jupyter Notebook 等。
- 运行方式:交互式(命令行)、脚本式(
.py文件)。 - 程序基本结构:模块导入、语句执行、缩进表示代码块。
2. Python基础语法
2.1 注释
- 单行注释:
# 注释内容。 - 多行注释:使用三个单引号
'''或三个双引号"""包裹。
2.2 缩进
Python 使用缩进表示代码块(通常为 4 个空格),同一代码块必须保持相同缩进量。
2.3 语句分隔
- 一般一行一条语句,分号
;可分隔多条语句(不推荐)。 - 行尾反斜杠
\可实现续行(括号内的内容可自动跨行)。
2.4 标识符与关键字
- 标识符命名规则:字母、数字、下划线组成,不能以数字开头,区分大小写。
- 关键字(保留字):
and,as,assert,async,await,break,class,continue,def,del,elif,else,except,False,finally,for,from,global,if,import,in,is,lambda,None,nonlocal,not,or,pass,raise,return,True,try,while,with,yield等。
2.5 变量与常量
- 变量无需声明,直接赋值即创建。
- 常量通常用大写字母命名(仅为约定,Python 没有真正的常量)。
- 动态类型:变量类型随赋值改变。
2.6 输入输出
- 输出:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
示例:print("Hello", "World", sep="-", end="!")→Hello-World!。 - 输入:
input([prompt])返回字符串,可通过int()等转换类型。
3. 数据类型
3.1 数字类型
- 整数 int:任意大小,支持二进制(
0b)、八进制(0o)、十六进制(0x)。 - 浮点数 float:双精度,有精度限制。科学计数法:
1.2e-3。 - 复数 complex:
a+bj,实部a,虚部b(j或J表示虚部)。 - 常用操作:
+,-,*,/(浮点除)、//(整除)、%(取余)、**(幂)。 - 类型转换:
int(x),float(x),complex(x)。 - math 库:提供数学函数,如
math.sqrt,math.sin,math.pi等。
3.2 字符串
-
定义:单引号、双引号、三引号(可跨行)。
-
转义字符:
\n换行,\t制表,\\反斜杠,\'单引号等。原始字符串r"..."忽略转义。 -
索引:正向 0 开始,反向 -1 开始。
s[i]获取单个字符。 -
切片:
s[start:stop:step],包含 start,不包含 stop。省略 start 默认为 0,省略 stop 默认为末尾,省略 step 默认为 1。 -
常用方法(均为不可变操作):
len(s):长度。s.upper(),s.lower(),s.capitalize(),s.title()。s.strip([chars]):去除两端指定字符(默认空白)。s.split(sep=None, maxsplit=-1):分割为列表。sep.join(iterable):连接。s.replace(old, new[, count]):替换。s.find(sub),s.rfind(),s.index(),s.rindex()。s.count(sub)。s.startswith(prefix),s.endswith(suffix)。s.isalpha(),s.isdigit(),s.isalnum(),s.isspace()等。s.center(width),s.ljust(),s.rjust()。s.format():格式化字符串(见下)。
-
字符串格式化:
-
%格式化:"%d %s" % (num, string)- 这是 Python 中最古老的字符串格式化方式,借鉴自 C 语言的
printf风格。 - 常用的格式符包括:
%d(整数)、%s(字符串)、%f(浮点数)、%x(十六进制)等。 - 可以在格式符中添加宽度和精度控制,例如:
%10s(右对齐,宽度 10)、%.2f(保留两位小数)、%-10s(左对齐)。 - 当有多个变量时,必须用元组包裹;也可以使用字典进行命名替换,例如:
"%(name)s is %(age)d" % {"name": "Tom", "age": 20}。 - 示例:
name = "Alice" age = 30 print("Name: %s, Age: %d" % (name, age)) # Name: Alice, Age: 30 print("Pi: %.3f" % 3.14159) # Pi: 3.142
- 这是 Python 中最古老的字符串格式化方式,借鉴自 C 语言的
-
format()方法:"{} {}".format(value1, value2),可指定位置{0},{1},或关键字{name},以及格式说明符{:.2f}-
从 Python 2.6 开始引入,是一种更强大、灵活的格式化方式。
-
位置参数:
"{0} {1}".format("Hello", "World")或省略数字按顺序填充"{} {}".format("Hello", "World")。 -
关键字参数:
"{name} is {age}".format(name="Bob", age=25),使代码意图更清晰。 -
格式说明符:通过冒号
:指定格式,例如:{:.2f}:浮点数保留两位小数。{:>10}:右对齐,宽度 10。{:<10}:左对齐。{:^10}:居中对齐。{:+d}:显示正负号。{:.0%}:百分比格式。
-
支持访问对象的属性或字典键:
person = {"name": "Eve", "age": 28} print("Name: {p[name]}, Age: {p[age]}".format(p=person)) -
还可以通过下标或切片访问列表元素:
"{0[0]}".format(lst)。 -
示例:
name = "Charlie" age = 35 print("Name: {}, Age: {}".format(name, age)) # Name: Charlie, Age: 35 print("Pi: {:.2f}".format(3.14159)) # Pi: 3.14 print("Score: {:>10}".format(95)) # Score: 95
-
-
f-string(Python 3.6+):
f"{value:.2f}"- 格式化字符串字面量(formatted string literal),在字符串前加
f或F,花括号{}内可直接嵌入变量或表达式。 - 直接嵌入变量:
f"My name is {name}",其中name是当前作用域中的变量。 - 支持任意表达式:可以在花括号内进行计算、调用方法或函数,例如:
a, b = 5, 3 print(f"{a} + {b} = {a + b}") # 5 + 3 = 8 print(f"{name.upper()} has {len(name)} letters.") - 格式说明符:与
format()方法相同,例如:f"{pi:.2f}"、f"{num:>10}"。 - 嵌套花括号:可以在 f-string 内部再使用花括号,但要注意引号冲突,通常用不同引号区分。
- 性能:f-string 在运行时求值,但通常比
format()更快,因为它是编译时转换成的字符串构建操作。 - 示例:
name = "David" age = 40 print(f"Name: {name}, Age: {age}") # Name: David, Age: 40 print(f"Pi to 2 decimals: {3.14159:.2f}") # Pi to 2 decimals: 3.14 print(f"Uppercase: {name.upper()}") # Uppercase: DAVID
- 格式化字符串字面量(formatted string literal),在字符串前加
-
3.3 类型转换与初始化
int(),float(),str(),bool(),list(),tuple(),set(),dict()等。
4. 运算符与表达式
4.1 运算符分类
- 算术运算符:
+,-,*,/,//,%,**。 - 赋值运算符:
=,+=,-=,*=,/=,//=,%=,**=。 - 比较运算符:
==,!=,>,<,>=,<=,返回布尔值。 - 逻辑运算符:
and,or,not。 - 位运算符:
&(与),|(或),^(异或),~(取反),<<(左移),>>(右移)。 - 成员运算符:
in,not in(用于序列、集合、字典的键)。 - 身份运算符:
is,is not(比较对象内存地址)。
4.2 运算符优先级
从高到低(简略):
- 幂运算
**。 - 正负号
+x,-x。 - 乘法、除法、取余
*,/,//,%。 - 加法、减法
+,-。 - 移位
<<,>>。 - 按位与
&。 - 按位异或
^。 - 按位或
|。 - 比较运算符
in,not in,is,is not,<,<=,>,>=,!=,==。 - 逻辑非
not。 - 逻辑与
and。 - 逻辑或
or。 - 赋值运算符
=,+=等。
5. 程序控制结构
5.1 条件分支
-
if 语句:
if condition: # 代码块 elif condition: # 代码块 else: # 代码块 -
条件表达式(三元运算符):
x if condition else y。
5.2 循环
-
while 循环:
while condition: # 代码块 else: # 循环正常结束(未break)时执行 # 代码块 -
for 循环:常用于遍历序列(列表、字符串、元组、字典、集合等)或
range()对象。for variable in iterable: # 代码块 else: # 循环正常结束时执行 -
range(start, stop, step):生成整数序列,start默认0,step默认1,不包含stop。
-
循环控制:
break:跳出整个循环。continue:跳过本次循环剩余语句,进入下一次迭代。pass:占位语句,什么都不做。
6. 异常处理
- 基本结构:
try: # 可能引发异常的代码 except SomeException as e: # 处理特定异常 except (AnotherException, OtherException) as e: # 处理多个异常 except: # 处理所有其他异常(不推荐) else: # 无异常发生时执行 finally: # 无论是否异常都会执行(清理资源) - raise语句:手动抛出异常,
raise ExceptionType("message")。 - 常见异常类型:
ZeroDivisionError,TypeError,ValueError,IndexError,KeyError,FileNotFoundError,AttributeError,ImportError等。 - 断言:
assert condition, message,条件为假时引发AssertionError。
7. 组合数据类型
7.1 列表(list)
- 创建:
[1, 2, 3]或list(iterable)。 - 索引与切片:同字符串。
- 常用方法:
lst.append(x):末尾添加元素。lst.extend(iterable):扩展列表。lst.insert(i, x):在位置 i 插入 x。lst.remove(x):删除第一个值为 x 的元素。lst.pop([i]):删除并返回位置 i 的元素(默认最后一个)。lst.clear():清空。lst.index(x[, start[, end]]):返回第一个值为 x 的索引。lst.count(x):统计 x 出现次数。lst.sort(key=None, reverse=False):原地排序。lst.reverse():原地反转。lst.copy():浅拷贝。
- 列表推导式:
[表达式 for 变量 in 可迭代对象 if 条件]。 - 多维列表:列表嵌套。
7.2 元组(tuple)
- 创建:
(1, 2, 3)或tuple(iterable),单元素元组需加逗号(1,)。 - 不可变性:元素、操作不可修改,但若元素是可变对象(如列表),其内容可变。
- 常用操作:索引、切片、
count(),index()。 - 元组赋值:
a, b = b, a(交换变量)。
7.3 字典(dict)
- 创建:
{key1: value1, key2: value2}或dict(key=value)或dict(zip(keys, values))。 - 键的要求:必须是不可变类型(数字、字符串、元组等)。
- 访问:
d[key](键不存在引发KeyError),d.get(key, default)(不存在返回default)。 - 常用方法:
d.keys(),d.values(),d.items():返回视图对象,分别为键、值、键值对。d.update(other_dict):合并字典。d.pop(key[, default]):删除并返回值。d.popitem():删除并返回最后插入的键值对(Python 3.7+ 有序)。d.setdefault(key, default):若键不存在,设置默认值并返回。d.clear():清空。d.copy():浅拷贝。d.fromkeys(seq, value):类方法,从序列创建字典。
- 字典推导式:
{key_expr: value_expr for item in iterable if condition}
7.4 集合(set)
- 创建:
{1, 2, 3}或set(iterable),空集合必须用set()。 - 特点:无序、不重复。
- 常用操作:
- 添加:
s.add(x),s.update(iterable)。 - 删除:
s.remove(x)(不存在引发KeyError),s.discard(x)(不存在不报错),s.pop()(随机删除),s.clear()。 - 集合运算:交集
&或s.intersection(t),并集|或s.union(t),差集-或s.difference(t),对称差集^或s.symmetric_difference(t)。 - 子集/超集判断:
s.issubset(t),s.issuperset(t),s.isdisjoint(t)。
- 添加:
- 集合推导式:
{expr for item in iterable if condition}。
8. 函数
8.1 函数定义与调用
- 定义:
def 函数名(参数列表):缩进函数体,return返回(无return返回 None)。 - 文档字符串:函数体内首行用
"""docstring"""说明。
8.2 参数传递
- 位置参数:按顺序传递。
- 默认参数:
def func(a, b=1):,默认参数必须放在位置参数之后。 - 可变参数:
*args:接收任意数量位置参数,打包为元组。**kwargs:接收任意数量关键字参数,打包为字典。
- 关键字参数:调用时用
key=value形式。 - 命名关键字参数:
def func(a, *, b, c):,星号后的参数必须以关键字形式传递。也可用*args后的参数自动成为命名关键字。 - 参数解包:
func(*list):将列表解包为位置参数。func(**dict):将字典解包为关键字参数。
8.3 变量作用域
- 局部变量:函数内定义,仅在函数内有效。
- 全局变量:函数外定义,函数内若需修改需用
global声明。 - 嵌套函数与 nonlocal:在嵌套函数中修改外层函数的变量需用
nonlocal。 - LEGB 规则:Local → Enclosing → Global → Built-in。
8.4 匿名函数(lambda)
lambda 参数: 表达式,返回函数对象。常用于简单操作,如sorted(list, key=lambda x: x[1])。
8.5 高阶函数
map(func, iterable):将函数应用于每个元素,返回迭代器。filter(func, iterable):过滤,返回使 func 为 True 的元素。reduce(func, iterable[, initial]):从 functools 导入,累积计算。
9. 文件操作
9.1 文件打开与关闭
open(file, mode='r', encoding=None):返回文件对象。- mode 常见值:
'r':只读(默认)。'w':写入,先清空文件。'x':独占创建,文件已存在则失败。'a':追加。'b':二进制模式。't':文本模式(默认)。'+':读写。
- 示例:
'rb','w+','a+b'。
- mode 常见值:
f.close():关闭文件(推荐使用 with 语句自动关闭)。
9.2 文件读取
f.read(size):读取 size 个字符(文本)或字节(二进制),无参读全部。f.readline():读取一行,包括换行符。f.readlines():读取所有行,返回列表(每行包含换行符)。- 迭代文件对象:
for line in f:逐行读取。
9.3 文件写入
f.write(s):写入字符串,返回写入字符数。f.writelines(lines):写入字符串列表,不自动添加换行符。
9.4 文件指针
f.tell():返回当前指针位置(字节数,文本模式下可能不准确)。f.seek(offset, whence):移动指针。whence=0 从开头,1 从当前位置,2 从末尾(二进制模式下可用)。
9.5 with 语句
- 自动管理上下文,退出时自动关闭文件。
with open('file.txt', 'r') as f: data = f.read()
9.6 CSV 文件处理
- csv 模块:
import csv with open('data.csv', 'r') as f: reader = csv.reader(f) for row in reader: print(row) with open('out.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerow(['name', 'age']) writer.writerows([['Alice', 20], ['Bob', 21]]) - DictReader/DictWriter:处理带标题行的 CSV。
9.7 JSON 文件处理
- json 模块:
import json # 写入 data = {'name': 'Alice', 'age': 20} with open('data.json', 'w') as f: json.dump(data, f, indent=4) # 读取 with open('data.json', 'r') as f: data = json.load(f) # 字符串与Python对象转换:json.dumps(), json.loads()
10. 标准库
10.1 turtle 库(绘图)
- 基本命令:
- 运动:
forward(d),backward(d),right(angle),left(angle),goto(x,y),setheading(angle),circle(radius)。 - 画笔控制:
penup(),pendown(),pensize(width),pencolor(color),fillcolor(color),begin_fill(),end_fill()。 - 窗口:
setup(width, height),bgcolor(color),title(),done()。 - 速度:
speed(s)。 - 画笔初始化:
home()回到原点、方向正右。
- 运动:
- 示例:画正方形。
10.2 random 库
- 实现算法:梅森旋转算法。
- 常用函数:
random():返回[0.0, 1.0)随机浮点数。randint(a, b):返回[a, b]整数。randrange(start, stop, step):返回 range 中的随机元素。uniform(a, b):返回[a, b]随机浮点数。choice(seq):从序列随机选一个。sample(pop, k):从总体随机选取k个不重复元素。shuffle(lst):原地打乱列表。seed(a):初始化随机种子。
10.3 time 库
- 时间获取:
time():返回当前时间戳(秒)。ctime([secs]):将时间戳转为字符串。gmtime([secs]):返回 UTC 的 struct_time。localtime([secs]):返回本地 struct_time。
- 时间格式化:
strftime(format, t):将 struct_time 转为字符串,任何占位符保留 0。strptime(string, format):将字符串转为 struct_time。
- 程序计时:
sleep(secs):延迟。perf_counter():高精度性能计数器,常用于测量时间差。
10.4 datetime 库(扩展)
- date, time, datetime, timedelta 类。
- 示例:
datetime.now(),date.today(),timedelta(days=1)。
10.5 sys 与 os库
- sys:
sys.argv:命令行参数列表。sys.exit():退出程序。sys.path:模块搜索路径。sys.stdin/stdout/stderr:标准输入输出错误。
- os:
os.getcwd():当前工作目录。os.chdir(path):切换目录。os.listdir(path):列出目录内容。os.mkdir(),os.makedirs():创建目录。os.remove(),os.rmdir():删除文件/空目录。os.path模块:路径操作,如os.path.join(),os.path.exists(),os.path.isfile(),os.path.isdir(),os.path.splitext()等。
11. 第三方库
11.1 jieba 库(中文分词)
- 主要函数:
jieba.cut(s, cut_all=False):生成器,精确模式。jieba.cut(s, cut_all=True):全模式。jieba.cut_for_search(s):搜索引擎模式。jieba.lcut():返回列表。- 添加自定义词典:
jieba.load_userdict(file)。 - 调整词频:
jieba.suggest_freq(('词语', '词性'))。
- 示例:
list(jieba.cut("中华人民共和国"))。
11.2 wordcloud 库(词云)
- 基本用法:
from wordcloud import WordCloud wc = WordCloud(font_path='simhei.ttf', width=800, height=600, background_color='white') wc.generate(text) # text为字符串 wc.to_file('wordcloud.png') - 常用参数:
max_words,stopwords,mask(形状掩码)等。
11.3 pyinstaller 库(打包)
- 命令:
pyinstaller -F script.py打包成单个 exe 文件(Windows)。 - 常用选项:
-w无控制台窗口,-i icon.ico设置图标,-F只输出一个打包文件。
11.4 requests 库(HTTP 请求)
- 主要方法:
get(),post(),put(),delete()等。 - 参数:
params,data,json,headers,cookies。 - 响应:
r.status_code,r.text,r.json(),r.content。 - 异常处理:
requests.exceptions.RequestException。
11.5 numpy 库(数值计算)
- 数组创建:
np.array(list),np.zeros(),np.ones(),np.arange(),np.linspace()。 - 数组属性:
ndim(维度),shape(形状),size,dtype。 - 索引与切片:类似列表,支持多维。
- 运算:向量化运算,广播机制。
- 常用函数:
np.sum(),np.mean(),np.max(),np.min(),np.dot(),np.linalg.inv()等。
11.6 pandas 库(数据分析)
- Series:一维带标签数组。
- DataFrame:二维表格。
- 读取:
pd.read_csv(),pd.read_excel()。 - 查看:
df.head(),df.info(),df.describe()。 - 选择:
df[col],df.loc[],df.iloc[]。 - 处理缺失值:
dropna(),fillna()。 - 分组聚合:
groupby(),agg()。 - 合并:
merge(),concat()。
- 读取:
11.7 matplotlib 库(数据可视化)
- pyplot 模块:
plt.plot(x, y):折线图。plt.scatter(x, y):散点图。plt.bar(x, height):条形图。plt.hist(data, bins):直方图。plt.pie(sizes):饼图。- 设置:
plt.title(),plt.xlabel(),plt.ylabel(),plt.legend(),plt.grid()。 - 显示:
plt.show()。 - 保存:
plt.savefig('plot.png')。
12. 面向对象编程
12.1 类与对象
- 定义类:
class ClassName(父类): class_variable = 值 # 类属性 def __init__(self, 参数): # 构造方法 self.instance_variable = 参数 # 实例属性 def method(self): # 实例方法 - 创建对象:
obj = ClassName(参数)。 - 访问属性:
obj.属性,obj.方法()。
12.2 类属性与实例属性
- 类属性:所有实例共享,通过类名或实例访问(实例访问时若同名实例属性会覆盖)。
- 实例属性:每个实例独有,通过
self定义。
12.3 方法类型
- 实例方法:第一个参数为
self。 - 类方法:使用
@classmethod装饰,第一个参数为cls。 - 静态方法:使用
@staticmethod装饰,无特殊参数。 - 特殊方法(魔术方法):
__init__,__str__,__repr__,__len__,__add__等。
12.4 继承
- 单继承:
class 子类(父类):。 - 方法重写:子类定义与父类同名方法。
- 调用父类方法:
super().方法名()。 - 多重继承:
class 子类(父类1, 父类2):,方法解析顺序(MRO)遵循 C3 算法,可用类名.__mro__查看。
12.5 访问控制
- Python 没有严格的私有机制,约定以单下划线
_开头表示“保护”,以双下划线__开头表示“私有”(名称修饰为_类名__变量)。
13. 程序设计基本方法
13.1 算法概念
- 算法:解决问题的有限步骤。
- 特性:有穷性、确定性、可行性、输入、输出。
- 复杂度:时间复杂度(大 O 表示法)、空间复杂度。
13.2 基本算法
- 枚举法:穷举所有可能。
- 递归:函数自调用,注意递归深度(Python 默认 1000)。
- 分治法:分解、解决、合并(如归并排序、快速排序)。
- 贪心算法:每步选最优,局部最优不一定全局最优。
- 动态规划:保存子问题解,避免重复计算(如斐波那契、背包问题)。
13.3 常见数据结构(简单介绍)
- 栈:后进先出,可用列表模拟(
append入栈,pop出栈)。 - 队列:先进先出,可用
collections.deque实现高效两端操作。 - 链表:手动定义节点类。
- 二叉树:节点类包含左子、右子,遍历(前序、中序、后序、层次)。
14. Python计算生态扩展
- 网络爬虫:requests、BeautifulSoup(解析 HTML)、scrapy 框架、grab。
- Web 开发:Flask、Django、Tornado、Pylons。
- 科学计算:numpy、scipy。
- 机器学习:scikit-learn、tensorflow、pytorch、mxnet。
- 图形界面:tkinter(内置)、PyQt、wxPython。
- 游戏开发:pygame。
- 数据库:SQLAlchemy、SQLite、MySQL。
- 图像字符识别:PyOCR。
- 图像处理:PIL。
- 文本处理:pdfminer。
- 数据可视化:mayavi、TVTK。

浙公网安备 33010602011771号