【发布时间】:2011-07-17 05:14:00
【问题描述】:
虽然我知道 Python 的鸭子类型概念,但有时我会为函数的参数类型或函数返回值的类型而苦恼。
现在,如果我自己编写函数,我确实知道类型。但是如果有人想使用和调用我的函数,他/她怎么知道类型呢?
我通常将类型信息放在函数的文档字符串中(例如:"...the id argument should be an integer..." 和 "... the function will return a (string, [integer]) tuple.")
但是在文档字符串中查找信息(并作为编码人员将其放在那里)真的是它应该完成的方式吗?
编辑:虽然大多数答案似乎都指向“是的,文档!”我觉得这对于“复杂”类型并不总是那么容易。
例如:如何在一个函数返回一个元组列表的文档字符串中简洁描述,每个元组的形式为 ( node_id, node_name, uptime_minutes) 并且元素分别是字符串、字符串和整数?
docstring PEP 文档没有对此提供任何指导。
我猜反驳是在这种情况下应该使用类,但我发现 python 非常灵活,因为它允许使用列表和元组传递这些东西,即 没有 类。
【问题讨论】:
-
简短的回答是“是”。长答案是“是的,当然”。我不知道你是否看过很多 Python 代码,但你可能应该更新这个问题以指出你实际使用的包,这样我们就可以指导你阅读你可以阅读的代码以了解情况如何在您现在实际使用的库代码中完成。
-
@S.Lott:我目前正在为 mechanize 软件包苦苦挣扎,但我想它只是(不幸地)记录不充分。
-
Python 很酷,因为您可以快速编写大量代码,而且您不必担心诸如返回类型、参数类型、运行时性能、必须使用和维护您的意大利面条代码的人等日常事务未来 10 年等等。叹息。