# Python 编程语言学习笔记
> 📝 编写时间:2025年12月9日
> 🎯 适用对象:Python 初学者至中级开发者
> 🐍 Python 版本:3.10+(推荐使用最新稳定版)
---
## 一、Python 简介与核心特性
Python 是一种**高级、解释型、通用编程语言**,由 Guido van Rossum 于 1991 年首次发布。其设计哲学强调**代码可读性**与**简洁性**,以缩进(Indentation)定义代码块,显著区别于多数使用大括号 `{}` 的语言。
### ✅ 核心优势
- **语法简洁**:接近自然语言,学习曲线平缓
- **丰富标准库**:“batteries included”理念,覆盖文件处理、网络、正则、并发等
- **跨平台支持**:Windows / macOS / Linux 无缝运行
- **强大生态**:PyPI(Python Package Index)拥有超 50 万第三方包
- **多范式支持**:面向对象、函数式、过程式编程均可实现
---
## 二、基础语法速览
### 1. 变量与数据类型
Python 是**动态类型语言**,变量无需声明类型,解释器自动推断。
```python
# 常见内置类型
name = "Alice" # str(字符串,Unicode 编码)
age = 30 # int(任意精度整数)
height = 1.75 # float(双精度浮点数)
is_student = False # bool(True / False)
scores = [85, 92, 78] # list(有序、可变)
info = {"name": "Bob", "age": 25} # dict(键值对,无序)
```
✅ **注意**:
- 变量命名:小写字母 + 下划线(`snake_case`),如 `user_name`
- 字符串支持单引号、双引号、三引号(多行)
### 2. 控制结构
```python
# 条件语句
if age < 18:
print("未成年")
elif age < 60:
print("成年人")
else:
print("老年人")
# for 循环(迭代器协议是 Python 的灵魂!)
for i in range(5): # → 0, 1, 2, 3, 4
print(i)
fruits = ["apple", "banana", "cherry"]
for idx, fruit in enumerate(fruits):
print(f"{idx}: {fruit}")
# while 循环
count = 0
while count < 3:
print("Loop", count)
count += 1
```
---
## 三、核心数据结构详解
| 类型 | 是否可变 | 是否有序 | 典型用途 |
|------|----------|----------|---------|
| `list` | ✅ | ✅ | 动态数组,通用容器 |
| `tuple` | ❌ | ✅ | 不可变序列,常用于函数返回多值 |
| `set` | ✅ | ❌ | 去重、集合运算(交/并/差) |
| `dict` | ✅ | ✅(Python 3.7+ 保证插入顺序) | 映射关系(哈希表实现) |
### 📌 实用技巧
```python
# 列表推导式(List Comprehension)—— Pythonic 写法
squares = [x**2 for x in range(10) if x % 2 == 0]
# → [0, 4, 16, 36, 64]
# 字典合并(Python 3.9+)
d1 = {"a": 1, "b": 2}
d2 = {"b": 3, "c": 4}
merged = d1 | d2 # → {"a": 1, "b": 3, "c": 4}
# 集合操作
A = {1, 2, 3}
B = {2, 3, 4}
print(A & B) # 交集 → {2, 3}
print(A - B) # 差集 → {1}
```
---
## 四、函数与模块化
### 1. 函数定义与参数
```python
def greet(name: str, greeting: str = "Hello") -> str:
"""函数文档字符串:描述功能、参数、返回值"""
return f"{greeting}, {name}!"
# 调用
print(greet("Alice")) # → "Hello, Alice!"
print(greet("Bob", "Hi")) # → "Hi, Bob!"
```
📌 **参数类型灵活**:
- 位置参数(positional)
- 默认参数(default)
- 关键字参数(keyword-only,`*`, `*args`, `**kwargs`)
```python
def flexible(a, b=1, *, c, d=2, **kwargs):
pass
flexible(10, c=3, extra="info") # 合法
# flexible(10, 20, 30) # 报错:c 必须关键字传参
```
### 2. 模块与包管理
- `import math` → 导入整个模块
- `from math import sqrt` → 导入特定对象
- `import package.module as pm` → 别名简化
📦 项目结构示例:
```
my_project/
├── main.py
├── utils/
│ ├── __init__.py # 使 utils 成为包
│ └── helpers.py
└── requirements.txt # 依赖列表(pip freeze > requirements.txt)
```
---
## 五、面向对象编程(OOP)
Python 中**一切皆对象**,类是创建对象的蓝图。
```python
class Person:
species = "Homo sapiens" # 类属性(所有实例共享)
def __init__(self, name: str, age: int):
self.name = name # 实例属性
self._age = age # 约定:_ 开头表示“受保护”(非强制)
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("Age cannot be negative")
self._age = value
def introduce(self):
return f"Hi, I'm {self.name}, {self.age} years old."
# 继承示例
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age)
self.student_id = student_id
def introduce(self): # 方法重写
return super().introduce() + f" My ID: {self.student_id}"
```
💡 **关键概念**:
- `__init__`:构造方法
- `self`:指向当前实例(类似 Java 的 `this`)
- `@property`:将方法伪装成属性,支持封装与验证
- `super()`:调用父类方法
---
## 六、异常处理与调试
```python
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"错误:{e}")
except (ValueError, TypeError) as e:
print("其他错误")
else:
print("无异常时执行")
finally:
print("无论如何都执行(如关闭文件)")
```
🔧 **调试技巧**:
- `print()` 快速定位
- `logging` 模块(比 `print` 更规范)
- `pdb`(Python Debugger):`import pdb; pdb.set_trace()`
- IDE 断点调试(VS Code / PyCharm 推荐)
---
## 七、常用标准库推荐
| 模块 | 用途 |
|------|------|
| `os` / `pathlib` | 文件与路径操作(推荐 `pathlib`,更面向对象) |
| `json` | JSON 编码/解码 |
| `datetime` | 日期时间处理(注意 `datetime` vs `date` vs `time`) |
| `re` | 正则表达式 |
| `collections` | `namedtuple`, `defaultdict`, `Counter` 等增强容器 |
| `itertools` | 高效迭代器工具(`chain`, `groupby`, `product`) |
| `functools` | 高阶函数工具(`lru_cache`, `partial`, `reduce`) |
```python
from collections import Counter
words = ["apple", "banana", "apple", "cherry"]
cnt = Counter(words)
print(cnt.most_common(2)) # → [('apple', 2), ('banana', 1)]
```
---
## 八、虚拟环境与依赖管理(必备技能!)
避免全局包污染,强烈建议为每个项目创建独立环境:
```bash
# 创建虚拟环境(Python 3.3+ 内置 venv)
python -m venv .venv
# 激活(Windows)
.venv\Scripts\activate
# 激活(macOS/Linux)
source .venv/bin/activate
# 安装依赖
pip install requests numpy pandas
# 导出依赖
pip freeze > requirements.txt
```
> ✅ 提示:在 `.gitignore` 中加入 `.venv/`,勿提交虚拟环境!
---
## 九、Pythonic 编程风格建议
1. **遵循 PEP 8**:官方代码风格指南
- 缩进:4 空格(非 Tab)
- 行长 ≤ 79 字符
- 函数/变量:`snake_case`;类名:`PascalCase`
2. **善用内置函数**:`len()`, `range()`, `map()`, `filter()`, `zip()`, `all()`, `any()`
3. **避免重复代码**:DRY(Don’t Repeat Yourself)原则
4. **写文档字符串(docstring)**:用 `"""` 描述模块/类/函数用途
5. **类型提示(Type Hints)**:提升可读性与 IDE 支持(Python 3.5+)
```python
def add(a: int, b: int) -> int:
return a + b
```
---
## 十、学习资源推荐
- 📘 官方文档:[docs.python.org](https://docs.python.org/3/)
- 📺 视频教程:Corey Schafer(YouTube)、莫烦 Python(B站)
- 📚 书籍:《Python Crash Course》《流畅的Python》(Luciano Ramalho)
- 🧪 在线练习:LeetCode(简单题起步)、Codewars、Exercism
- 🐙 GitHub Trending:关注热门 Python 项目(如 FastAPI, LangChain)
---
> 🌟 **结语**:Python 的魅力在于其“简单而不简陋”。掌握基础后,可向 Web 开发(Django / Flask)、数据分析(pandas / NumPy)、人工智能(PyTorch / TensorFlow)、自动化脚本等方向深入。保持动手实践,代码即是最好的笔记。