2016-05-30 5 views
0

В настоящее время я пытаюсь понять конечный конечный автомат на 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()]  

Я не могу понять, что (эта линия) делает. Я полагаю, что обработчика (груз) возвращает имя следующего состояния, соответствующее значению груза, но обработчик кажется, не связанным с обработчиков словаря.

Итак, можете ли вы рассказать мне, что делает эта строка, или где я могу найти дополнительную информацию, связанную с этим видом операции? Заранее спасибо.

+1

'обработчик()' возвращает два элемента кортежа; '(newState, cargo) = обработчик (груз)' распаковывает этот кортеж на два имени ... – dawg

+1

несколько строк выше: 'try: handler = self.handlers [self.startState]' это объясняет, что такое 'handler'? –

+0

@ TadhgMcDonald-Jensen Да, знаю, что я понимаю. «обработчик» похож на ссылку на функцию в этом случае. Я прав? –

ответ

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

Благодарим вас за объяснение. Теперь я понимаю, как работает эта программа. –

Смежные вопросы