Установка переменной вне функции в Python - PullRequest
0 голосов
/ 12 марта 2019

допустим, у нас есть такая конструкция:

x = ""
def xy():
    x = "String"

Теперь при вызове xy () и последующей печати x он пуст.
Попытка объявить переменную как глобальную, например:

x = ""
def xy():
    global x = "String"

Возвращает синтаксическую ошибку неверного синтаксиса. Почему?

Заранее спасибо за любую помощь.

Ответы [ 3 ]

2 голосов
/ 12 марта 2019

Я нашел ответ.

    x = ""
    def xy():
        global x 
        x = "String"

Дает желаемый результат.

1 голос
/ 12 марта 2019

Почему бы не попробовать передать переменную в модифицирующую функцию:

x = ''
def xy(x):
    x += "String"
    return x
x = xy(x)
print(x)

Это определяет функцию, которая принимает входные данные x и затем возвращает их после изменения.Это измененное значение затем переназначается на x, который находится вне области видимости.Возможно, более понятный пример будет выглядеть так:

x = 'My input' # create an initial variable
def xy(my_input):
    my_input += " String" # append another string to our input string
    return my_input # give the modified value back so we can overwrite old value
x = xy(x) # reassign the returned value of the function to overwrite this variable
print(x)

Выходы:

Мой ввод String

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

0 голосов
/ 12 марта 2019

Вы можете передавать переменные в функцию, что является наилучшей практикой. Вы также можете вернуть результат функции в переменную. Таким образом, вместо присвоения значения x внутри функции, вы можете просто использовать return для отправки переменной обратно, см. Ниже:

def xy(input):
    output = ''
    if input == 'Empty':
        output = 'Full'
    else:
        output = 'Empty'
    return output


x = 'Empty'
print(x)
>>> 'Empty'

# Update the result using xy()
x = xy(x)
print(x)
>>> 'Full'

# Once more
x = xy(x)
print(x)
>>> 'Empty'
...