如何解决「Value after * must be an iterable, not int」错误?
解决「Value after * must be an iterable, not int」报错的方法
报错原因:使用
*解包语法时,被解包的对象是整数(int类型),但*要求后面必须是可迭代对象(比如列表、元组、字符串、生成器等),整数不属于可迭代类型,因此触发报错。常见场景与解决示例:
- 直接解包整数的错误用法
解决:把整数包装成可迭代对象,比如列表或元组print(*5) # *后是int,触发报错print(*[5]) # 用列表包裹后可正常解包输出 - 函数传参时错误解包整数
解决:若要传递单个参数,直接去掉def add(a, b): return a + b add(*10) # 报错*;若要拆分整数的每一位作为参数,先转成可迭代类型add(*list(map(int, str(10)))) # 将10拆为1和0,返回1
- 直接解包整数的错误用法
排查要点:
- 定位代码中所有
*的使用位置,检查*后方对象的类型 - 确认是否真的需要解包操作,若只是传递单个值,直接移除
*即可
- 定位代码中所有
内容的提问来源于stack exchange,提问作者clyde
相关产品推荐
相关产品推荐

