在 python 中使用“类型提示”表示法有什么好处吗?
import sys
def parse(arg_line: int) -> str:
print (arg_line) # passing a string, returning None
if __name__ == '__main__':
parse(' '.join(sys.argv[1:]))
Run Code Online (Sandbox Code Playgroud)
对我来说,它似乎使语法变得复杂,而没有提供任何实际的好处(可能在开发环境之外)。基于此:
type在语言本身中包含约束?据我所知,我在 python 代码库本身中也没有看到这么多——大多数类型都是手动强制执行的,例如:以及我在https://github.com/python/argparse.py中浏览过的任何其他文件cpython/blob/3.7/Lib/ .
Han*_*ave 13
python 有计划在语言本身中包含类型约束吗?
几乎肯定不会,而且绝对不会在下一个主要版本 (4.x) 之前。
“类型提示”有什么好处?我不能轻松地将其放入文档字符串或其他内容中吗?
从我的脑海中,考虑以下几点:
mypy.foo(,IDE 可以获取类型提示并在附近显示一个显示 的框foo(x: int, y: List[int])。作为开发人员,您的优势在于您可以准确掌握所需的信息,而不必修改整个文档字符串。functools.singledispatch类型提示可以由类似模块或外部库使用multipledispatch,以添加其他与类型相关的功能(在这种情况下,根据名称和类型,而不仅仅是名称来调度函数调用)。利用类型提示的一种选择是type_enforced模块。它以纯 python 运行,无需外部编译器。关于官方的 python 支持,在不久的将来似乎仍然不太可能直接强制执行类型提示。
进入type_enforced,该包允许您利用类型提示。它支持输入和输出类型。仅强制执行指定的类型。还支持多种可能的输入,因此您可以指定 int 或 float 等内容。
首先验证输入类型(在函数调用时延迟验证),如果有效,则处理该函数,然后验证返回值。
有一些限制,例如不支持嵌套类型结构。例如,您不能将类型指定为整数列表,而只能指定为列表。您需要验证函数内列表中的项目。Optional更新:在 v1.0.0 中添加了对打字包、嵌套类型结构甚至 s 的额外支持。
pip install type_enforced
Run Code Online (Sandbox Code Playgroud)
pip install type_enforced
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17509 次 |
| 最近记录: |