python 使用 locals() 或 globals() 时意外退出

python quits unexpectedly when using locals() or globals()

在我正在做的一个项目中,我需要不断地从解释器中进出,我对组合键 ctrl+z+enter 感到厌烦。因此,我创建了一个快捷方式,以便仅使用两个键(来自 cmd)从 python 终端更快地退出,但它会导致解释器退出。考虑文件 lazy.py:

中的以下代码
class hotkey():
     def __repr__(self):
          exit()
          return ''

q = hotkey()

当我使用 from lazy import * 然后尝试使用 locals()globals() 时出现问题。但是如果 q 不直接在范围内,e。 G。使用 import lazy,它们都按预期工作,但模块的重点是能够仅使用 q+enter 而不是 lazy.q+enter.

我放弃并返回 ctrl+z,但不知道这样做的原因是减少了我的睡眠时间。知道会发生什么吗?

这个你应该能看出来。尝试在不导入的情况下打印 globals()。请注意,每个变量都与其表示形式一起列出。当它尝试获取 q 的表示时,您的代码将退出解释器。

您必须在 Windows。请记住,您可以为您的口译员打开一个单独的控制台;你不必退出。此外,如果您 pip install readline,则 Ctrl-D 和 Ctrl-Z 将在没有 Enter 的情况下退出解释器。