我有点困惑为什么 PyCharm 不区分两种不同的 Optional 类型。
考虑以下代码。
def funcs(foo:Optional[str]=None):
print(foo)
def funci(var:Optional[int]=None):
funcs(var)
argi = 1
args = "something"
argn = None
funcs(argi)
funcs(args)
funcs(argn)
请注意,funcs
内部调用funci
没有发现将 Optional[int] 传递给正在寻找Optional[str]
.
然而,如果我们去掉Optional[str]
检查树皮。
这是预期的行为吗?如果是,我该怎么办?
我的直觉说类型检查应该足够聪明,可以区分Optional[str]
vs Optional[int]
。我已通读PEP-526和PEP-484无济于事。