python exec() 循环中意外缩进[重复]

问题描述 投票:0回答:3

“意外缩进”错误的解决方法是什么?

In [15]: def f(x): 
    ...:     return x 
    ...:                                                                                                                                                        

In [16]: for i in range (10): 
    ...:     exec(f""" 
    ...:     v_{i} = f(i) 
    ...:     """) 
python loops exec
3个回答
1
投票

不要使用

v_{i}
作业缩进该行。

In [16]: for i in range (10): 
    ...:     exec(f""" 
    ...: v_{i} = f(i) 
    ...:     """) 

exec()
执行的代码不会继承调用代码的缩进。因此该语句需要位于行的开头,因为您没有执行循环。

首先实际上并不需要多行字符串,您可以这样做:

exec(f'v_{i} = f(i)')

当然,这整件事都是误导的。动态变量名通常是一个坏主意,您应该使用列表或字典。


0
投票

您可以通过重写您调用的 exec 函数的参数以仅跨越一行而不是多行来修复缩进错误。


0
投票

看起来您正在使用

exec
创建 10 个变量并将 f(0) 的值分配给 f(9)。

exec
块需要相对于
for
循环向右缩进一级。

def f(x):
    return x

for i in range(10):
    exec(f"""
v_{i} = f(i)
""")
© www.soinside.com 2019 - 2024. All rights reserved.