Python 何时应该(也不应该)指定输入和返回类型?

Python 何时应该(也不应该)指定输入和返回类型?,python,Python,我发现,无论是否指定了输入和返回类型,代码都能正常工作。文档没有解释何时应使用类型以及何时不应使用类型。你能解释清楚吗 Python是一种动态类型化语言,您放置的提示只是为了让人们更容易理解调用该函数时要使用的类型。代码将以任何方式工作。在静态类型语言中,您必须指定类型,如果您将值与任何其他类型一起输入,则函数将不起作用。简而言之,您应该在输入或输出时指定类型,以防在代码中使用提供/返回的变量,并且希望所有方法都与包含的类型相同: >>> def greeting(name:

我发现,无论是否指定了输入和返回类型,代码都能正常工作。文档没有解释何时应使用类型以及何时不应使用类型。你能解释清楚吗


Python是一种动态类型化语言,您放置的提示只是为了让人们更容易理解调用该函数时要使用的类型。代码将以任何方式工作。在静态类型语言中,您必须指定类型,如果您将值与任何其他类型一起输入,则函数将不起作用。

简而言之,您应该在输入或输出时指定类型,以防在代码中使用提供/返回的变量,并且希望所有方法都与包含的类型相同:

>>> def greeting(name: str) -> str:
...     return 'Hello ' + name
...
>>> greeting("abc")
'Hello abc'
>>> def greeting(name):
...   return 'Hello2 ' + name
...
>>> greeting("abc")
'Hello2 abc'
_str变量将为您提供按您的想法键入\u str.以及向名称添加点时的所有方法。

类型别名对于简化复杂类型签名很有用。 这有助于捕获逻辑错误:


请不要对解释太严格,我试着用人类的语言解释)

除了Vova的答案之外,由于Python的性质,解释器不需要提及参数或返回类型。
尽管如此,添加类型提示(无论是作为提示还是在docstring中)始终是一个很好的做法,这样其他开发人员以及未来的您都可以轻松理解并在需要时更改代码

您是否阅读了链接页面顶部的注释?它们被称为reasonType的提示提示提示是提示,是完全可选的。当您应该使用它们时,实际上是一个意见问题换句话说,您可以严格地始终使用类型提示,或者从不使用它们,或者有时使用它们。通常,除非您使用的是第三方库,否则类型提示不会产生运行时效果,尽管这并不完全正确,因为某些标准库功能已经开始将注释作为API的一部分使用,例如,
dataclasses
typing.NamedTuple
…尽管注意,Python有第三方静态类型检查器,半官方的是
mypy
def greeting(name: str) -> str:
    return 'Hello ' + name

_str = greeting('you')