摘要:
目录 | 上一节 (7.5 装饰方法 | 下一节 (8.2 日志) 8.1 测试 多测试,少调试(Testing Rocks, Debugging Sucks) Python 的动态性质使得测试对大多数程序而言至关重要。编译器不会发现你的 bug,发现 bug 的唯一方式是运行代码,并确保尝试了所有 阅读全文
摘要:
目录 | 上一节 (7 高级主题) | 下一节 (9 包) 8. 测试和调试 本节介绍与测试、日志和调试有关的基本主题。 8.1 测试 8.2 日志,错误处理和诊断 8.3 调试 目录 | 上一节 (7 高级主题) | 下一节 (9 包) 注:完整翻译见 https://github.com/cod 阅读全文
摘要:
目录 | 上一节 (7.4 装饰器) | 下一节 (8 测试和调试) 7.5 装饰方法 本节讨论一些与方法定义结合使用的内置装饰器。 预定义的装饰器 在类定义中,有许多预定义的装饰器用于指定特殊类型的方法。 class Foo: def bar(self,a): ... @staticmethod 阅读全文
摘要:
目录 | 上一节 (1 Python 简介) | 下一节(3 程序组织) 2. 处理数据 要编写有用的程序,您需要能够处理数据。本节介绍 Python的核心数据结构: 元组(tuple),列表(list),集合(set)和字典(dict),并讨论常见的数据处理习惯用法。本节的最后一部分深入探讨 Py 阅读全文
摘要:
目录 | 上一节 (7.3 返回函数) | 下一节 (7.5 装饰方法) 7.4 函数装饰器 本节介绍装饰器(decorator)。因为这是一个高级主题,所以我们只做简单介绍。 译注:根据译者个人的猜测,在《设计模式》(《 Design Patterns: Elements of Reusable 阅读全文
摘要:
目录 | 上一节 (6.4 生成器表达式) | 下一节 (7.2 匿名函数) 7.1 可变参数 本节介绍可变(variadic)参数。有时,可变参数使用 *args 和 **kwargs 进行表示。 可变位置参数(*args) 如果一个函数接受任意数量的(位置)参数,那么我们称该函数使用了可变参数( 阅读全文
摘要:
目录| 上一节 (6 生成器) | 下一节 (8 测试和调试) 7. 高级主题 本节,我们将探究一些高级的 Python 特性。你可能会在日常编程中遇到这些特性。虽然许多特性本可以在前面的章节中介绍,但是却没有介绍并不是为了让你在当时避免肝脑涂地。 应该强调的是:本节主题旨在对这些(特性的)思想做基 阅读全文
摘要:
目录 | 上一节 (6.2 自定义迭代) | 下一节 (6.4 生成器表达式) 6.3 生产者,消费者和管道 生成器在设置各种生产者/消费者问题(producer/consumer problems)和数据流管道(pipeline)中非常有用。本节将对此进行讨论。 生产者消费者问题 生成器与各种形式 阅读全文
摘要:
目录 | 上一节 (6.1 迭代协议) | 下一节 (6.3 生产者/消费者) 6.2 自定义迭代 本节探究如何使用生成器函数自定义迭代。 问题 假设你想要自定义迭代模式。 例如:倒数: >>> for x in countdown(10): ... print(x, end=' ') ... 10 阅读全文
摘要:
目录 | 上一节 (5.2 封装) | 下一节 (6.2 自定义迭代) 6.1 迭代协议 本节将探究迭代的底层过程。 迭代无处不在 许多对象都支持迭代: a = 'hello' for c in a: # Loop over characters in a ... b = { 'name': 'Da 阅读全文