Вы отправляете путь в качестве аргумента, а также объявляете его глобально. Python не знает, какую переменную path
использовать: глобальную или параметр.
Также: ключевое слово global
считается плохой практикой. Смотрите, например Pylint W0603.
Во всяком случае, приятно знать, как работает. Следующее напечатает exit path=one
потому что вы просматриваете и редактируете действительную глобальную переменную path
.
import os
path = "start"
route = "1"
def pathcontrol(route):
global path
while path=="start":
if route == "1":
path = "one"
elif route == "2":
path = "two"
else:
return
pathcontrol(route)
print("Exit Path = "+path)
Однако в приведенном ниже примере вы обращаетесь к path
, но не редактируете его. Вы "копируете" тот, что находится в глобальной области видимости:
import os
path = "start"
route = "1"
def pathcontrol(route, path):
while path=="start":
if route == "1":
path = "one"
elif route == "2":
path = "two"
else:
return
pathcontrol(route, path)
print("Exit Path = "+path)
А это печатает exit path=start