Нет, вы не можете установить возвращаемое значение функции из-за пределов функции. Вместо этого используйте переменную в вызывающей функции.
Например, здесь вы хотите запомнить, какие узлы вы посетили. A set
хорош для запоминания набора объектов.
def explore(v):
visited.add(v)
for (v,w) in E:
if w not in visited:
explore(w)
Несколько предостережений об этом:
Если вы называете это дважды, все будет видно, как уже побывал, потому что состояние отслеживается в глобальном. Это похоже на то, что у вас уже есть, но может быть или не быть тем, что вы хотите. Если вы хотите, чтобы иметь возможность дважды повторять, что вам нужно, чтобы передать это вниз в качестве параметра, и предпочтительно добавить вторую функцию, которая запускает рекурсию:
def explore(v):
return explore_down(v, set())
def explore_down(v, visited):
visited.add(v)
for (v,w) in E:
if w not in visited:
explore(w)
Кроме того, в зависимости от того, какого типа v
и w
, Вы может получиться ошибка not hashable, for which see this question.
Я не уверен, что вы ожидали 'посетили (v) = true' делать –