Почему не GLOBAL?

Потребовалась конструкция с использованием переменной вне функции. когда-то читал про плохие практики, и кто-то писал про то, что
var1=0
def func():
   global var1
   var1+=1

плохая практика. Чем я могу заменить такую конструкцию?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 4
SoreMix
@SoreMix Куратор тега Python
yellow
Чем я могу заменить такую конструкцию?

Нормальным возвращением переменной через return

def func(var):
    var += 1
    return var

var1 = 0
var1 = func(var1)
Ответ написан
Комментировать
@lightmanLP
Задушил питона
Принимать переменную, как параметр и возвращать её;
Вместо функции сделать метод и хранить данные в экземпляре.
Ответ написан
Комментировать
MinTnt
@MinTnt
Функции при написании кода чаще всего представляют, как некую отдельную часть кода, которая выполняет заданные действия, но не влияет на основной код программы напрямую, лишь возвращая обратно на глобальный уровень необходимые данные.

По этой причине и не любят использование global в функциях, так как это рушит их представление.
А сам код выше можно заменить на:
var1 = 0
def func(var):
   return var+1

var1 = func(var1)
Ответ написан
Комментировать
yupiter7575
@yupiter7575
Python программист
Потому что каждая функция имеет к ним доступ и это засоряет пространство имен. Используйте либо return, либо волшебное слово self в функциях класса
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы