我正在尝试存储一个命令列表,以在 Python 中使用双端队列发送串行电缆。
我的函数“send_command”接受 3 个值;命令,一个整数。暂停和 bool 等待。其定义如下。
def send_command(self, command, pause=0, wait=False):
我想做的是,而不是像这样调用这个函数:
send_command("A234", 5, True)
……或者……
send_command("B4242")
我希望能够在双端队列列表中存储命令,然后使用 popleft 函数调用我的函数。这将使我能够执行以下操作:
CommandList = deque((['A234', 5, True], ['B4242']))
...并使用 deque.append() 作为向列表中不断添加内容的方法,然后这些内容将依次发送到我的 send_command 函数。然后,我可以在需要时(或我的代码的串行部分可以做到的那样快)将新命令加入和退出列表。
我遇到困难的部分实际上是使用 CommandList.popleft 或双端队列列表的任何部分作为我的send_command 函数的参数。它似乎并不像以下那样简单:
send_command(CommandList.popleft)
我确定这很简单,但我无法弄明白。
有人能帮忙吗?
谢谢你。
安迪
请您参考如下方法:
可能你需要这样的东西:
obj.send_command(*CommandList.popleft())
也就是说,调用 popleft 并将结果用作 send_command 的参数列表。 self 参数表明这是一个成员函数,因此您需要在对象上调用它
另一种方法,正如我在评论中所写,是用这样的东西存储准备好的函数:
def make_command(obj, *args, **kwargs):
def f():
obj.send_command(*args, **kwargs)
return f
然后你可以做
queue.append(make_command(obj, 'ABC', whatever='else'))
然后执行:
command = queue.popleft()
command()
