PHP前端开发

MyPy简介

百变鹏仔 3天前 #Python
文章标签 简介

介绍

mypyc++0b24f9d990aea8bfc2101d73a0>1 是 python 的静态类型检查器。与 c++ 或 java 等静态类型语言不同,python 是动态类型的。这意味着在 python 中,您不必显式声明变量的类型;它是在运行时推断的。例如:

python(动态类型)

num = 4                # `num` is inferred as an integernewstring = "new string"  # `newstring` is inferred as a string

相反,静态类型语言要求您在编译时指定每个变量的类型。这有助于在开发期间而不是运行时捕获与类型相关的错误。

c++(静态类型)

int num = 4;            // `num` is declared as an integerstd::string newstring = "new string";  // `newstring` is declared as a string

为什么使用 mypy?

在python等动态类型语言中,运行时可能会发生类型错误,这可能会导致更难以追踪的错误。 mypy 通过允许您向 python 代码添加类型提示来解决这个问题,这些提示可以在执行前进行静态检查。这有几个优点:

mypy 的示例

这是一个简单的示例,演示了 mypy 中类型提示的使用:

没有类型提示

def add(a, b):    return a + bprint(add(5, 3))      # output: 8print(add("hello", "world"))  # output: helloworld

在上面的代码中,add 函数可以接受整数和字符串,这可能不是预期的行为。

带类型提示

def add(a: int, b: int) -> int:    return a + bprint(add(5, 3))      # output: 8# mypy will report an error for the following line:# print(add("hello", "world"))  # typeerror: expected int, got str

通过包含类型提示(a: int, b: int),您可以指定 add 只适用于整数。 mypy 根据这些类型提示检查代码,尽早发现潜在的类型相关问题。

安装并运行 mypy

开始使用 mypy:

  1. 安装:使用pip安装mypy:
   python3 -m pip install mypy
  1. 运行 mypy :安装后,您可以运行 mypy 来检查代码是否存在类型错误。使用以下命令:
   mypy program.py

此命令将静态检查您的代码,类似于编译器检查 c++ 语法的方式。它会报告它发现的任何类型错误,而无需实际运行代码。

有效使用 mypy 可以让您将静态类型的优点集成到 python 中,同时仍然享受其动态特性的灵活性。

让我们用 mypy 编写一个示例

没有 mypy

def greeting(name):    return 'hello ' + name# these calls will fail when the program runs, but mypy will not report an errorgreeting(123)greeting(b"aniket")

使用 mypy

通过添加类型注释(也称为类型提示),mypy 可以检测潜在的问题:

def greeting(name: str) -> str:    return 'Hello ' + namegreeting(3)         # mypy will report: Argument 1 to "greeting" has incompatible type "int"; expected "str"greeting(b'Alice')  # mypy will report: Argument 1 to "greeting" has incompatible type "bytes"; expected "str"greeting("World!")  # No error

这里:

何时使用 mypy

mypy 在多种情况下很有用:

使用 mypy 可以帮助您编写更好、更可靠的 python 代码,同时仍然享受 python 的灵活性。

mypy 的官方快速备忘单


  1. 官方文档↩