我想换掉这个丑陋的街区:
import signal
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGQUIT, signal_handler)
signal.signal(signal.SIGILL, signal_handler)
signal.signal(signal.SIGPIPE, signal_handler)
有了这个:
^{pr2}$不幸的是,python抛出:
File "./mysuperfile.py", line 107, in <module>
for sig in (SIGINT, SIGTERM, SIGQUIT, SIGILL, SIGPIPE):
NameError: name 'SIGINT' is not defined
我也试过
from signal import signal, SIGINT, SIGTERM, SIGQUIT, SIGILL, SIGPIPE
。。但这引发了:
File "./mysuperfile.py", line 108, in <module>
signal.signal(sig, signal_handler)
AttributeError: 'builtin_function_or_method' object has no attribute 'signal'
问题:正确的语法是什么?在
谢谢你!在
您不能从自身导入信号,但可以分别导入两者。在
我可能会:
当您做一个简单的
^{pr2}$import signal
时,所有的信号句柄都可以在当前名称空间中找到signal.SIGNALNAME
(例如signal.SIGQUIT
)。这和:当然,您可以在尝试以下操作时将它们直接导入当前命名空间:
^{3}$但是
signal
函数在当前名称空间中被称为简单的signal
(而不是signal.signal
)。因此,使用该导入,可以执行以下操作:然而,我发现这一点不太清楚。
signal
是模块还是函数?也许这并不难理解(毕竟,你不能调用一个模块),但另一种方式很明显。在相关问题 更多 >
编程相关推荐