我目前正在尝试理解Python中有限状态机的implementation。
while True:
(newState, cargo) = handler(cargo) #(this line)
if newState.upper() in self.endStates:
print("reached ", newState)
break
else:
handler = self.handlers[newState.upper()]
我无法理解(此行)的作用。我想 handler(cargo)返回与 cargo 的值对应的下一个状态的名称,但 handler 似乎与无关处理程序字典。
那么,请你告诉我这条线的作用,或者在哪里可以找到与此类操作相关的更多信息?先感谢您。
答案 0 :(得分:1)
handlers
是从州名到过渡函数的映射。 handler
是当前状态的转换函数。
最初handler
设置为开始状态的转换函数。在循环的每次迭代中,在handler
的当前值上调用当前cargo
函数。此函数返回下一个状态和更新的货物值。您调出的行会获取这两个值,并分别将它们分配给newState
和cargo
。之后,代码检查新状态是否为结束状态。如果是,则循环终止。如果不是,handler
的值将更新为新状态的转换函数,并且循环继续。
"元组分配的示例"语法:
>>> def foo():
... return 1, 2, 3
...
>>> a, b, c = foo() # parentheses on left side of = are optional
>>> a
1
>>> b
2
>>> c
3
>>> a, b, c
(1, 2, 3)