为 python 变量输入是否有意义,因为它们不会捕获错误?

Does it make sense to do typing for python variables since they do not catch errors?

我是 python 打字新手。我将一个变量声明为字符串,并故意将一个集合分配给字符串变量。然而,python 没有发现任何错误。

diff_str: str = get_set(f1, f2)

问题是输入 python 变量是否有意义,因为它们不会捕获错误?

我正在使用 python 3.7

这不是实际的输入,因此,它仅对代码澄清有意义。并且您正在完成命名(“..._str”)。如果您没有使用注释感知 IDE,它将跟踪您的类型注释,您的命名约定将帮助您在定义变量类型后的几行中记住它们。

Python是一门非常动态的语言,你可以在运行时添加/删除/替换属性和方法,所以静态类型检查确实无关紧要。请注意,静态类型的真正用途(通常)不是 "type safety" 或 "more robust code",而是 1/ 编译器优化和 2/ 开发人员文档。

例如,C 使用静态类型(具有编译时类型检查),但您可以自由地将任何内容转换为其他任何内容而不会出现任何编译时错误 - 但通常在运行时会产生比您的结果更引人注目的结果当出现问题时,我会进入 Python。再举一个例子,即使是 ADA(在打字方面无疑是有史以来最严格的心理语言)也未能阻止 Ariane5 崩溃。

wrt/ Python,最近引入类型 hints 是由于对最终 "static" 代码检测的需求(包括 doc,IDE 提示支持,并且可能在某些时候进行一些优化 - 但这些将需要限制语言的实现。