〇、学习顺序

认识(面熟)
了解(分辨)
掌握(使用)
底层(进阶)

建议的学习习惯:

  • "认识"了就应当学会"使用",带着"目的"(任务)学才能高效率学习【干中学】
  • 编程是一片巨大的英文土壤,必须学会或者至少看懂英文及其简写,并且是以专业术语构建的知识领域

一、Python 简介

前言:仅供了解,但是要对后面的学习有启发。

1.0 一切皆为对象【记住这句话】

Python是一个面向对象的语言【编程术语】,内心记住一切皆为对象才能不断理解Python

1.1 Python的应用领域

  • 语法简洁,低学习成本,近人类语感性,萌新可快速上手(纯IT萌新也能一个月内完全入门)

  • Python极其强大的生态系统

    • Numpy:高性能数据计算库,几乎所有数据科学工具的底层基石
    • Pandas:极强的数据清洗分析库,数据分析的必备法宝
    • matplotlib、seaborn、pyecharts:数据绘图可视化分析,兼具多功能性和美观性
    • scikit-learn、scipy、pytorch、tensorflow:机器学习与AI的钦定语言
    • opencv-python:极强的视觉处理库(photoshop的底层)
    • openai、langchain:openai官方提供了 Python SDK,并让你使用如千问、kimi、chatGPT、deepseek等提供的API
  • 实现项目【仅介绍,不局限于这一小部分】:

    • 数据分析【根据历史数据通过多维度可视化分析,发现数字背后的秘密】
    • 机器学习
    • Agents智能体开发
    • Web 开发:快速构建网站与后端服务
    • 网络爬虫: requestsBeautifulSoupScrapy 等,高效采集与解析网页数据【爬虫学得好,牢饭吃到饱】
    • 小游戏开发
    • 自动化脚本

1.2 版本更新变化(主要更新)

Python 2

  • Python 3 不向下兼容 Python 2强烈建议不再使用 Python 2(已于 2020 年停止官方支持)。

Python 3 :2008年12月3日发布

Python 3.3

  • PEP 405:虚拟环境支持pyvenv ,后被 venv 替代)
  • Unicode 标识符支持(如变量名可用中文)

