当前位置:首页 > 物联网 > Freak嵌入式

摘要:

本文主要介绍了在使用Python进行面向对象编程时,Python异常处理的原则-“请求谅解,而非许可”,以及软件设计和Python的编程原则,同时介绍了PEP8规范。

文档和代码获取:

本文档主要介绍如何使用 Python 进行面向对象编程,需要读者对 Python 语法和单片机开发具有基本了解。相比其他讲解 Python 面向对象编程的博客或书籍而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处理、动态图绘制等为应用实例,同时使用 Sourcetrail代码软件对代码进行可视化阅读便于读者理解。

正文

Python异常处理原则“请求谅解,而非许可”

我们可能不难发现异常处理完全可以用if...elif...else 结构来完成,那为什么还要使用异常呢?实际上,Python程序员通常秉持着“请求谅解,而非许可”的原则,即他们首先执行代码,然后解决出现的错误。另一种与之相反的“三思而后行”的原则,实际上恰恰相反。

这样做有很多理由,但最主要的一点是,避免不必要的CPU资源消耗在检查极少出现的情况上。因此,对于极少数的例外情况,使用异常处理是明智之举。进一步探讨这一点,我们可以发现异常处理的语法在流程控制中同样非常有效。就像if语句一样,异常可以用于决策、分支和信息传递。在Python代码中,面对可能出现的错误情况,相比于各种各样的判断,使用异常处理结构更容易阅读和维护。

软件设计的六大原则

  1. 开放封闭原则(Open-Closed Principle, OCP)

    1. 软件实体(类、模块、函数等)应对扩展开放,对修改关闭

    2. 通过抽象和继承等机制实现

  2. 里氏替换原则(Liskov Substitution Principle, LSP)

    1. 子类可以透明地替换父类使用

    2. 子类与父类的参数和返回值应一致

  3. 依赖倒置原则(Dependency Inversion Principle, DIP)

    1. 高层模块不应依赖低层模块,二者都依赖抽象

    2. 抽象不应依赖细节,细节应依赖抽象

  4. 接口隔离原则(Interface Segregation Principle, ISP)

    1. 客户端不应依赖它不需要的接口

    2. 接口应保持单一和最小粒度

  5. 迪米特法则(Law of Demeter, LoD)

    1. 一个软件实体应当尽可能少地与其他实体发生相互作用

    2. 高内聚,低耦合

  6. 单一职责原则(Single Responsibility Principle, SRP)

    1. 一个类应该仅有一个引起它变化的原因

    2. 职责应该明确,避免重复

Python六大编程原则

  1. KISS (Keep It Simple, Stupid)

    1. 保持代码简单明了,尽量避免复杂的设计

    2. 简单易懂的代码更容易编写、维护和调试

  2. DRY (Don't Repeat Yourself)

    1. 避免重复代码,利用函数、模块等特性进行抽象和封装

    2. 减少重复劳动,提高编码效率

  3. Pythonic

    1. 充分利用 Python 的语法特性和标准库

    2. 遵循 PEP 8 等 Python 编码规范,编写优雅、高效的代码

  4. Zen of Python

    • Beautiful is better than ugly.

    • Explicit is better than implicit.

    • Simple is better than complex.

    • Complex is better than complicated.

    • Flat is better than nested.

    • Sparse is better than dense.

    • Readability counts.

    • Special cases aren't special enough to break the rules.

    • Although practicality beats purity.

    • Errors should never pass silently.

    • Unless explicitly silenced.

    • In the face of ambiguity, refuse the temptation to guess.

    • There should be one-- and preferably only one --obvious way to do it.

    • Although that way may not be obvious at first unless you're Dutch.

    • Now is better than never.

    • Although never is often better than right now.

    • If the implementation is hard to explain, it's a bad idea.

    • If the implementation is easy to explain, it may be a good idea.

    • Namespaces are one honking great idea -- let's do more of those!

    • Python is designed to be readable, and, well, Pythonic.

    1. 遵循 Python 的 20 条设计哲学原则,如"美胜于丑"、"明确胜于隐晦"等

    2. 体现 Python 崇尚简单、优雅的理念

  5. Testing Is Important

    1. 重视测试驱动开发,编写全面的单元测试和集成测试

    2. 确保代码质量,方便重构和维护

  6. Batteries Included

    1. 充分利用 Python 丰富的标准库和第三方库

    2. 减少重复造轮子,提高开发效率

PEP8规范

PEP 8 是 Python 编程的事实标准代码风格指南,其主要内容包括:

  1. 命名约定

    1. 变量、函数、模块使用小写字母加下划线

    2. 类名使用驼峰式命名

    3. 常量全部大写

    4. 受保护的实例属性以单个下划线开头

    5. 私有的实例属性以两个下划线开头

  2. 缩进和空白

    1. 使用 4 个空格作为缩进单位

    2. 顶层函数和类定义之间空两行

    3. 二元运算符两侧各加一个空格

  3. 导入风格

    1. 每个 import 语句独占一行

    2. 导入顺序为:标准库、第三方库、自定义库

  4. 行长限制

    1. 每行不超过 79 个字符

    2. 如果超出可以使用括号换行

  5. 注释和文档化

    1. 使用英文编写注释和文档

    2. 函数使用 docstring 描述

  6. 其他建议

    1. 不要使用制表符进行缩进

    2. 避免使用单字母变量名

    3. 慎用from module import *

PEP 8 的目的是通过一致的代码风格来提高代码的可读性和可维护性。遵守这些约定可以让 Python 代码更加 Pythonic。



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