有人可以解释为什么在此代码中使用pass
但continue
会引发错误: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")
答案 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