有限状态机:解释以下代码行的作用

时间:2016-05-30 18:53:24

标签: python dictionary state-machine

我目前正在尝试理解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 似乎与无关处理程序字典。

那么,请你告诉我这条线的作用,或者在哪里可以找到与此类操作相关的更多信息?先感谢您。

1 个答案:

答案 0 :(得分:1)

handlers是从州名到过渡函数的映射。 handler是当前状态的转换函数。

最初handler设置为开始状态的转换函数。在循环的每次迭代中,在handler的当前值上调用当前cargo函数。此函数返回下一个状态和更新的货物值。您调出的行会获取这两个值,并分别将它们分配给newStatecargo。之后,代码检查新状态是否为结束状态。如果是,则循环终止。如果不是,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)