dmj*_*mjy 0 python defaultdict mypy python-typing
编写类型提示的正确方法是什么defaultdict(lambda: defaultdict(set))?
我使用Python 3.10.5和mypy 0.971,发现mypy返回错误,因为var = defaultdict(lambda: defaultdict(set))没有类型提示。
前提
str。set。(这可能是显而易见的。)示例代码
from collections import defaultdict
var = defaultdict(lambda: defaultdict(set))
Run Code Online (Sandbox Code Playgroud)
输出
test.py:2: error: Need type annotation for "var"
Run Code Online (Sandbox Code Playgroud)
从Python 3.9开始,您可以使用defaultdict和set本身作为注释:
var: defaultdict[str, defaultdict[str, set]] = defaultdict(lambda: defaultdict(set))
Run Code Online (Sandbox Code Playgroud)
DefaultDict对于早期的 Python 版本,打字模块有一个特殊的类型:
from collections import defaultdict
from typing import DefaultDict, Set
var: DefaultDict[str, DefaultDict[str, Set]] = defaultdict(lambda: defaultdict(set))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1777 次 |
| 最近记录: |