为什么Python3执行一段注释掉的代码?

chi*_*ffa 2 python python-3.x

在使用 Python 8 年多之后,我今天遇到了 Python 3.8 的问题:它执行了我注释掉的代码。

我能够中断它,因为它正在通过应该被注释阻止的代码路径以获得此屏幕截图:

在此处输入图片说明

正如函数名称所示,有问题的操作回滚有点耗时,我很想知道发生了什么以避免将来处理它。

我目前最好的解释是,由于代码在远程机器上运行,无论出于何种原因,代码启动时都没有进行注释,而是为堆栈跟踪进行了注释。

有没有人有类似的经历或知道可能发生的事情?

Wil*_*son 8

我从评论中确认了我的假设,文件如下:

import time

def dont_run():
  raise Exception("oh no i ran it")

time.sleep(10)

dont_run()
Run Code Online (Sandbox Code Playgroud)

我保存了那个文件,然后运行它。当它运行时,我注释掉了最后一行并重新保存了文件,然后我收到了这个错误:

$ py main.py
Traceback (most recent call last):
  File "main.py", line 10, in <module>
    # dont_run()
  File "main.py", line 6, in dont_run
    raise Exception("oh no i ran it")
Exception: oh no i ran it
Run Code Online (Sandbox Code Playgroud)

所以我认为这里一定发生了什么是你在文件被保存到磁盘之前运行了文件(可能是两个网络请求之间的竞争,你运气不好)。