Size: a a a

Сообщество Python Программистов

2021 January 21

КБ

Кирилл Баст... in Сообщество Python Программистов
$name$
Руд, почему глобалы — плохо
задай этот вопрос в рудач
источник

$

$name$ in Сообщество Python Программистов
Кирилл Баст
задай этот вопрос в рудач
Чта?)
источник

КБ

Кирилл Баст... in Сообщество Python Программистов
$name$
Чта?)
Вот тут спроси @rudepython
источник
2021 January 22

$

$name$ in Сообщество Python Программистов
Кирилл Баст
задай этот вопрос в рудач
Я поискал, нашел исчерпывающий ответ от Юры, мне достаточно)
источник

А

Айван in Сообщество Python Программистов
@F0rzend, для меня основные аргументы это трудности с масштабированием, тестированием и структурой проекта
источник

А

Айван in Сообщество Python Программистов
Переслано от /warn
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду.
В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она.
Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение).
Глобальные переменные ухудшают масштабируемость проекта.
Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет).
Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял).
Глобальные переменные создают большие сложности при использовании модульного тестирования.
Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
источник

$

$name$ in Сообщество Python Программистов
Айван
@F0rzend, для меня основные аргументы это трудности с масштабированием, тестированием и структурой проекта
Ну вот Юра это и сказал)
источник

$

$name$ in Сообщество Python Программистов
Плюс он ещё до импорта доебался, но это шыза какая-то
источник

А

Айван in Сообщество Python Программистов
$name$
Плюс он ещё до импорта доебался, но это шыза какая-то
О чём речь?
источник

$

$name$ in Сообщество Python Программистов
Айван
О чём речь?
источник

A

AstralRomance in Сообщество Python Программистов
Поясняю, почему глобалы плохо на примере настоящего продающегося продукта.
Есть глобальный массив qwin, а есть переменная qwin. И если ты пытаешься обратиться к qwin, в зависимости от контекста, получаешь совсем разные результаты.
источник

A

AstralRomance in Сообщество Python Программистов
(это настоящий живой продакшен, сегодня с этим столкнулся в очередной раз)
источник

$

$name$ in Сообщество Python Программистов
AstralRomance
Поясняю, почему глобалы плохо на примере настоящего продающегося продукта.
Есть глобальный массив qwin, а есть переменная qwin. И если ты пытаешься обратиться к qwin, в зависимости от контекста, получаешь совсем разные результаты.
Ну глобальные массивы — хуйита. У меня глобальная переменная — экземпляр класса, и она используется, например, чтобы данные из базы достать и всегда остаётся статичной. Можно, наверное, сказать, что это константа
источник

A

AstralRomance in Сообщество Python Программистов
Для констант есть соглашение в пеп, как сделать так, чтобы все понимали, что это константа
источник

А

Айван in Сообщество Python Программистов
$name$
Плюс он ещё до импорта доебался, но это шыза какая-то
До импортов можно докопаться если их используют не чтобы импортировать а чтобы "вызвать скрипт". (Что обычно и приходится делать когда регистрируются хэндлеры при помощи глобального dp)
источник

$

$name$ in Сообщество Python Программистов
AstralRomance
Для констант есть соглашение в пеп, как сделать так, чтобы все понимали, что это константа
Квасом называть?)
источник

A

AstralRomance in Сообщество Python Программистов
$name$
Квасом называть?)
Ага.
источник

R3

Rud 356 in Сообщество Python Программистов
$name$
Ну глобальные массивы — хуйита. У меня глобальная переменная — экземпляр класса, и она используется, например, чтобы данные из базы достать и всегда остаётся статичной. Можно, наверное, сказать, что это константа
хочу два коннектора заебашить на разные бд, чо дальше?
источник

RC

Raniqubihe Cybohe in Сообщество Python Программистов
как можно имротировать библиотеку в качестве переменной?
источник

$

$name$ in Сообщество Python Программистов
Айван
До импортов можно докопаться если их используют не чтобы импортировать а чтобы "вызвать скрипт". (Что обычно и приходится делать когда регистрируются хэндлеры при помощи глобального dp)
Мой грешок)
Я так подключал все и сразу, но отказался от этого по понятным причинам. Сейчас у меня похожая хуетень(
При импорте исполняется скрипт, где в итоге присваивается контекстная переменная. Исправить это я не смог(
источник