'None' 对象的 mypy pop 错误不可迭代
mypy pop error for 'None' object is not iterable
这里我有这样一个函数:
def func_A(delta: Optional[List[int]],
margin: Optional[List[int]]
mode: str = 'OUT') -> Tuple[int,
Optional[List[int]],
Optional[List[int]]]:
result = 1
if mode == "OUT":
return result, [1,2,3], [4,5,6]
elif mode == "IN":
delta_x, delta_y = delta
margin_x, margin_y = margin
return result, None, None
else:
raise ValueError('wrong key')
然而,当我使用如下函数时,mypy 会弹出错误:
result, delta_options, margin_options = func_A(delta=None,
margin=None,
mode="OUT")
给出错误:
'None' 对象不可迭代
我的代码哪一部分有问题?提前致谢。
P.S。我的 mypy 配置如下:
mypy --ignore-missing-imports --follow-imports=skip --strict-optional .
问题是L.10
delta_x, delta_y = delta
增量类型为Optional[List[int]]
。所以delta可以是None
。如果 delta 为 None,则代码不起作用。
delta_x, delta_y = None
所以你需要在代码之前处理增量 None 大小写。
例如
if delta is not None:
delta_x, delta_y = delta
或
delta_x, delta_y = delta if delta is not None else None, None
等等
这里我有这样一个函数:
def func_A(delta: Optional[List[int]],
margin: Optional[List[int]]
mode: str = 'OUT') -> Tuple[int,
Optional[List[int]],
Optional[List[int]]]:
result = 1
if mode == "OUT":
return result, [1,2,3], [4,5,6]
elif mode == "IN":
delta_x, delta_y = delta
margin_x, margin_y = margin
return result, None, None
else:
raise ValueError('wrong key')
然而,当我使用如下函数时,mypy 会弹出错误:
result, delta_options, margin_options = func_A(delta=None,
margin=None,
mode="OUT")
给出错误: 'None' 对象不可迭代
我的代码哪一部分有问题?提前致谢。
P.S。我的 mypy 配置如下:
mypy --ignore-missing-imports --follow-imports=skip --strict-optional .
问题是L.10
delta_x, delta_y = delta
增量类型为Optional[List[int]]
。所以delta可以是None
。如果 delta 为 None,则代码不起作用。
delta_x, delta_y = None
所以你需要在代码之前处理增量 None 大小写。
例如
if delta is not None:
delta_x, delta_y = delta
或
delta_x, delta_y = delta if delta is not None else None, None
等等