随笔分类 - 实用的Python编程
《practical python programming》的中文翻译,以意译为主,目录不翻译,只翻译内容。英文原版见:https://github.com/dabeaz-course/practical-python
摘要:实用的 Python 编程——讲师说明 作者:戴维·比兹利(David Beazley) 概述 对于如何使用我的课程“实用的 Python 编程”进行教学的问题,本文档提供一些通用的说明和建议,包括课程目标、课程受众、棘手的内容等。 一些人会在一个典型的、为期三天的公司培训中进行教学,本说明就是提供
阅读全文
摘要:完结! 你已经完成了本课程。感谢你的关注,感谢你花时间和精力学习本课程。祝你在未来的 Python 编程中快乐并有所收获。 我总是很高兴能够收到反馈。你可以在 https://dabeaz.com或者推特( @dabeaz )上找到我。 — — 戴维·比兹利(David Beazley) 目录 注:
阅读全文
摘要:目录 | 上一节 (9.2 第三方包) | 下一节 (完结) 9.3 Distribution版本分发 在某些时候,你可能想要将自己的代码提供给其他人——可能只是同事(使用)。本节给出执行此操作的最基本技术。更多详细信息,请参考 Python 打包用户指南。 创建 setup.py 文件 请添加一个
阅读全文
摘要:目录 | 上一节 (9.1 包) | 下一节 (9.3 版本分发) 9.2 第三方模块 Python 拥有一个包含各种内置模块的大型库(自带电池(batteries included))(译注:“自带电池”来自于官方文档的翻译,意为“功能齐全”)。 甚至还有很多第三方模块(可以使用)。请到 Pyth
阅读全文
摘要:目录| 上一节 (8.3 调试) | 下一节 (9.2 第三方包) 9.1 包 如果编写一个较大的程序,我们并不真的想在顶层将其组织为一个个独立文件的大型集合。本节对包(package)进行介绍。 模块 任何一个 Python 源文件称为一个模块(module)。 # foo.py def grok
阅读全文
摘要:目录 | 上一节 (8 测试和调试) 9 包 我们将以“如何把代码组织成包结构”这一主题结束本课程。同时,也将对第三方包的安装、如何将自己的代码提供给其他人使用进行讨论。 在 Python 开发中,打包(packaging)是一个演进的,复杂的主题。本节主要关注一些通用的代码组织原则,而不是特定的工
阅读全文
摘要:目录 | 上一节 (8.2 日志) | 下一节 (9 包) 8.3 调试 调试建议 假设程序崩溃了: bash % python3 blah.py Traceback (most recent call last): File "blah.py", line 13, in ? foo() File
阅读全文
摘要:目录 | 上一节 (8.1 测试) | 下一节 (8.3 调试) 8.2 日志 本节对日志模块(logging module)进行简单的介绍。 logging 模块 logging 模块是用于记录诊断信息的 Python 标准库模块。日志模块非常庞大,具有许多复杂的功能。我们将会展示一个简单的例子来
阅读全文
摘要:目录 | 上一节 (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
阅读全文
摘要:目录 | 上一节 (7.2 匿名函数) | 下一节 (7.4 装饰器) 7.3 返回函数 本节介绍使用函数创建其它函数的思想。 简介 考虑以下函数: def add(x, y): def do_add(): print('Adding', x, y) return x + y return do_a
阅读全文
摘要:目录 | 上一节 (7.1可变参数) | 下一节 (7.3 返回函数) 7.2 匿名函数和 Lambda 再探列表排序 列表可以使用 sort 方法进行原地(in-place)排序: s = [10,1,7,3] s.sort() # s = [1,3,7,10] 也可以进行降序排序(译注:原文使用
阅读全文
摘要:目录 | 上一节 (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
阅读全文