Python中exec()循环内出现Unexpected Indent错误的解决方法
解决Python中exec代码的"Unexpected Indent"错误
你的问题出在exec执行的字符串内容里带有多余缩进。Python对代码缩进要求严格,当exec运行带缩进的代码字符串时,解释器会把这些缩进视为意外的语法结构,从而抛出错误。
解决方法一:直接移除字符串内的缩进
把exec里的代码字符串内容对齐到最左侧,避免多余缩进:
def f(x): return x for i in range(10): exec(f"""v_{i} = f(i)""")
如果需要换行保持代码可读性,也要确保内容没有缩进:
for i in range(10): exec(f""" v_{i} = f(i) """)
解决方法二:用textwrap.dedent自动处理缩进
如果希望代码书写时保持缩进(提升可读性),可以使用textwrap模块的dedent函数,它会自动移除字符串中所有行开头的共同空白部分:
import textwrap def f(x): return x for i in range(10): exec(textwrap.dedent(f""" v_{i} = f(i) """))
这样既保留了代码书写时的缩进格式,又能让exec执行的代码没有多余缩进,避免语法错误。
内容的提问来源于stack exchange,提问作者Y Bai
相关产品推荐
相关产品推荐

