一门易于使用的高级语言,再加上支持运算符重载,这或许是 Python 在数据科学领域(包括金融和科学应用程序)取得巨大成功的关键原因。这篇文章将学习 Python 的运算符重载机制。
流畅的 Python 第 2 版(15):类型提示进阶
惨痛的教训告诉我,对于小型程序,动态类型就够了,而大型程序则需要更规范的方式。如果语言能做出规范,那么当然比 放任自流 要好。这篇文章我们将继续讲解 Python 的渐进式类型系统。
流畅的 Python 第 2 版(14):继承:瑕瑜互见
这篇文章将探讨继承和子类化,重点讲解 super()、多重继承和方法解析顺序 和 混入类 等 Python 特色功能。
流畅的 Python 第 2 版(13):接口、协议和抽象基类
面向对象设计第一原则是 对接口编程,而不是对实现编程。在 Python 中,支撑一个类型的是它提供的方法,也就是接口。在不同的编程语言中,接口的定义和使用方式不尽相同。
流畅的 Python 第 2 版(12):序列的特殊方法
这篇文章将实现一个多维向量的 Vector 类。这个类的行为与 Python 中标准的不可变扁平序列一样。这篇文章还将讨论一个概念:把协议当作正式接口。我们将说明协议和鸭子类型之间的关系,以及对自定义类型的实际影响。
流畅的 Python 第 2 版(11):符合 Python 风格的对象
得益于 Python 数据模型,自定义类型的行为可以像内置类型那样自然。实现如此自然的行为,靠的不是继承,而是鸭子类型:只需按照预定行为实现对象所需的方法即可。对库或框架来说,程序员可能希望你定义的类能像 Python 内置的类一样。满足这个预期也算得上是符合 Python风格。
流畅的 Python 第 2 版(10):使用一等函数实现设计模式
在软件工程中,设计模式指解决常见设计问题的一般性方案。编程设计模式的使用通过 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(四人组)合著的《设计模式》一书普及开来。虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用,例如迭代器模式就深植 Python 语言之中。
流畅的 Python 第 2 版(9):装饰器和闭包
函数装饰器允许在源码中 标记 函数,以某种方式增强函数的行为。这是一个强大的功能,但是如果想掌握,则必须理解闭包,即捕获函数主体外部定义的变量。除了在装饰器中有用,闭包还是回调式编程和函数式编程风格的重要基础。
流畅的 Python 第 2 版(8):函数中的类型提示
PEP 484—Type Hints 为函数参数、返回值和变量的显式类型声明规定了句法和语义,目标是协助开发者工具通过静态分析发现 Python 基准代码中的 bug。但是,不是所有 Python 用户都能从类型提示中受益。因此,必须把这作为一种可选的功能。
流畅的 Python 第 2 版(7):函数是一等对象
在 Python 中,函数是一等对象(但 Python 并不算函数式编程语言)。编程语言研究人员把 一等对象 定义为满足以下条件的程序实体:
- 在运行时创建
- 能赋值给变量或数据结构中的元素
- 能作为参数传给函数
- 能作为函数的返回结果