3

我是 python 新手。我已经对 python 的鸭子类型进行了一些研究,但我陷入了以下情况。

当我查看 Python 标准库时,我发现 API 仅指定参数的名称,这似乎暗示了要传递的内容,但类型。这让我依赖直觉。因此,当我将错误的对象传递给函数时,这听起来像是在玩试错游戏。

例如,在 python 标准库 smtplib 中,我想使用这个函数:

SMTP.starttls([keyfile[, certfile]])

但我不知道我应该将什么类型的对象传递给 keyfile 或 certfile 参数?我该如何解决这个问题?

4

1 回答 1

4

这可能只是对 Python 和文档不熟悉,而不是鸭子打字问题。

在您的特定示例中,您必须稍微遵循文档。

SMTP.starttls()方法中,它说

如果提供了 keyfile 和 certfile,则将它们传递给套接字模块的ssl() 函数

如果您点击该链接,您将看到:

keyfile 和 certfile 参数指定可选文件,其中包含用于标识连接的本地端的证书。有关证书如何存储在 certfile 中的更多信息,请参阅证书的讨论。

编辑: andkeyfile参数certfile似乎是文件名(字符串)。如果您随后点击指向证书的链接,您会看到文件应该是 PEM 格式。

感谢 JF Sebastian 的提示。

于 2013-03-17T03:03:28.030 回答