有限状态机:解释以下代码行的作用
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 下一个状态和更新的货物值。您调出的行采用这两个值并将它们分别分配给 newState
和 cargo
。之后,代码检查新状态是否为结束状态。如果是,则循环终止。如果不是,则将 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)
我目前正在尝试了解 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 下一个状态和更新的货物值。您调出的行采用这两个值并将它们分别分配给 newState
和 cargo
。之后,代码检查新状态是否为结束状态。如果是,则循环终止。如果不是,则将 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)