Попытка разместить GLOBAL в нужном месте в Python - PullRequest
0 голосов
/ 07 сентября 2018

Продолжайте получать синтаксическую ошибку, пытаясь понять, где и как GLOBAL работает в функции Python.

import os

path = "start"
route = "1"

def pathcontrol(route, path):
    global path
        while  path=="start":
            if route == "1":
                path = "one"
            elif route == "2":
                path = "two"
            else:
                return


pathcontrol(route, path)
print("Exit Path = "+path)

exit=input("Press enter to exit ")

Идея состоит в том, чтобы добавить input () для «route», чтобы пользователь мог выбрать 1 или 2, но я знаю, как с этим справиться.

Спасибо, : -)

1 Ответ

0 голосов
/ 07 сентября 2018

Вы отправляете путь в качестве аргумента, а также объявляете его глобально. 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

...