在 for 循环中使用不可迭代对象¶
ID: py/non-iterable-in-for-loop
Kind: problem
Security severity:
Severity: error
Precision: high
Tags:
- reliability
- correctness
- types
Query suites:
- python-security-and-quality.qls
for
语句旨在允许你迭代序列或其他可迭代对象的元素。如果在 for
语句 (for var in object:
) 中使用不可迭代对象,则会引发 TypeError。
建议¶
由于此缺陷通常表示逻辑错误,因此无法给出解决此缺陷的通用方法。
示例¶
在此示例中,循环可能尝试迭代 None
,它不是可迭代对象。程序员可能忘记在循环之前测试 None
。
def illegal_for_loop(seq = None):
for x in seq:
print (x)
参考¶
Python 语言参考:for 语句,object.iter。
Python 标准库:迭代器类型。
Scipy 讲义:迭代器、生成器表达式和生成器。