技术架构
/
Feb 08, 2026
Step 6 第五篇:军争篇 (Maneuvering) —— 封装复用,函数与模块
<!-- Title: 第五篇:军争篇 (Maneuvering) —— 封装复用,函数与模块 -->
<!-- ID: 140 -->
<!-- Series: Python 兵法:零基础建站与 AI 编程实战 (ID: 7) -->
<!-- Author: 潘卫 -->
## 第五篇:军争篇 (Maneuvering) —— 封装复用,函数与模块
### 【原文】
> **故迂其途,而诱之以利,后人发,先人至,此知迂直之计者也。**
> **译文**:把弯路变成直路,后发而先至,这才是懂战术的人。
### 【兵法详解】
编程中最大的忌讳就是“重复”。如果你发现一段代码(比如计算伤害公式)在很多地方都要用,不要到处复制粘贴。复制粘贴是万恶之源,一旦公式要改,你得改几十个地方,容易遗漏。
要把这段逻辑封装成一个**锦囊**(函数)。用的时候,打开锦囊即可。
### 【1. 函数 (Function):锦囊妙计】
函数是组织好的,可重复使用的代码段。
```python
# 定义锦囊:计算伤害
# def 是 define 的缩写
# params: base_attack (基础攻击), defense (敌人防御), is_crit (是否暴击)
def calculate_damage(base_attack, defense, is_crit=False):
damage = base_attack - defense
if is_crit:
damage = damage * 2 # 暴击伤害翻倍
print("🔥 暴击!")
if damage < 0:
damage = 0
return damage # 返回计算结果,不打印
# 战场调用
dmg1 = calculate_damage(100, 50) # 普通攻击
dmg2 = calculate_damage(100, 50, is_crit=True) # 暴击调用
print(f"普通伤害 {dmg1}, 暴击伤害 {dmg2}")
```
* ***args 与 **kwargs**:当你不知道要传多少个兵力时使用。
* `*args`:接收任意数量的位置参数(打包成元组)。
* `**kwargs`:接收任意数量的关键字参数(打包成字典)。
### 【2. 模块 (Module):联合作战】
当函数写了几百个时,一个文件装不下怎么办?就把它们分类放到不同的 `.py` 文件里。这些文件就叫模块。
* `combat.py` (存放战斗相关函数)
* `supply.py` (存放补给相关函数)
* `main.py` (主帅大营)
在 `main.py` 中:
```python
import combat # 呼叫战斗部队
from supply import eat # 只呼叫补给部队里的“吃饭”功能
combat.attack()
eat()
```
### 【3. 作用域 (Scope):军令权限】
* **局部变量**:在函数内部定义的变量,出了函数就失效了(士兵退伍)。
* **全局变量**:在文件最外层定义的变量,到处都能用(全军通报)。
* **LEGB 规则**:查找变量的顺序是 Local(局部) -> Enclosing(嵌套) -> Global(全局) -> Built-in(内置)。
---
P
潘卫
南京市沉思波网络科技有限责任公司创始人、CEO
您的观点 (可选)
🎁 注册账号,同步您的个性化学习路径