Python陷阱例程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python陷阱例程相关的知识,希望对你有一定的参考价值。

好吧,为了生活,我编程ABB industrial robots,我们使用的编程语言称为Rapid

我在Rapid中可以做的一件非常酷的事情叫做陷阱例程。它就像一个while循环,但它不是在检查条件之前循环遍历整个循环,而是在它等待发生的事件发生后立即打破它。

我想它类似于javascript中的事件监听器。就像它在正常程序的后台运行一样。我想在python中这样做。

我没有正式的CS教育,所以我不确定这个概念是什么。对不起,如果它有点模糊,我不确定如何以清晰的方式询问它。

答案

像大多数语言一样,Python也通过使用处理函数来处理system signals。有关更多详细信息,请查看有关接收和发送信号的Signals chapter,例如: here

简而言之,您可以将函数绑定到一个或多个信号:

>>> import signal
>>> import sys
>>> import time
>>> 
>>> # Here we define a function that we want to get called.
>>> def received_ctrl_c(signum, stack):
...     print("Received Ctrl-C")
...     sys.exit(0)
... 
>>> # Bind the function to the standard system Ctrl-C signal.
>>> handler = signal.signal(signal.SIGINT, received_ctrl_c)
>>> handler
<built-in function default_int_handler>
>>> 
>>> # Now let’s loop forever, and break out only by pressing Ctrl-C, i.e. sending the SIGINT signal to the Python process.
>>> while True:
...     print("Waiting…")
...     time.sleep(5)
... 
Waiting…
Waiting…
Waiting…
^CReceived Ctrl-C

在您的特定情况下,找出机器人向您的Python进程发送的信号(或者哪个进程监听信号),然后按照上面的说明对其进行操作。

以上是关于Python陷阱例程的主要内容,如果未能解决你的问题,请参考以下文章

保存和恢复陷阱状态?管理多个陷阱处理程序的简单方法?

Python递归中 return 代码陷阱

程序员必知的Python陷阱与缺陷列表

十条Python面试题陷阱,看看你是否会中招

程序员老司机都要错的 Python 陷阱与缺陷列表

根据子例程参数创建常量