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

Finite State Machine: Explain what the following line of code does

我目前正在尝试了解 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) returns 下一个状态的名称对应于 cargo 的值,但是 handler 似乎与 handlers 字典无关。

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

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

最初handler设置为起始状态的转换函数。在循环的每次迭代中,当前 handler 函数都会根据 cargo 的当前值调用。此函数 returns 下一个状态和更新的货物值。您调出的行采用这两个值并将它们分别分配给 newStatecargo。之后,代码检查新状态是否为结束状态。如果是,则循环终止。如果不是,则将 handler 的值更新为新状态的转换函数并继续循环。


"tuple assignment" 语法示例:

>>> 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)