如何为队列中的内容添加变量类型注释?

raw*_*ang 12 python types

例如

from queue import Queue

q: Queue = Queue()
q.put("abc")
Run Code Online (Sandbox Code Playgroud)

这没关系。现在我想指定进入队列的类型。

from queue import Queue

q: Queue[str] = Queue()
q.put("abc")
Run Code Online (Sandbox Code Playgroud)

这会得到“TypeError:'type'对象不可下标”

Jas*_*sha 22

现在(从 Python 3.9 开始)可以添加下标Queue

a: Queue[int] = Queue()  # valid
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要 Python 3.8:`from __future__ import comments` (10认同)

Lag*_*aer 11

打字功能当前不支持此功能。请参阅 Python 核心开发人员的讨论:https://bugs.python.org/issue33315

它还建议了当前的解决方法,将注释放在引号中:

q: "Queue[str]" = Queue()
Run Code Online (Sandbox Code Playgroud)

解决方法是注释可以是任何类型(没有双关语)。字符串是完全可以接受的类型,但如果您想使用非字符串注释,那么它们必须正确“表现”。您可以注释某物是 a Queue,因为注释可以具有任何类型。但该类Queue本身不可订阅,因此Queue[int]不起作用。