如何解决如何“运行”队列中的函数?
基本上我在 Python 中创建了一个带有一些函数的队列(用户按照他想要的顺序排列),现在我想按顺序执行这些函数,但我真的没有找到哪个顺序这样做。 队列:
class Queue:
def __init__(self):
self.elements = []
def enqueue(self,data):
self.elements.append(data)
return data
def dequeue(self):
return self.elements.pop(0)
def rear(self):
return self.elements[-1]
def front(self):
return self.elements[0]
def is_empty(self):
return len(self.elements) == 0
功能:
if (escolha=='2'):
print("Type your hotkey. Ex: alt+tab+ [3 keys maximum]")
my_var = input("")
my_var = my_var.split('+')
def hotchave():
pyautogui.hotkey(str(my_var[0]),str(my_var[1]),str(my_var[2]))
queue.enqueue(hotchave)
if (escolha=='3'):
write=input('What will be written?: ')
def escrever():
pyautogui.write(write)
queue.enqueue(escrever)
我已经尝试过诸如 return、front 之类的东西,但似乎没有用。
解决方法
有几种不同的方法可以做你想做的事,其中一些需要修改你的类。既然你说你想从队列中检索和运行多个函数,我建议可以迭代它的当前内容,这可以通过向类添加一个 __iter__()
方法来完成。
下面展示了如何做到这一点,以及如何使用它。
class Queue:
def __init__(self):
self.elements = []
def enqueue(self,data):
self.elements.append(data)
return data
def dequeue(self):
return self.elements.pop(0)
def rear(self):
return self.elements[-1]
def front(self):
return self.elements[0]
def is_empty(self):
return len(self.elements) == 0
def __iter__(self):
'''Iterate current contents.'''
return (elem for elem in self.elements)
示例用法:
queue = Queue()
my_var = 'alt+shift+k'
my_var = my_var.split('+')
def hotchave():
print('vars:',str(my_var[0]),str(my_var[1]),str(my_var[2]))
queue.enqueue(hotchave)
write = 'This will be written'
def escrever():
print(write)
queue.enqueue(escrever)
# Execute commands in Queue.
for command in queue:
command()
print('-fini-')
输出:
vars: alt shift k
This will be written
-fini-
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。