是否可以在PyCharm中使用静态类型断言?

lau*_*ura 13 python pycharm

def someproperty(self, value):
    """
    :type value: int
    """
    assert isinstance(value, int)
    # other stuff
Run Code Online (Sandbox Code Playgroud)

当用户将值设置为int以外的值时,我希望Pycharm断言.我已经在使用类型提示了.有没有其他方法来获得此功能?提前感谢您提供的任何见解.

seb*_*ian 14

使用pycharm,您可以使用类型声明并增加"类型检查器"检查的严重性,稍微接近静态类型检查:

在此输入图像描述

这将使您的代码中的类型检查非常突出:

在此输入图像描述


pok*_*oke 9

Python最近在静态类型方面有了很大的发展.从Python 3.5开始,键入提示是一件事.这就是PEP 0484的全部内容.类型提示语法完全基于早期使用PEP 3107引入的函数注释语法.这允许PEP 0484是一个不涉及新语法的变化,这使得它非常有吸引力并且易于适应.

那么,这是如何工作的?对于简单的情况,语法实际上非常直观.例如:

def greeting(name: str) -> str:
    return 'Hello ' + name
Run Code Online (Sandbox Code Playgroud)

类型提示系统确实支持非常复杂的事情.您还可以使用用户类型,可调用对象,使用联合的多次重载,甚至是泛型类型.你可以在PEP本身看到很多例子.

您还可以观看Guido van Rossum关于最后一次PyCon类型暗示的讨论,它非常有趣并涵盖了很多细节.

最后,通过所有这些类型的提示,我们如何处理它们?好吧,有一个伟大的库已经存在了一段时间,远在Python 3.5和PEP 0484之前.实际上,现在正式引入的类型提示语法是基于该库,但只是形式化.该库名为mypy,基本上是Python的静态类型检查器.安装后,您可以使用mypy可执行文件键入检查包含类型注释的任何Python脚本.

例如,让我们将函数定义放在一个文件中,并使用错误的类型参数调用它:

greeting(123)
Run Code Online (Sandbox Code Playgroud)

在文件上运行mypy,提供以下输出:

$ mypy test.py
test.py:4: error: Argument 1 to "greeting" has incompatible type "int"; expected "str"
Run Code Online (Sandbox Code Playgroud)

mypy虽然技术上是实验性的,但它是一个非常强大的工具,非常有效.如果你喜欢这个并采用类型注释,那么你应该检查一下.

  • 是否可以将其与PyCharm集成? (3认同)