符合PEP8规范的for循环及嵌套循环内变量类型标注正确写法
嵌套for循环变量类型标注的PEP规范说明
两种写法均符合Python语法要求,也没有违反PEP8的代码风格规则,二者的差异只在适用场景不同,你可以根据实际需求选择:
- 若循环结束后你需要在内层循环外访问
b的值(即用到最后一次迭代给b赋的结果),选写法2。Python的for循环变量会泄漏到外层作用域,在顶层标注b的类型和它的实际作用域范围匹配,也能避免类型检查器在你作用域外访问时报错。 - 若
b仅在内层循环内部使用,外层完全不需要访问,选写法1更合适。标注位置靠近变量的实际使用位置,可读性更强,也符合PEP484中「类型标注尽可能靠近变量首次使用点」的建议。
更推荐的简化方案:
只要你提前给可迭代对象加上正确的类型标注,类型检查器可以自动推导出循环变量的类型,不需要额外给循环变量加标注,代码更简洁无冗余:
iterable_A: list[int] = [1, 2, 3] iterable_B: list[str] = ["x", "y", "z"] # 无需额外标注a、b的类型,类型检查器可自动推导 for a in iterable_A: for b in iterable_B: pass
内容的提问来源于stack exchange,提问作者Kun
相关产品推荐
相关产品推荐

