任何人都可以解释为什么 usingpass在此代码中有效但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
Run Code Online (Sandbox Code Playgroud)
只是为了提供一些上下文,我正在检查关键字是否可以存储在变量中:
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")
Run Code Online (Sandbox Code Playgroud)
因为exec不会将上下文传递给正在执行的语句。
pass可以在任何地方使用,所以上下文并不重要。continue只能在循环上下文中使用,但该上下文不可用于exec.
如果循环本身也是执行代码的一部分,则只能continue在 exec 语句中使用:
f = 'for i in range(10): continue'
exec f
Run Code Online (Sandbox Code Playgroud)
换句话说,您只能使用execfor完整语句,其中单个continue( 或break) 不完整。
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |