通过 pySerial 连接串口

通过 pySerial 连接串口 pySerial 是一个 Python 模块。该模块封装了对串行端口的访问。 它提供了在Windows,OSX,Linux,BSD(可能是任何POSIX兼容系统)和IronPython上运行的Python的后端。名为 “serial” 的模块会自动选择适当的后端。 简而言之,pySerial 提供了通过 Python 代码连接串口设备的功……

基于 Pexpect 在开发板执行 TestCase

基于 Pexpect 在开发板执行 TestCase 问题场景 在大多数嵌入式工程环境下,我们通过串口或者网口连接开发板,进行测试或调试。 带有固定步骤,且可通过输出判断执行结果的 TestCase,可以将其转为自动化测试。 通过 ssh 连接开发板,测试用例可以是 Expect 脚本,或者为了方便生成测试报告,使用 Python Unittest 框架。可以通过 Pexpect (Expect 的 Python 实现)来……

《流畅的Python》可迭代的对象、迭代器和生成器

fluent-python-logo

当我在自己的程序中发现用到了模式,我觉得这就表明某个地方出错了。程序的形式应该仅仅反映它所要解决的问题。代码中其他任何外加的形式都是一个信号,(至少对我来说)表明我对问题的抽象还不够深——这通常意味着自己正在手动完成事情,本应该通过写代码来让宏的扩展自动实现。

——Paul Graham, Lisp 黑客和风险投资人

迭代是数据处理的基石。扫描内存中放不下的数据集时,我们需要一种惰性获取数据项的方式,即按需一次获取一个数据项。这就是迭代器模式(Iterator pattern)。

本章说明 Python 是如何内置迭代器模式。

yield 关键字用于构建生成器,其作用于迭代器一样

所有的生成器都是迭代器。它们都实现了迭代器接口,区别于迭代器用于从集合中取出元素,生成器用来生成元素。

在 Python 中,所有集合都可以迭代,迭代器用于支持

  • for 循环
  • 构建和拓展集合类型
  • 逐行遍历文本文件
  • 列表推导、字典推导和集合推导
  • 元祖拆包
  • 调用函数时, * 拆包实参

本章覆盖话题:

  • 使用 iter(...) 内置参数处理可迭代对象的方式
  • 如何使用 Python 实现迭代器模式
  • 生成器函数的工作原理
  • 使用生成器 函数/表达式 代替迭代器
  • 使用标准库中的通用生成器函数
  • 使用 yield from 语句合并生成器
  • 案例: 数据库转换工具中使用生成器函数处理大型数据集
  • 生成器和协程的差异
……

Python 中的方法解析顺序(MRO)

文章转载自: https://hanjianwei.com/2013/07/25/python-mro/ 什么是MRO 对于支持继承的编程语言来说,其方法(属性)可能定义在当前类,也可能来自于基类,所以在方法调用时就需要对当前类和基类进行搜索以确定方法所在的位置。 而搜索的顺序就是所谓的「方法解析顺序」(Method Resolution Order,或MRO)。对于只支持单继承的语言来说,MRO 一般比较简单;而对……

用 Expect 处理命令行程序交互

用 Expect 处理命令行程序交互 shell 把程序交互的特性留给了用户,这意味着有些程序,不能脱离用户输入。比如 passwd 命令。 expect 能够调用其他 unix 程序,处理交互操作。 Expect 脚本登录 SSH 先看一个通过 expect 脚本 SSH 到远程主机的示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/usr/bin/expect set host "192.168.199.231" set user "xiao" set password "xiao" spawn ssh '$user@$host' expect { "*(yes/no)?" { send "yes\r" exp_continue } "*password:" { send "$password\r" } timeout { puts "timed out",exit } } interact 这……

《流畅的Python》接口之从协议到抽象基类

fluent-python-logo

抽象类表示接口。
——Bjarne Stroustrup, C++ 之父

本章讨论的话题是接口:

鸭子类型的代表特征动态协议,到使接口更明确、能验证实现是否符合规定的抽象基类(Abstract Base Class, ABC)。

接口的定义:对象公开方法的子集,让对象在系统中扮演特定的角色。
协议是接口,但不是正式的(只由文档和约定定义),因此协议不能像正式接口那样施加限制。
允许一个类上只实现部分接口。

接口与协议

  • 什么是接口

    对象公开方法的子集,让对象在系统中扮演特定的角色。

  • 鸭子类型与动态协议

  • 受保护的类型与私有类型不能在接口中

  • 可以把公开的数据属性放在接口中

……

计算机科学自学指南

自学计算机科学 本文档是对TeachYourselfCS内容的中文翻译,原作者为Ozan Onay和Myles Byrne。如需了解翻译相关信息或帮助改进翻译,请参见本文档结尾。 This document is a Chinese translation of TeachYourselfCS, which is written by Ozan Onay and Myles Byrne. For more information about this translation, please refer to the end of this document. 如果你是一个自学成才的工程师,或者从编程培训班毕业,那么你很有必要……

使用Graphviz创建图表

使用Graphviz创建图表 转载自:https://ncona.com/2020/06/create-diagrams-with-code-using-graphviz/ 您是否曾为绘制过架构图时重复的单击和拖动而感到乏味? 您是否需要对该图进行修改发现改动却很复杂? Graphviz 是一个开源的图形可视化软件,它使我……

如何配置你的 VSCode

如何配置你的 VSCode 这篇主要分享下 VSCode 的用法,以及如何使用其强大的插件来提升效率,我列出了一些自己用到的比较使用的插件。 在拓展里面都能看到插件的相关文档,使用与配置。 欢迎大家补充 :) 本地化 Chinese (Simplified) Language Pack for Visual Studio Code 适用于 VS Code 的中文(简体)语言包 开发 Remote Development An extension pack that lets you open any folder in a container, on a remote machine, or in WSL and take advantage of VS Code's full feature set. 可在远程主机……

用 prettytable 在终端输出漂亮的表格

转载来源:https://linuxops.org/blog/python/prettytable.html 一、前言 最近在用python写一个小工具,这个工具主要就是用来管理各种资源的信息,比如阿里云的ECS等信息,因为我工作的电脑使用的是LINUX,所以就想着用python写一个命令行的管理工具,……