python29
复习知识点:函数和类
1. 函数(Function)
- 本质:封装特定功能的代码块,接收输入(参数)并返回输出(结果)。
- 特点:
- 无状态:每次调用独立,不保留数据(除非用全局变量或闭包)。
- 即用即抛:像一次性工具,用完即释放内存。
- 常见场景:计算、数据处理、工具函数(如
len()
,print()
)。
2. 类(Class)
- 本质:创建对象的蓝图,包含数据(属性)和操作数据的方法(函数)。
- 特点:
- 有状态:对象实例可以保存数据(如神经网络的权重)。
- 继承和多态:支持面向对象编程的三大特性(封装、继承、多态)。
- 常见场景:构建复杂系统(如深度学习模型、游戏角色)。
学习心得:从混乱到清晰
1. 对函数和类的理解
- 初学阶段:
- 函数是“公式”,类是“模板”——但总觉得类很复杂,为什么要用它?
- 写代码时总用函数堆砌,遇到复杂逻辑时代码变得难以维护。
- 实践后顿悟:
- 函数是工具:适合单一职责的任务(如计算均值、格式化字符串)。
- 类是系统:当需要管理状态和复杂行为时,用类组织代码更清晰。
- 例子:
- 写游戏时,用
class Player
管理角色的位置、血量、攻击方法,比用分散的函数+全局变量更安全。 - 在PyTorch中,自定义模型必须继承
nn.Module
,因为类能保存参数并定义计算流程。
- 写游戏时,用
2. Python语言的理解
- “胶水语言”的灵活性:
- 动态类型、语法简洁,适合快速验证想法(比如Jupyter中随手写函数测试)。
- 但灵活性也带来代价:大型项目中需谨慎设计,否则易变成“面条代码”。
- “一切皆对象”的哲学:
- 函数是对象,类是对象,甚至模块也是对象——这种设计让装饰器、元类等高级特性成为可能。
- 例如:装饰器本质上是一个“处理函数的函数”,而类装饰器可以动态修改类的行为。
对Python的“工具观”
-
“快速原型”利器:
- 语法简洁,库生态丰富(如NumPy、PyTorch),适合快速实现算法。
- 但性能敏感的场景需换其他语言(如C++)或优化手段(如JIT编译)。
-
“双刃剑”般的动态性:
- 动态类型让代码灵活,但也容易隐藏类型错误(直到运行时才报错)。
- 解决方案:用类型注解(Type Hints)和静态检查工具(如mypy)。
-
社区驱动的哲学:
- Python的成功离不开开源社区,许多设计决策(如PEP提案)体现了实用主义。
- 例如:
@dataclass
装饰器的出现,让定义数据类变得极其简洁。
总结:代码是思想的映射
- 函数是动词:描述“做什么”(如
calculate_loss
)。 - 类是名词:描述“是什么”(如
NeuralNetwork
)。 - Python是笔:用它清晰地表达逻辑,而非炫耀语法技巧。
@浙大疏锦行-CSDN博客