一、为什么学习 Python ?


1. Python 发展与优势

Python 诞生初期因硬件性能限制,其 “开发效率优先” 的设计理念未能凸显其优势。但随着硬件性能提升、软件复杂度增加,企业愈发重视开发效率 —— 相比为节省毫秒级执行时间而增加数倍开发量,Python 凭借简洁的语法、极高的开发效率成为首选。

  • 近年来,Python 因以下领域的爆发式发展迎来普及:
    • 云计算:开源云平台 OpenStack 基于 Python 开发
    • 人工智能 / 机器学习:首选开发语言
    • TIOBE 排行榜:2020 年至今稳居前列,2024-2025 年成为全球最受欢迎编程语言

TIOBE 编程语言排行榜前10

Python 开发人员是收入最高的开发人员之一,特别是在数据科学,机器学习和 Web 开发方面。

2. Python 开发者的薪资概况

城市等级 代表城市 初级岗 (1-2年) 中级岗 (3-5年) 高级岗 (5年+)
一线城市 北京 / 上海 / 深圳 10k-18k 25k-40k 45k-90k
新一线 杭州 / 广州 / 成都 / 武汉 8k-15k 20k-35k 35k-70k
二线城市 西安 / 重庆 / 南京 6k-12k 15k-25k 25k-50k
三线及以下 地级市 4k-8k 10k-18k 18k-30k

3. python 应用场景

python1_00

4. Python 容易入门且功能强大

  • Python 核心特点
    • 易入门:语法接近自然语言,学习曲线平缓
    • 功能强大:丰富的标准库和第三方库(”内置电池” 理念)
    • 跨平台:支持 Windows / macOS / Linux 等主流系统

如果你有一定的编程语言基础,学习 Python 也是不错的选择,因为 Python 很可能就是未来开发的主流方向,多学一门语言,多一个防身技能。而且 Python 有强大的功能库,能非常快速的开发工具,为你的本职开发工作提供护航。

二、Python 简介


本 Python3 课程专为编程初学者打造,兼顾知识点巩固与系统复习

💡为方便零基础同学夯实基础、有基础同学查漏补缺,课程练习题分为两部分:

  • 第一部分紧扣本章知识点,用于即时巩固;
  • 第二部分需结合后续内容学习,循序渐进提升能力。
  • 其中目录和小节带有📚的初学者可跳过

(因为官方宣布2020 年 1 月 1 日, 停止 Python 2 的更新,所以本教程主要针对 Python 3.x 版本的学习,Python 2 与 Python 3 的区别请参考这篇文章。)

1. Python 历史

Python 由著名的 ” 龟叔 “ Guido van Rossum 于 1989 年圣诞节期间开发,是一门解释型、高级、通用型编程语言
现在,全世界差不多有 600 多种编程语言,但流行的编程语言也就那么 20 来种。不知道你有没有听说过 TIOBE 排行榜。

这是 2025 年 12 月编程语言排行榜 TOP17 榜单

TIOBE 编程语言排行榜前17

如果你感兴趣的话可以点击TIOBE 编程语言排行榜自行查看

总的来说,这几种编程语言各有千秋,也能看出最近几年 Python 的发展非常的快,特别最近流行的机器学习,数据分析,更让 Python 快速的发展起来。

2. Python 的核心优势

  • 代码简洁:相比其他语言,实现相同功能的代码量更少
  • 生态丰富:覆盖网络、文件、GUI、数据库、AI 等领域的成熟库
  • 大厂应用:Google、YouTube、Instagram、豆瓣、NASA 等均大规模使用

3. Python 的缺点

  • 运行速度慢:和 C 程序相比非常慢,因为 Python解释型语言,你的代码在执行时会一行一行地翻译成 CPU 能理解的机器码,这个翻译过程非常耗时,所以很慢。而 C 程序是运行前直接编译成 CPU 能执行的机器码,所以非常快。(但可通过 C 扩展优化)
  • 代码不能加密:如果要发布你的 Python 程序,实际上就是发布源代码JAVA , C 这些编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。
  • GIL 限制:全局解释器锁导致多线程无法充分利用多核。

