当我执行 Python 脚本 (*) 并到达文件末尾时,我会返回命令提示符,而不会显示任何其他消息。我想知道是否可以在源文件中的某处插入一条语句,以便在该点“退出文件”(结束解释和编译),即忽略从那里到文件末尾的内容(或者,我可以像在 C 中使用#if 0
预处理器指令和相应的#endif
) 那样忽略一个大区域,所以当我处理文件的早期部分时,我可以在该点下方留下注释和代码片段等。
当我使用quit()
,exit()
等raise SystemExit(...)
时,所有这些都会引发异常,导致“Traceback”消息。在 (La)TeX 中是否有类似的东西\endinput
告诉解释器简单地忽略文件的其余部分,就好像已经到达文件结尾,或者cpp
指令#if 0 ... #endif
?
“如何退出......没有 Traceback......”这个问题在 SO 上被多次询问和回答,但答案总是“你不能”;“它必须是允许清理/调试的那种方式......”(有人提到os._exit()
然后其他人说“不,因为清理不完整”)。也许这指的是从“在某物内”退出,但也许我就是这种情况,因为我的文件被其他一些 python 函数读取。所以我宁愿寻找一个命令,上面写着“这是这个文件的结尾!” 或“忽略输入文件的后续行直到最后(或直到相应的#endignore
指令存在。)
PS:我知道我可以将文件的其余部分放在 中"""..."""
,但这仅适用于我在“暂存区域”中已经有多行注释的地方。是的,我可以 [并且确实] 使用 """ 表示多行命令,并使用 ''' 来“注释掉”文件的其余部分。但我认为这是一种解决方法,而不是回答我的问题是否这样的命令或指令存在。
(*) 进一步解释我对这种解决方案的需求:我在 pythonanywhere.com 上遇到了这个问题,我必须出于专业(教育)的原因使用它。单击“运行”_pa_run("filename")
会在他们的服务器上执行一个命令(可能是他们制作的自定义命令),也许这就是为什么exit()
或sys.exit()
产生那个 Traceback。
编辑:根据要求,我将添加一个具体示例(虽然不切实际,但为简洁起见):
def Newton(f,x0,eps,N):
"""here I implement Newton's method"""
#(...) iterations go here (...)
return x
def f(x): #function for testing
return ...
quit() # Unfortunately this raises a Traceback, at least when the file is "Run"
# on pythonanywhere.com. I'd like to avoid this. I would simply like everything
# to be ignored after this point, let's say "for convenience", to simplify.
# I'd like to know whether this is possible, in the given configuration.
def f(x):# this is another function for testing
return [something else]
[...] # another formula to try. This is just a snippet and might not compile.
def Newton(...):# the old version. Not yet trashed because maybe needed.
# Would have to rename this if the whole file is read by the compiler.
# Below follow more routines which are part of the final version of this file,
# but I don't want to compile all of them each time, while I fiddle around with
# the latest addition, for now put the beginning of the file.
# OTOH I would like to have that code in the same file for easier copy-paste in
# case I need some parts of it while developing the new stuff at top of file.