忽略exit()或quit()之后的所有语法错误



我在原型设计中注意到,以下代码(类似于的脚本(适用于

a = 1
exit()
for i in range(2):
some # undefined variable

但这不是

a = 1
exit()
some # undefined variable

后者产生CCD_ 1。

虽然对工作来说不是必不可少的,但在快速构建代码原型和隔离错误时,我经常提前退出。令我惊讶的是,exit()之后的缩进错误被解释器发现,但其他错误(例如引用未定义的变量(却没有。

是什么导致了这种行为?为什么Python核心开发人员会做出这种设计选择?有没有一种方法可以在不修复exit()之后的缩进错误的情况下,运行语法正确的脚本,直到退出。

除了对行为的解释外,还可以在相关的教科书章节或政治公众人物上签名。

Python将代码编译为中间表示。你的问题是公平的:有些语言不能做到这一点。例如,这是一个完全可运行的Tcl片段,尽管第二行是完全无意义的

exit 0
])} total garbage line of C0De ))))

但Python的工作方式不同。它将整个文件读取到一个中间表示中,然后运行它。因此,如果代码在某些上下文中有意义,那么它会编译,但可能不会运行。但是,如果代码是绝对、明确无效的Python,那么它就不会进行解析。

如果你正在编写一个脚本,并且想快速删除一些代码,那么通常的惯例是用三引号将其括起来。

a = 0
'''
nonsense code I haven't
finished writing goes here
'''

通过适当的缩进,这将把有问题的代码视为一个常量字符串文字,它将被静默地创建,然后在运行时丢弃。

或者,一些编辑器可以快速地将#添加到行的开头。例如,在Emacs中,我可以使用comment-line命令,绑定到C-xC-默认情况下自动添加或删除行开头的#符号。

最新更新