Есть ли способ немедленно вернуть все вызовы функций в стеке вызовов в python? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть следующий код:

def dfs(graph, start, visited=None):
    if visited is None:
        visited = set()
    visited.add(start)
    store = graph[start] - visited
    for next in store:
        if next[-1] == start[-1]:
            return 'hello there'
        dfs(graph, next, visited)
    return visited

graph = {'A1': set(['B1', 'C2']),
         'B1': set(['A1', 'D1', 'E2']),
         'C2': set(['A1', 'F1']),
         'D1': set(['B1']),
         'E2': set(['B1', 'F1']),
         'F1': set(['C2', 'E2'])}

dfs(graph, 'C2')

Я часто запускаю свои программы в python визуализации, чтобы понять, что происходит в программе. Когда я запускаю программу, указанную выше, я получаю:

Но я хочу, чтобы в этом случае последнее возвращаемое значение функции было «Привет!», Так как следующее [-1] == start [-1] - True (я имею в виду возвращаемое значение в строке 19). Я знаю, почему возвращаемое значение не «привет», но я хочу получить это возвращаемое значение. Существует ли какая-либо встроенная функция python, которая сообщает программе о том, что она должна игнорировать все, что находится выше в стеке вызовов, и возвращать 'hello there' для вызова функции в строке 19? Или как мне это сделать в этом случае?

Спасибо за ответы!

...