使用exec'继续'在循环中

时间:2015-07-31 10:43:56

标签: python

有人可以解释为什么在此代码中使用passcontinue会引发错误:SyntaxError: 'continue' not properly in loop

f = 'pass'  # Works
f = 'continue'  # Fails

for i in range(10):
    if i < 5:
        exec f
    print i

为了提供一些上下文,我正在检查关键字是否可以存储在变量中:

def magic_print_i(f):
    for i in range(10):
        if i < 5:
            exec f
        if i % 3:
            continue
        print i

magic_print_i("continue")

2 个答案:

答案 0 :(得分:4)

因为while(*pA!='\0') { *pB++ = *pA++; puts(strB); } 没有将上下文传递给正在执行的语句。

exec可以在任何地方使用,因此上下文并不重要。 pass只能在循环的上下文中使用,但该上下文 不可用于continue

如果循环本身 ,则只能在exec语句中使用exec

continue

换句话说,您只能将f = 'for i in range(10): continue' exec f 用于完整的语句,其中单个exec(或continue)未完整。

答案 1 :(得分:0)

continue未完成。这就像break的另一半。而exec执行完整的命令,就像在pass

中一样