计算机二级 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
  • 复数 complexa+bj,实部 a,虚部 bjJ 表示虚部)。
  • 常用操作+, -, *, /(浮点除)、//(整除)、%(取余)、**(幂)。
  • 类型转换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
        
    • 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),在字符串前加 fF,花括号 {} 内可直接嵌入变量或表达式。
      • 直接嵌入变量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
        

3.3 类型转换与初始化

  • int(), float(), str(), bool(), list(), tuple(), set(), dict()等。

4. 运算符与表达式

4.1 运算符分类

  • 算术运算符+, -, *, /, //, %, **
  • 赋值运算符=, +=, -=, *=, /=, //=, %=, **=
  • 比较运算符==, !=, >, <, >=, <=,返回布尔值。
  • 逻辑运算符and, or, not
  • 位运算符&(与),|(或),^(异或),~(取反),<<(左移),>>(右移)。
  • 成员运算符in, not in(用于序列、集合、字典的键)。
  • 身份运算符is, is not(比较对象内存地址)。

4.2 运算符优先级

从高到低(简略):

  1. 幂运算 **
  2. 正负号 +x, -x
  3. 乘法、除法、取余 *, /, //, %
  4. 加法、减法 +, -
  5. 移位 <<, >>
  6. 按位与 &
  7. 按位异或 ^
  8. 按位或 |
  9. 比较运算符 in, not in, is, is not, <, <=, >, >=, !=, ==
  10. 逻辑非 not
  11. 逻辑与 and
  12. 逻辑或 or
  13. 赋值运算符 =, += 等。

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'
  • 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。
posted @ 2026-03-28 17:18  AFewMoon  阅读(5)  评论(0)    收藏  举报