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 次 |
最近记录: |