Python中可选静态类型的状态?

Python中可选静态类型的状态?,python,python-3.x,static-typing,Python,Python 3.x,Static Typing,我使用Typscript已经有一段时间了,我必须说,由于我的web开发需要,nodejs比当前的CPython实现要快,因此我更倾向于用它做更多的事情 事实上,我已经用它制作了一些基本的应用程序,甚至是桌面应用程序。我喜欢Typescript的地方在于它有可选的静态类型。这使得编码变得容易得多,更不用说intellisense在您想要快速编码并运行原型时是令人惊奇的。我在开发过程中也遇到了较少的bug 但问题就在这里,我已经使用Python一年了,我喜欢这种语言,我只是更习惯于语法。然而,我越来

我使用Typscript已经有一段时间了,我必须说,由于我的web开发需要,nodejs比当前的CPython实现要快,因此我更倾向于用它做更多的事情

事实上,我已经用它制作了一些基本的应用程序,甚至是桌面应用程序。我喜欢Typescript的地方在于它有可选的静态类型。这使得编码变得容易得多,更不用说intellisense在您想要快速编码并运行原型时是令人惊奇的。我在开发过程中也遇到了较少的bug

但问题就在这里,我已经使用Python一年了,我喜欢这种语言,我只是更习惯于语法。然而,我越来越多地看到,对于Python来说,可选的静态类型是一个很棒的优点。所以,我做了一些研究,我首先试图了解目前静态类型的情况。和其他人一样,我用搜索引擎找到了答案

以下是我读过的一些信息来源:

  • 如果您看看这里的实现(摘自上面的链接):

    现在,这看起来非常类似于Typescript中的实现。然而,如果你看看日期,它可以追溯到2004年

    然后,我又看了一张BDFL,Guido制作的幻灯片:

  • 你又看到了同样的修辞。然而,我还没有找到任何关于这方面的新信息

    我还研究了如何强制使用静态类型

    所以,我想问,在Python中添加可选静态类型的情况或状态是什么?或者我们需要为Python3发明类似Typescript的东西吗

    我认为可选的静态类型很重要,因为在我自己非常有限的经验中,我已经看到像Typescript和C#这样的东西工作得更好,因为在创建复杂类或大型项目时,我已经看到静态类型在帮助我更快、无错误地编写代码方面已经走了很长的路。我肯定我没有这里的大多数开发人员那么好,但这是我的看法。这就是为什么我觉得这个问题很重要。我的意思是,如果你有像C#这样具有Python提供的漂亮语法的语言的可选类型,那么Python可能是不可阻挡的(耶!)

    我对此做了一些研究,但我没有得到任何实质性的东西,所以我希望so的一些杰出和明智的成员能够阐明这个问题

    或者我们需要为Python3发明类似Typescript的东西吗

    这是!!!:-)


    就我个人而言,我认为要么他们会合并,要么Python会提出他们自己的解决方案。希望这很快发生

    这听起来像什么?(我不确定你在找什么)@SolidSnake-Cython使用类型优化生成的二进制文件;因此,它的类型本质上与python运行时类型相同,只需预先声明即可。它的用途非常好,但是Cython/python运行时类型系统对于任何非平凡的静态类型检查都没有用处(作为一个简单的例子,它没有泛型)。不幸的是,C#yet.mypy项目中的静态类型没有合并到python中,但是它与python类型提示框架兼容(在Python3.5中添加为)。
    mypy
    还可以作为对该类型和其他类型相关PEP的任何更改的测试场。自2019年起,mypy是python的参考类型检查器。Guido(python的创建者)是其开发人员之一,并且有许多与python中可选静态类型相关的官方PEP:PEP 484(类型提示)、PEP 589(类型提示)、PEP 586(文字类型)
    from StringIO import StringIO
    
    def foo(f: StringIO) -> str:
        f.write("hello")
        return f.getvalue()
    
    f1 = StringIO("booh+")
    print foo(f1)  # prints "booh+hello"