我为什么选择这样一份经常出差的工作

2023-09-27
阅读 1 分钟
240
这几个月进入出差模式,在酒店与工厂两点一线之间往返。周五,在返回酒店途中,一名同事问我:“你工作了那么多年,为什么选择这样一份出差的工作?”,言外之意就是出差不方便,与家人、朋友聚少离多。

C语言实现解一元二次方程

2023-07-17
阅读 3 分钟
191
《Programming Abstractions In C》今日完成进度:p67-p68,通过解一元二次方程来理解指针的其中一个用途:Pointers facilitate sharing data between different parts of a program。完整代码见:[链接]

关于扑克牌的一些讨论——《Fluent Python 2》读书笔记

2022-05-14
阅读 2 分钟
625
类名为“FrenchDeck”——看书的时候还好奇为什么使用“French”呢,难道扑克牌是法国人发明的?根据维基百科的解释: The most common type of playing card is that found in the French-suited,standard 52-card deck. 即最常见的纸牌类型是法国式的标准52张纸牌(注:代码里没包括“鬼牌”)。

翻译:《实用的Python编程》InstructorNotes

2021-04-24
阅读 5 分钟
945
一些人会在一个典型的、为期三天的公司培训中进行教学,本说明就是提供给这些教学人员的。在如何教授自己的课程方面,这些说明可能会给你带来一些启发。
封面图

翻译:《实用的Python编程》TheEnd

2021-04-20
阅读 1 分钟
984
完结!你已经完成了本课程。感谢你的关注,感谢你花时间和精力学习本课程。祝你在未来的 Python 编程中快乐并有所收获。我总是很高兴能够收到反馈。你可以在 [链接] 或者推特( @dabeaz )上找到我。— — 戴维·比兹利(David Beazley)目录注:完整翻译见 [链接]
封面图

翻译:《实用的Python编程》09_03_Distribution

2021-04-19
阅读 1 分钟
870
目录 | 上一节 (9.2 第三方包) | [下一节 (完结)]()9.3 Distribution版本分发在某些时候,你可能想要将自己的代码提供给其他人——可能只是同事(使用)。本节给出执行此操作的最基本技术。更多详细信息,请参考 Python 打包用户指南。创建 setup.py 文件请添加一个 setup.py 到项目目录的顶层。 {代码...} 创建 MANIFEST....
封面图

翻译:《实用的Python编程》09_02_Third_party

2021-04-18
阅读 2 分钟
1k
Python 拥有一个包含各种内置模块的大型库(自带电池(batteries included))(译注:“自带电池”来自于官方文档的翻译,意为“功能齐全”)。
封面图

翻译:《实用的Python编程》09_01_Packages

2021-04-16
阅读 5 分钟
1k
目录| 上一节 (8.3 调试) | 下一节 (9.2 第三方包)9.1 包如果编写一个较大的程序,我们并不真的想在顶层将其组织为一个个独立文件的大型集合。本节对包(package)进行介绍。模块任何一个 Python 源文件称为一个模块(module)。 {代码...} 一条 import 语句加载并执行 一个模块。 {代码...} 包 vs 模块对于较大的代码集...
封面图

翻译:《实用的Python编程》09_00_Overview

2021-04-13
阅读 1 分钟
855
在 Python 开发中,打包(packaging)是一个演进的,复杂的主题。本节主要关注一些通用的代码组织原则,而不是特定的工具。无论以后使用那种工具来分发代码或者管理依赖,这些通用的代码组织原则都是有用的。
封面图

翻译:《实用的Python编程》08_03_Debugging

2021-04-11
阅读 3 分钟
1.1k
目录 | 上一节 (8.2 日志) | [下一节 (9 包)]()8.3 调试调试建议假设程序崩溃了: {代码...} 那么现在该怎么办呢?阅读回溯信息最后一行是程序崩溃的具体原因: {代码...} 不过,回溯信息并不总是那么易于阅读或理解。专业建议:将整个回溯粘贴到谷歌。使用交互式解释器(REPL)执行脚本的 时候,可以使用选项 -i 使 Pyt...
封面图

翻译:《实用的Python编程》08_02_Logging

2021-04-10
阅读 6 分钟
976
logging 模块是用于记录诊断信息的 Python 标准库模块。日志模块非常庞大,具有许多复杂的功能。我们将会展示一个简单的例子来说明其用处。
封面图