三、Python 3.12 新特性📚


  • 类型参数语法
  • f-string 多行格式化
  • 模式匹配增强

1. 类型参数语法

这个特性彻底简化了泛型的写法,之前需要大量样板代码定义的泛型,现在可以直接内联声明,不用再手动定义 TypeVar 了,大幅减少了类型提示的代码量。

==泛型函数示例==

1
2
3
4
5
6
7
8
9
10
# 旧写法(3.11 及之前)
from typing import TypeVar
T = TypeVar('T') # 必须先手动定义类型变量
def max(a: T, b: T) -> T:
return a if a > b else b

# 新写法(3.12)
# 直接在函数名后声明类型参数,一行搞定
def max[T](a: T, b: T) -> T:
return a if a > b else b

==泛型类示例==

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 旧写法
from typing import Generic, TypeVar
T = TypeVar('T')
class Box(Generic[T]):
def __init__(self, value: T):
self.value = value
def get(self) -> T:
return self.value

# 新写法
# 直接在类名后声明类型参数
class Box[T]:
def __init__(self, value: T):
self.value = value
def get(self) -> T:
return self.value

==泛型类型别名示例==

1
2
3
4
5
6
7
8
# 旧写法
from typing import TypeVar, Tuple
T = TypeVar('T')
Point = Tuple[T, T]

# 新写法
# 直接定义带泛型的类型别名
type Point[T] = tuple[T, T]

2. f-string 多行格式化

Python 3.12 彻底放开了 f-string 的语法限制,之前不能在 f-string 的表达式里使用换行、反斜杠、嵌套引号的问题全部解决,现在可以在 f-string 里写任意合法的 Python 表达式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
name = "小明"
age = 18
scores = [90, 85, 95]

# 3.12 支持的新能力:
# 1. 多行的 f-string 本身
# 2. 表达式内部可以换行(之前版本会直接报错)
# 3. 任意嵌套的引号与 f-string
report = f"""
===== 学生成绩报告 =====
姓名:{name}
年龄:{age}
状态:{
# 表达式内部可以换行,让长逻辑更清晰
"成年" if age >= 18 else "未成年"
}
平均分:{sum(scores) / len(scores):.2f}
总分:{sum(scores)}
"""

print(report)

运行输出:

1
2
3
4
5
6
===== 学生成绩报告 =====
姓名:小明
年龄:18
状态:成年
平均分:90.00
总分:270

同时,现在还支持任意深度的 f-string 嵌套,彻底解决了之前的嵌套深度限制:

1
2
3
# 任意嵌套的 f-string,之前版本会报错
result = f"{f"{ f"{f"{f"{ 1+1 }"} "}"}"}"
print(result) # 输出 2

3. 模式匹配增强

Python 3.12 对模式匹配(match 语句)做了大幅增强,包括:

  • 性能大幅优化,模式匹配的执行速度提升了 2 倍以上
  • 支持更灵活的嵌套数据结构匹配,比如嵌套的字典、自定义类
  • 更灵活的条件守卫,处理复杂的匹配逻辑

示例:处理 API 响应的嵌套数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def handle_response(response):
match response:
# 匹配嵌套的用户字典,同时提取字段并加条件判断
case {
"code": 200,
"data": {
"user": {"name": str(name), "age": int(age)}
}
} if age >= 18:
return f"处理成年用户:{name}"

# 匹配 404 错误响应
case {"code": 404, "error": str(msg)}:
return f"资源未找到:{msg}"

# 匹配服务器错误
case {"code": 500}:
return "服务器内部错误"

# 默认兜底情况
case _:
return f"未知响应:{response}"

# 测试
print(handle_response({
"code": 200,
"data": {"user": {"name": "小明", "age": 18}}
}))
# 输出:处理成年用户:小明

4. Python 目录

python-目录