Python 3.5

  • async / await 语法(PEP 492):原生协程支持
  • 矩阵乘法运算符 @(PEP 465):用于 NumPy 等库
  • typing 模块加入标准库(类型提示支持,如 List[int]
  • % 字符串格式化支持 {} 占位符转义

Python 3.6

  • f-string格式化输出(PEP 498):将变量名嵌入字符串中转义,x=42.0;f"x={x}""x=42.0"

    • 文本对齐控制(在花括号内使用):

      • {文本:>n}:右对齐,总宽度为 n 个字符。
      • {文本:<n}:左对齐,总宽度为 n 个字符。
    • 浮点数格式化(保留小数)

      • {浮点数:.nf}:保留 n 位小数(四舍五入),n ≥ 0。
        • n=0,则不显示小数部分。
  • 变量注解语法(PEP 526)

  • 更快的 dict 实现(内存减少 20–25%)

Python 3.8

  • 海象运算符(Walrus Operator)(PEP 572)::= ,允许在表达式内部进行赋值操作。

    if (n := len(data)) > 10:...
    
  • typing 增强Literal, TypedDict, Final, Protocol

  • f-string 支持 = 调试x=42;print(f"{x=}")""x=42"

Python 3.9

  • 合并运算符 |
    • 整数相加:3|47
    • 字典合并:{2:3}|{4:5}{2: 3, 4: 5}
    • 集合合并:{5,6}|{6,7}{5, 6, 7}
  • 字符串前缀/后缀移除方法(PEP 616):
    • "Test<>Test".removeprefix("Test")"<>Test"
    • "Test<>Test".removesuffix("Test")"Test<>"
  • 类型提示泛型内置类型(PEP 585):
    • list[int] 代替 List[int]
    • dict[str, int] 代替 Dict[str, int]

Python 3.10

  • 结构模式匹配(match-case)(PEP 634/635/636):

  • 联合类型运算符 |(PEP 604):

    def f(x: int | str): ...
    

Python 3.11

  • 显著性能提升(平均快 10–25%):通过“自适应解释器”和“零开销异常”

1.3 Python的维护【仅了解】

Python的维护由Python 软件基金会(PSF)核心开发团队 管理,管理规则:

  • 主版本更新:每年 10月 发布新版本
  • 每个版本提供 5 年总支持
    • ~18–24 个月:接收功能更新 + Bug 修复 + 安全补丁
    • ~30–36 个月:仅接收关键安全修复(Security fixes only)
  • EOL(End-of-Life) 后官方不再提供任何更新,包括安全补丁。
    • 因此EOL之后的版本不建议再 学习 使用。【学习就应当优先学习新东西】
    • Python 3.92025-10-06 停止更新【本入门笔记更新时间为2025年12月】
    • 新库开发者也会逐步放弃对旧Python的支持

PEP:Python Enhancement Proposal,Python增强提案,Python 社区用来提案、讨论和标准化语言演进的核心机制。

  • 根据 PEP 1 定义,PEP 分为三类:Standard Track PEPsInformational PEPsProcess PEPs
  • 我们最常看到的是 Standard Track PEPs,主要提议新功能、语法、标准库模块等
  • PEP将经历以下阶段:
    • Draft(草稿):作者提交初稿,开放讨论。
    • Accepted(接受):核心团队同意实施。
    • Final(最终):特性已合并到 CPython,文档完成。
    • Rejected(拒绝):社区或核心团队否决(如 PEP 572 最初被 Guido 拒绝,后重新设计通过)。
    • Withdrawn(撤回):作者主动放弃。
  • 只有 Final 状态的 PEP 才会在正式版 Python 中出现。

二、Python安装

✅ 推荐版本:3.12

  • 推荐理由【看不懂就无脑装】
    • 性能显著提升(CPython 3.11 起引入新解释器优化)
    • 官方支持周期长(3.12 支持至 2028 年)
    • 兼容主流库
    • 生产环境友好、稳定
  • 安装就能用?
    • 确实可以直接用,但非常不推荐
  • 解释器?IDE?cmd?命令行?它们是什么?
    • 解释器(Interpreter):将类似Python的高级语言转换成机器代码
    • IDE:编程语言的集成开发环境
    • cmd
    • 命令行,即命令行窗口,或命令提示符等。

print("hello word")

安装IDE【推荐VScode、Trae】

  • 安装汉化插件
  • 环境管理
    • 项目文件夹
    • 虚拟环境
    • 依赖管理

关于是否安装anacondo的意见:

使用虚拟环境:

包管理器

  • pip
  • uv

三、变量与命名规则

3.0 变量名与值

变量名是值的容器,用于存储数值。实际上,数值存储在内存中,变量名是数值内存的访问地址的别名(可理解为名称),

3.1 变量命名规范(PEP 8)

必须遵守(硬性要求)

  • 长度建议 不超过 256 个字符(虽无强制限制,但过长影响可读性)。
  • 不能包含空格
  • 只能包含:字母(a-z, A-Z)、数字(0-9)、下划线(_)
  • 区分大小写nameName 是两个不同变量。
  • 不能以数字开头:如 1var 是非法的。

建议(良好编程习惯)

  • 变量名应有意义:能反映其用途(如 user_agex 更好),方便其他人或后期阅读(后期维护)。
  • 不要使用 Python 关键字、函数名、调用的库名、模块名作为变量名:会导致错误或难以调试。

举例:

a = 1
print(a)
# 我们将1赋值给变量名a,

3.2 关键字与函数名

关键字与函数名实际上是特殊的变量名,内置了魔法方法 __call__ 使其可以调用。关键字是强制性的,函数名不是强制性的。魔法方法在类、对象区域【暂时了解即可】

Python 关键字

  • 这些词有特殊语法含义,不能用作变量名,否则报错为语法错误 SyntaxError

  • 完整列表(共 35 个,截至 Python 3.11):

    'False', 'None', 'True', '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'
    
  • 查看关键字列表的方法

    import keyword
    print(keyword.kwlist)
    

函数名

  • 函数分为两类:
    1. 内置函数:Python内置定义的函数,如 print(), len(), type() 等。
    2. 自定义函数:由用户使用 def 定义。

四、注释

4.1 单行注释

  • 使用 #

    # 这是一条单行注释
    x = 1  # 行尾也可以加注释
    
  • 也可用字符串(不推荐,仅作了解):

    "这其实不是标准注释,只是未使用的字符串"
    '同上'
    

4.2 多行注释

  • 使用三对引号:"""..."""'''...'''

    '''
    这是多行注释
    可以写很多行
    通常用于函数或模块说明
    '''
    

建议:每行注释不超过 120 个字符,保持代码整洁。

4.3 函数说明


五、数据结构

5.1 数字型

类型 说明 示例
int 整数 42, -7
float 浮点数(带小数) 3.14, -0.001, 0.
bool 布尔值(逻辑值) True, False
complex 复数 3+4j, complex(3, 4)

关于布尔型 bool

  • 在 Python 3 中,boolint 的子类:
    • True == 1True
    • False == 0True
  • 哪些值转为 False
    • None
    • False
    • 数字零:0, 0.0, 0j
    • 空容器:''(空字符串)、()(空元组)、[](空列表)、{}(空字典/集合)
  • 其他所有值转为 True

复数 complex

  • 两种写法:

    z1 = 3 + 4j
    z2 = complex(3, 4)  # 实部=3,虚部=4
    
  • 注意:实部和虚部在内部都存储为 float 类型。


5.2 非数字型

类型 英文名 说明
字符串 str 文本数据,如 "Hello"
列表 list 有序、可变序列,如 [1, 2, 3]
元组 tuple 有序、不可变序列,如 (1, 2, 3)
字典 dict 键值对映射,如 {"name": "Alice",}"name"为键,"Alice" 为值
集合 set 无序、不重复元素集合,如 {1, 2, 3}

空值:None

  • 表示“无值”或“空”,是 NoneType 类型的唯一实例。
  • 常用于函数无返回值时的默认返回。

5.3 数据类型转换

函数 作用
int(x) 转为整数
float(x) 转为浮点数
complex(x, y) 转为复数(x 为实部,y 为虚部)
str(x) 转为字符串
list() 转为列表
tuple() 转为元组
set() 转为集合
dict() 转为字典
repr(x) 返回对象的“官方”字符串表示(常用于调试)

示例:

str(123)     # '123'
int("45")    # 45
float(True)  # 1.0

5.4 查询数据类型

方法 说明
type(value) 返回 value 的具体类型
isinstance(value, 类型) 判断 value 是否属于指定类型(支持继承判断)

示例:

x = 100
print(type(x))               # <class 'int'>
print(isinstance(x, int))    # True
print(isinstance(x, (int, float)))  # True(检查是否为 int 或 float)

七、运算符

7.1 赋值运算符

运算符 说明 示例
= 基本赋值 a = 5
a = b = c = 1 多变量同值(共享同一内存地址) 任意变量值改变,其他变量值也会改变
a, b, c = 1, '2', [2,3] 多变量分别赋值(解

增强赋值(复合赋值)

运算符 等价形式
+= a = a + b
-= a = a - b
*= a = a * b
/= a = a / b
%= a = a % b
**= a = a ** b
//= a = a // b
:= 海象运算符(表达式内赋值)

7.2 算术运算符

符号 含义
+ 加法
- 减法
* 乘法
** 幂运算(如 2**3 = 8
/ 除法(结果为 float)
// 整除(向下取整)
% 取模(余数)

运算优先级(遵循数学规则):** > * = / = // = % > + = -


7.3 比较运算符

运算符 含义(返回 bool 型)
== 等于
!= 不等于
> / >= 大于 / 大于等于
< / <= 小于 / 小于等于

7.4 逻辑运算符

运算符 含义(返回 bool 型) 优先级
not 最高
and
or 最低

示例:

条件1 or 条件2

7.5 成员运算符

运算符 含义 示例
in 是否在容器中 'a' in 'abc'True
not in 是否不在容器中 5 not in [1,2,3]True

7.6 身份运算符(比较内存地址)

运算符 含义 示例
is 是否为同一个对象(内存地址相同) a is b
is not 是否不是同一个对象

⚠️ 注意:is== 不同!

a = [1, 2]
b = [1, 2]
print(a == b)    # True(值相等)
print(a is b)    # False(不同对象)

八、Python 函数基础

8.1 常用内置函数(粗略认识)

函数 常用参数 解释 示例
print() 字符型打印
len()

8.2 参数类型

形参(定义时)

  • 必要参数:调用时必须提供。

  • *args:接收任意数量的非关键字参数,打包成 元组

    def func(*args):
        print(args)  # args 是一个 tuple
    func(1, 2, 3)  # (1, 2, 3)
    
  • **kwargs:接收任意数量的关键字参数,打包成 字典

    def func(**kwargs):
        print(kwargs)  # kwargs 是一个 dict
    func(name="Alice", age=25)  # {'name': 'Alice', 'age': 25}
    

💡 *** 也用于“拆包”(unpacking)。


8.2 内置函数底层实现【进阶内容,入门跳过】

iter():

底层对象含有 __iter__

next():底层对象含有 __next__

obj
len(obj) is obj.__len__()
srt(obj) is obj.__str__()

iter(obj) is obj.__iter__()

def func():return
func() is func.__call__()
函数 用途
iter(obj) 返回对象的迭代器
next(iterator) 获取迭代器的下一个元素

8.3 函数定义增强语法

返回值类型提示(Type Hint)

def greet(name: str) -> str:
    return f"Hello, {name}"
  • -> str:表示预期返回字符串
  • 注意:这只是提示,Python 不会强制检查类型

省略号 ...

  • 是内置对象 Ellipsis 的字面量。

  • 常用于占位(如抽象方法):

    def todo_function():
        ...
    

九、面向对象

对象

魔法方法

十、字符串(str)详解

10.1 多行字符串

text = """
这是
多行
字符串
"""

10.2 索引(Indexing)

  • 字符串是序列类型,支持索引。
  • 正向索引:从 0 开始(s[0] 是第一个字符)。
  • 反向索引:从 -1 开始(s[-1] 是最后一个字符)。

10.3 切片(Slicing)

  • 语法:s[start:stop:step]

    • start:起始位置(包含)
    • stop:结束位置(不包含)
    • step:步长(可省略,默认为 1)
  • 常见用法:

    s = "abcdef"
    s[:]        # "abcdef"(复制整个字符串)
    s[::-1]     # "fedcba"(反转字符串)
    s[1:4]      # "bcd"
    

10.4 常用字符串方法

方法 说明
.lower() 转小写
.upper() 转大写
.strip() 去除首尾空白
.lstrip() 去除左侧空白
.rstrip() 去除右侧空白
.split(sep) sep 分割为列表
.find(sub) 查找子串位置(未找到返回 -1)
.replace(old, new) 替换子串
len(s) 获取字符串长度(字符数)

10.5 转义字符

转义符 含义
\n 换行
\t 制表符(Tab)
\' 单引号
\" 双引号
\\ 反斜杠本身

常用函数

容器类型
列表
字典
元组
集合

条件语句

嵌套

循环语句
for循环
while循环
任务目标:手写气泡排序法,杨辉三角

十一、库

常用必会的Python内置库:(至少需要了解)

库名 用途
time 获取时间戳、延迟等
datetime 处理日期和时间
random 生成随机数
os 与操作系统交互(文件、路径、环境变量等)
re 正则表达式,自定义规则提取或检查字符【AI 问一下就知道是什么了】
tkinter 简易 UI 界面【学会了可以给自己的对象写一个表白动画】

第三方库:
安装库【建议使用 uv 包管理器来安装】

自定义库:

十二、变量作用域(Scope)

Python 中变量的作用域按 LEGB 规则查找:

  1. Local(局部):函数内部定义的变量。
  2. Enclosing(嵌套):外层函数的变量(闭包)。
  3. Global(全局):模块级别定义的变量。
  4. Built-in(内建):Python 内置名称(如 len, print)。

12.1 局部作用域

  • def 内定义的变量。
  • 一旦在函数内对变量赋值,它就被视为局部变量
  • 若只读取未赋值,则会查找全局变量。

12.2 全局变量声明

  • 使用 global 声明,可在函数内修改全局变量:

    x = 10
    def func():
        global x
        x = 20
    

12.3 嵌套作用域与 nonlocal

  • 在嵌套函数中,若要修改外层函数的变量,使用 nonlocal

    def outer():
        x = 1
        def inner():
            nonlocal x
            x = 2
        inner()
        print(x)  # 输出 2
    

十三、异常处理

基本结构:try-except

try:
    # 可能出错的代码
    risky_code()
except ValueError:
    # 捕获特定异常
    print("值错误!")
except Exception as e:
    # 捕获其他所有异常
    print("发生错误:", e)
  • try:尝试执行可能引发异常的代码块。
  • except:当异常发生时执行的处理代码。
    • 可指定异常类型(如 ValueError, TypeError)。
    • 也可捕获通用异常 Exception

✅ 良好实践:尽量捕获具体异常类型,而非笼统使用 except:

九、占位符

代码结构占位符
表示“此处待实现”。【将来可能会实现,但要保证结构完整】

  • ... :python内置Ellipsis对象,省略号。
  • pass
  • """TODO"""

值占位

  • None:空值
  • NotImplemented:让 Python 尝试 other 的 __radd__

格式化占位【已被新式输出取代,现较不常用】

  • %
    • %s:输出字符串
    • %d:输出int类型数字
    • %f:输出浮点数 %.nf:可以保留n位小数,n=0则不保留小数,四舍五入
    • %x:输出16进制数字
    • : 使用方式:print('%s_%d_%f_%x', %(a,b,c,d))
  • "{ }".format()
    • 命名占位符
      • "{} {}".format("hello", 123) #-> "hello 123"
    • 位置占位符
      • "{name} {value} {}".format(2, name="id", value=123)#->"id 123 2"
  • f"{ }" 【格式化输出】

约定占位符

  • _:for循环不调用【推荐】
    • for _ in range(10):循环体