python - 如何知道函数返回类型和参数类型?

标签 python types

虽然我知道 Python 的鸭子类型概念,但有时我会为函数的参数类型或函数返回值的类型感到困惑。

现在,如果我自己编写函数,我确实知道类型。但是如果有人想使用和调用我的函数怎么办,他/她怎么知道类型? 我通常将类型信息放在函数的文档字符串中(例如:"...id 参数应该是一个整数...""...该函数将返回一个 (string, [整数]) 元组。")

但是在文档字符串中查找信息(并作为编码人员将其放在那里)真的是它应该完成的方式吗?

编辑:虽然大多数答案似乎都指向“是的,文档!”我觉得这对于“复杂”类型并不总是那么容易。
例如:如何在一个函数返回一个元组列表的文档字符串中简洁描述,每个元组的形式(node_id, node_name, uptime_minutes) 和那个元素分别是字符串、字符串和整数?
docstring PEP 文档没有对此提供任何指导。
我想反驳的观点是在这种情况下应该使用类,但我发现 python 非常灵活,因为它允许使用列表和元组传递这些东西,即 没有 类。

最佳答案

自 2011 年以来,情况发生了一些变化!现在有 type hints在 Python 3.5 中,您可以使用它来注释参数并返回函数的类型。例如:

def greeting(name):
  return 'Hello, {}'.format(name)

现在可以这样写:

def greeting(name: str) -> str:
  return 'Hello, {}'.format(name)

正如您现在可以看到的类型,有一些可选的静态类型检查将帮助您和您的类型检查器调查您的代码。

我建议查看 PyCharm blog 中关于类型提示的博客文章以获得更多解释。 .

关于python - 如何知道函数返回类型和参数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5336320/

相关文章:

python - 在Python中,如何编写包含集合的集合?

python - 用于匹配右大括号的正则表达式

python - scikit 学习管道中的后处理分类器输出

Python SHA1 整数

C#: 类型名称 <type_name> 在类型 <type> 中不存在;在一个类中,调用另一个类的方法

mysql - 我应该在 MySQL 中使用哪种整数?

具有多个类约束的 Haskell 类型签名

python - 为什么这段 Python 代码执行了两次?

java - ArrayList<Integer> 自动将其类型更改为 ArrayList <String>

c - int32_t 是否被视为第 6.2.5/4 节中的扩展有符号整数类型之一?