Python 令人困惑的论点

Python confusing arguments

有时 python 的动态类型系统让人难以理解为什么有些东西会起作用。例如:

我正在寻找关于上述问题的一些说明一些关于如何概括类似情况的建议。

read_sql 被记录为采用 Connectable 对象。严格来说,这意味着它将是 SqlAlchemy.engine.Connectable 或其子类的一个实例,但唯一重要的是它 表现 就像这样一个实例。粗略地说,您可以传递 "like" 和 Connectable 的任何内容,例如,tt 提供了一个 connect 方法,该方法采用与 sqlalchemy.engine.Connectable.connect 相同类型的参数。

换句话说,重要的不是确切的类型,而是您传递的类型的接口。 Python 将此称为 duck typing:如果一个对象看起来像鸭子并且行为像鸭子,那么它可以被需要鸭子的东西使用,即使它不是,其实是一只鸭子。