#python #function #return-value
#python #функция #возвращаемое значение
Вопрос:
У меня есть глобальная переменная global_a
и функция для определения значения
# long Syntax
def assignement_a():
global_a = len(xyz)
return global_a
Смысл в том, чтобы вернуть значение вызывающему и одновременно присвоить значение глобальному, чтобы сохранить для дальнейшего использования, поэтому мне нужно что-то вроде этого
# shorter syntax
def assignement_a():
return global_a = len(xyz)
Есть ли короткое синтаксическое решение в python?
Комментарии:
1. Две строки кода слишком длинные …?
2. Пусть начнется лямбда-битва!
3. ни один из этих двух фактически не изменяет глобальную переменную
Ответ №1:
Просто для записи, правильная версия «длинного синтаксиса»:
def assignement_a():
global global_a
global_a = len(xyz)
return global_a
Что касается «короткого синтаксиса», я не понимаю, зачем это было бы необходимо здесь. Возможно, его можно сделать короче, используя лямбда-выражение, но это может просто скрыть назначение этой функции. Дальнейшее использование глобальных значений в любом случае не является лучшей практикой, и именно поэтому Python требует, чтобы вы четко указывали на это (это и то, как Python обрабатывает область видимости переменных)
Ответ №2:
Вы можете изменить глобальную переменную из вызывающей функции или оператора, например:
global_a=0
var1=0
xyz="stackoverflow"
def assignement_a():
return len(xyz)
def test():
global global_a
global var1
var1=global_a=assignement_a()
print(var1)
test()
print(var1)
print(global_a)
Подобный метод тестирования является вызывающим, и поэтому возвращаемое значение присваивается глобальной переменной или может использоваться для дальнейшего процесса.
Комментарии:
1. @UnholySheep см. Отредактированный
2. У вас все еще неверный отступ в последних 3 строках. Также это не делает того, о чем просил OP — он специально хотел
assignement_a
вернуть значение и изменить глобальную переменную3. @UnholySheep Я только что опубликовал один из возможных ответов.