Возвращаемое значение Python

#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 Я только что опубликовал один из возможных ответов.