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 的情况下退出解释器。
在我正在做的一个项目中,我需要不断地从解释器中进出,我对组合键 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 的情况下退出解释器。