当前位置: 首页 > news >正文

python29

复习知识点:函数和类

1. 函数(Function)
  • 本质:封装特定功能的代码块,接收输入(参数)并返回输出(结果)。
  • 特点
    • 无状态:每次调用独立,不保留数据(除非用全局变量或闭包)。
    • 即用即抛:像一次性工具,用完即释放内存。
  • 常见场景:计算、数据处理、工具函数(如 len()print())。
2. 类(Class)
  • 本质:创建对象的蓝图,包含数据(属性)和操作数据的方法(函数)。
  • 特点
    • 有状态:对象实例可以保存数据(如神经网络的权重)。
    • 继承和多态:支持面向对象编程的三大特性(封装、继承、多态)。
  • 常见场景:构建复杂系统(如深度学习模型、游戏角色)。

学习心得:从混乱到清晰

1. 对函数和类的理解
  • 初学阶段
    • 函数是“公式”,类是“模板”——但总觉得类很复杂,为什么要用它?
    • 写代码时总用函数堆砌,遇到复杂逻辑时代码变得难以维护。
  • 实践后顿悟
    • 函数是工具:适合单一职责的任务(如计算均值、格式化字符串)。
    • 类是系统:当需要管理状态和复杂行为时,用类组织代码更清晰。
    • 例子
      • 写游戏时,用 class Player 管理角色的位置、血量、攻击方法,比用分散的函数+全局变量更安全。
      • 在PyTorch中,自定义模型必须继承 nn.Module,因为类能保存参数并定义计算流程。
2. Python语言的理解
  • “胶水语言”的灵活性
    • 动态类型、语法简洁,适合快速验证想法(比如Jupyter中随手写函数测试)。
    • 但灵活性也带来代价:大型项目中需谨慎设计,否则易变成“面条代码”。
  • “一切皆对象”的哲学
    • 函数是对象,类是对象,甚至模块也是对象——这种设计让装饰器、元类等高级特性成为可能。
    • 例如:装饰器本质上是一个“处理函数的函数”,而类装饰器可以动态修改类的行为。

对Python的“工具观”

  1. “快速原型”利器

    • 语法简洁,库生态丰富(如NumPy、PyTorch),适合快速实现算法。
    • 但性能敏感的场景需换其他语言(如C++)或优化手段(如JIT编译)。
  2. “双刃剑”般的动态性

    • 动态类型让代码灵活,但也容易隐藏类型错误(直到运行时才报错)。
    • 解决方案:用类型注解(Type Hints)和静态检查工具(如mypy)。
  3. 社区驱动的哲学

    • Python的成功离不开开源社区,许多设计决策(如PEP提案)体现了实用主义。
    • 例如:@dataclass 装饰器的出现,让定义数据类变得极其简洁。

总结:代码是思想的映射

  • 函数是动词:描述“做什么”(如 calculate_loss)。
  • 类是名词:描述“是什么”(如 NeuralNetwork)。
  • Python是笔:用它清晰地表达逻辑,而非炫耀语法技巧。

@浙大疏锦行-CSDN博客

http://www.xdnf.cn/news/519805.html

相关文章:

  • 【从基础到模型网络】深度学习-语义分割-ROI
  • C++ - 网络编程之初始连接(Winsock2 概述、初始连接案例、初始连接案例解读)
  • 封装、继承、多态的理解
  • Java面试实战:从Spring Boot到分布式缓存的深度探索
  • 程序代码篇---python获取http界面上按钮或者数据输入
  • 批量下载AlphaFold结构
  • leetcode刷题日记——翻转二叉树
  • 第11章 JDBC与MySQL数据库
  • UI架构的历史与基础入门
  • GOP模式调节画面质量讲解
  • 八股碎碎念01——HashMap原理
  • GESP编程能力等级认证C++3级1-数组1
  • 研读论文《Attention Is All You Need》(6)
  • 软考复习——部署
  • 嵌入式通信协议(二)——IIC总线
  • 《P5283 [十二省联考 2019] 异或粽子》
  • OpenAI Chat API 详解:打造智能对话应用的基石
  • 牛客网NC210769:孪生素数对问题解析与实现
  • 5月18日day29打卡
  • Listener method could not be invoked with the incoming message
  • 《C++与OpenCV实战:图像增强大核心算法详解》​​
  • [ctfshow web入门] web122
  • Git目录分析与第一个git commit文件
  • 20倍云台球机是一种高性能的监控设备
  • PortSwigger Labs CSRF详细教程
  • C++学习:六个月从基础到就业——C++17:string_view与filesystem
  • Vue3前端xlsx导出
  • 微服务项目->在线oj系统(Java版 - 3)
  • 王树森推荐系统公开课 排序02:Multi-gate Mixture-of-Experts (MMoE)
  • 【AI面试秘籍】| 第15期:大模型如何稳定输出合法JSON?