小能豆

什么是变量注释?

python

Python 3.6 即将发布。PEP 494 – Python 3.6 发布时间表提到 12 月底,所以我查看了Python 3.6 中的新增功能,发现他们提到了变量注释

PEP 484引入了函数参数类型注释的标准,又称类型提示。此 PEP 为 Python 添加了用于注释变量类型的语法,包括类变量和实例变量:

```py
primes: List[int] = []

captain: str # Note: no initial value!

class Starship:
stats: Dict[str, int] = {}
```

就像函数注释一样,Python 解释器不会为变量注释赋予任何特定含义,而只会将其存储在__annotations__类或模块的特殊属性中。与静态类型语言中的变量声明不同,注释语法的目标是通过抽象语法树和属性为第三方工具和库提供一种简单的指定结构化类型元数据的方法__annotations__

因此,从我所读的内容来看,它们是来自 Python 3.5 的类型提示的一部分,如Python 3.5 中的类型提示是什么中所述。

我遵循captain: strclass Starship示例,但不确定最后一个:如何primes: List[int] = []解释?它是否定义了一个只允许整数的空列表?


阅读 37

收藏
2024-06-29

共1个答案

小能豆

是的,你走对了路。该primes: List[int] = []行是 Python 3.6 中变量注释的一个示例,它扩展了 Python 3.5 中引入的类型提示概念。

以下是其功能的具体说明:

  • primes是变量名称。
  • List[int]是类型提示,表示primes应为包含整数的列表。此类型提示基于 PEP 484 中引入的类型提示语法。
  • = []初始化primes为空列表。

因此,综合起来,primes: List[int] = []定义primes为一个预期包含整数的空列表。虽然 Python 本身在运行时不会强制执行此类型,但它为第三方工具、静态类型检查器(如 mypy)和 IDE 提供了有用的信息,以帮助您编写更可靠的代码。

这是一个简单的例子,说明如何在实践中使用它:

from typing import List

primes: List[int] = []

def add_prime(prime: int) -> None:
    primes.append(prime)

add_prime(2)
add_prime(3)

print(primes)  # Output: [2, 3]

在这个例子中,类型提示List[int]有助于澄清这primes应该是一串整数,如果你尝试将非整数添加到列表中,像 linters 或类型检查器这样的工具会发出警告。

2024-06-29