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

时间:2020-07-16 09:33:30

标签: python python-3.x

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

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

enter image description here

如函数名所示,所涉及的操作回滚有些耗时,我很想知道将来会发生什么,避免对此进行处理。

我目前最好的解释是,由于代码出于某种原因在远程计算机上运行,​​因此注释在代码启动时并未通过注释,而是在堆栈跟踪中进行了注释。

有人有类似的经历或对可能发生的事情有任何想法吗?

1 个答案:

答案 0 :(得分:8)

我从评论中证实了我的假设,并提供了以下文件:

import time

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

time.sleep(10)

dont_run()

我保存了该文件,然后运行它。在运行时,我注释掉了最后一行并重新保存了文件,然后出现此错误:

$ 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

因此,我认为这里必须发生的事情是,您在文件保存到磁盘之前运行了文件(也许是两次网络请求之间的竞争,您倒霉了)。

相关问题