翻译:《实用的Python编程》08_01_Testing

2021-04-09
阅读 4 分钟
1.1k
Python 的动态性质使得测试对大多数程序而言至关重要。编译器不会发现你的 bug,发现 bug 的唯一方式是运行代码,并确保尝试了所有的特性。
封面图

翻译:《实用的Python编程》08_00_Overview

2021-04-08
阅读 1 分钟
1k
目录 | 上一节 (7 高级主题) | [下一节 (9 包)]()8. 测试和调试本节介绍与测试、日志和调试有关的基本主题。[8.1 测试]()[8.2 日志,错误处理和诊断]()[8.3 调试]()目录 | 上一节 (7 高级主题) | [下一节 (9 包)]()注:完整翻译见 [链接]
封面图

翻译:《实用的Python编程》07_05_Decorated_methods

2021-04-07
阅读 4 分钟
1.1k
目录 | 上一节 (7.4 装饰器) | 下一节 (8 测试和调试)7.5 装饰方法本节讨论一些与方法定义结合使用的内置装饰器。预定义的装饰器在类定义中,有许多预定义的装饰器用于指定特殊类型的方法。 {代码...} 让我们逐个查看吧。静态方法@staticmethod 用于定义所谓的静态类方法( static class method,来自于 C++/Java)。静...
封面图

翻译:《实用的Python编程》02_00_Overview

2021-04-06
阅读 1 分钟
1.1k
要编写有用的程序,您需要能够处理数据。本节介绍 Python的核心数据结构: 元组(tuple),列表(list),集合(set)和字典(dict),并讨论常见的数据处理习惯用法。本节的最后一部分深入探讨 Python 的底层对象模型。
封面图

翻译:《实用的Python编程》07_04_Function_decorators

2021-03-23
阅读 2 分钟
1.2k
译注:根据译者个人的猜测,在《设计模式》(《 Design Patterns: Elements of Reusable Object-Oriented Software》)一书中写到 decorator also known as wrapper,所以下文提到包装器(wrapper),其实说的就是装饰器。这里为了保持和原文一致,所以翻译的时候没有将“包装器”替换为“装饰器”。
封面图

翻译:《实用的Python编程》07_03_Returning_functions

