lor*_*org 7 python type-hinting mypy python-typing
示例1:
from typing import List, Optional
def myfunc() -> List[Optional[str]]:
some_list = [x for x in "abc"]
return some_list
Run Code Online (Sandbox Code Playgroud)
Mypy对示例 1 进行了抱怨:
不兼容的返回值类型(得到“List[str]”,预期为“List[Optional[str]]”)
然而,这个例子没有得到任何抱怨:
示例2:
def myfunc() -> List[Optional[str]]:
some_list = [x for x in "abc"]
return list(some_list)
Run Code Online (Sandbox Code Playgroud)
不一致行为的解释是什么?
因为在 Python 中列表是不变的(请参阅此处和此处的示例)。
如果我们传递List[str]给期望的人List[Optional[str]],那么有人可能会None在我们的列表中添加 a 并打破我们的假设。然而,第二个示例是有效的,因为list()return 语句中的输出没有保存在任何地方,并且没有人可以依赖于非法改变的返回值。
| 归档时间: |
|
| 查看次数: |
2396 次 |
| 最近记录: |