2021-03-22
阅读 3 分钟
937
目录 | 上一节 (7.2 匿名函数) | 下一节 (7.4 装饰器)7.3 返回函数本节介绍使用函数创建其它函数的思想。简介考虑以下函数: {代码...} 这是返回其它函数的函数。 {代码...} 局部变量请观察内部函数是如何引用外部函数定义的变量的。 {代码...} 进一步观察会发现,在 add() 函数结束后,这些变量仍然保持存活。 {代码......
封面图

翻译:《实用的Python编程》07_02_Anonymous_function

2021-03-21
阅读 3 分钟
1.3k
也可以进行降序排序(译注:原文使用的是 sort in reverse order,很多时候翻译为倒序排序或者反向排序,个人认为容易引起歧义,故翻译为降序排序):
封面图

翻译:《实用的Python编程》07_01_Variable_arguments

2021-03-20
阅读 4 分钟
1k
目录 | 上一节 (6.4 生成器表达式) | 下一节 (7.2 匿名函数)7.1 可变参数本节介绍可变(variadic)参数。有时,可变参数使用 *args 和 **kwargs 进行表示。可变位置参数(*args)如果一个函数接受任意数量的(位置)参数,那么我们称该函数使用了可变参数(variable arguments)。示例: {代码...} 函数调用: {代码...}...
封面图

翻译:《实用的Python编程》07_00_Overview

2021-03-19
阅读 1 分钟
893
本节,我们将探究一些高级的 Python 特性。你可能会在日常编程中遇到这些特性。虽然许多特性本可以在前面的章节中介绍,但是却没有介绍并不是为了让你在当时避免肝脑涂地。
封面图

翻译:《实用的Python编程》06_04_More_generators

2021-03-18
阅读 3 分钟
1.1k
目录 | 上一节 (6.3 生产者/消费者) | 下一节 (7 高级主题)6.4 有关生成器的更多信息本节介绍其它与生成器相关的主题,包括生成器表达式(generator expressions)和 itertools 模块。生成器表达式生成器表达式可以理解为列表解析式(list comprehension)的生成器版本: {代码...} 生成器表达式与列表列表解析式的区别...
封面图

翻译:《实用的Python编程》06_03_Producers_consumers

2021-03-17
阅读 5 分钟
984
生成器在设置各种生产者/消费者问题(producer/consumer problems)和数据流管道(pipeline)中非常有用。本节将对此进行讨论。
封面图

翻译:《实用的Python编程》06_02_Customizing_iteration

2021-03-16
阅读 4 分钟
931
目录 | 上一节 (6.1 迭代协议) | 下一节 (6.3 生产者/消费者)6.2 自定义迭代本节探究如何使用生成器函数自定义迭代。问题假设你想要自定义迭代模式。例如:倒数: {代码...} 有一个j简单方法可以做到这一点。生成器生成器(generator)是定义了迭代的函数: {代码...} 示例: {代码...} 任何使用了 yield 语句的函数称为...
封面图

翻译:《实用的Python编程》06_01_Iteration_protocol

2021-03-15
阅读 5 分钟
944
目录 | 上一节 (5.2 封装) | 下一节 (6.2 自定义迭代)6.1 迭代协议本节将探究迭代的底层过程。迭代无处不在许多对象都支持迭代: {代码...} 迭代:协议考虑以下 for 语句: {代码...} for 语句的背后发生了什么? {代码...} 所有可应用于 for-loop 的对象都实现了上述底层迭代协议。示例:手动迭代一个列表。 {代码...} ...
封面图

翻译:《实用的Python编程》06_00_Overview

2021-03-14
阅读 1 分钟
888
在 Python 语言中,迭代(for 循环)是最常用的编程模式之一。程序执行大量的迭代来处理列表、读取文件、查询数据库......Python 最强大的特性之一就是能够以所谓的“生成器函数(generator function)”形式自定义和重新定义迭代。本节将对生成器主题进行介绍。最后,你将学习以一种有趣的方式编写程序来处理实时流数据。
封面图

翻译:《实用的Python编程》05_02_Classes_encapsulation

2021-03-13
阅读 6 分钟
1k
虽然类的主要作用之一是封装对象的属性和内部实现细节。但是,类还定义了外界用来操作该对象的公有接口(public interface)。实现细节与公有接口之间的区别很重要。
封面图

翻译:《实用的Python编程》05_01_Dicts_revisited

2021-03-12
阅读 8 分钟
873
目录 | 上一节 (4.4 异常) | 下一节 (5.2 封装)5.1 再谈字典Python 对象系统主要基于字典实现。本节将对此进行讨论。字典字典是命名值(named values)的集合。 {代码...} 虽然字典常用于简单的数据结构,但是字典也用于解释器的关键部分。字典可能是 Python 中最重要的数据类型。字典和模块在模块内,字典存储所有的全...
封面图

翻译:《实用的Python编程》05_00_Overview

2021-03-12
阅读 1 分钟
857
本节介绍 Python 对象的内部工作原理。来自其它语言的程序员通常会发现 Python 的类概念缺乏特性。例如,没有访问控制(access-control)的概念(如:private,protected),self 参数让人感觉很奇怪,并且,坦白地说,使用对象有时候让人感到“一切都是开放的”。虽然某种程度上来说也许是这样,但是我们要了解其工作原理...
封面图

翻译:《实用的Python编程》05_00_Overview

2021-03-12
阅读 1 分钟
882
本节介绍 Python 对象的内部工作原理。来自其它语言的程序员通常会发现 Python 的类概念缺乏特性。例如,没有访问控制(access-control)的概念(如:private,protected),self 参数让人感觉很奇怪,并且,坦白地说,使用对象有时候让人感到“一切都是开放的”。虽然某种程度上来说也许是这样,但是我们要了解其工作原理...
封面图

翻译:《实用的Python编程》04_04_Defining_exceptions

2021-03-10
阅读 1 分钟
1.1k
目录 | 上一节 (4.3 特殊方法) | 下一节 (5 对象模型)4.4 定义异常用户可以通过类实现自定义异常: {代码...} 异常类始终继承自 Exception 它们通常是空类。空类内部使用 pass 表示。你也可以对异常进行分层: {代码...} 练习练习 4.11:自定义异常通常情况下,为库定义自己的异常是一种良好的习惯。这样可以更容易区分...
封面图