Prunkles
percent*
Tishka17
def get_updater(token): return lambda *a, **k: get_update(*a, **k, token=token)
Туночка️
та я увидел
Tishka17
Вот тебе функциональное программирование
Туночка️
теперь кол-во О увеличелось
Aragaer
functools.partial(get_update, token=token)
Tishka17
Можно через partial конечно
Tishka17
Ну вот, да
Anonymous
тоже так подумал
🍁 Jaŭhien
Да
Anonymous
Да
👌
Anonymous
просто думал мб есть какой нибудь другой способ, чтоб не делать отдельную таблицу с одним полем
Tishka17
да я лох
Просто запомни: глобальные переменные - зло и не должны использоваться если есть хоть одно присваивание после ее создания
Aragaer
percent = percent if percent is not None else 10
Туночка️
Можно через partial конечно
Если я просто делаю lib.TOKEN = 'типа токен' без прописывания в либе TOKEN = '', тоже пизда?
🍁 Jaŭhien
Ну да, если у тебя один глобальный процент - незачем его в бд класть
Tishka17
Если я просто делаю lib.TOKEN = 'типа токен' без прописывания в либе TOKEN = '', тоже пизда?
А создавать переменные в модуле вне этого модуля - вообще говно
Туночка️
оно пашет
Tishka17
Конечно пашет
Tishka17
Пока что-то переделать не решишь
Туночка️
А что я решу переделывать?
Tishka17
Все что угодно
Tishka17
Например, тесты наконец написать
Tishka17
Короче, просто НИКОГДА НЕ ЮЗАЙ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
Туночка️
Monch
да нашел
Поделитесь?)
Туночка️
Присваиваешь
только в начале кода
Tishka17
только в начале кода
Нет, это не начало
Tishka17
Сначала куча импортов работает
Туночка️
ну бял после импортов
Tishka17
И функции создаются
Tishka17
Ну это уже нихрена не начало
Tishka17
но если я токен не пересваиваю?*
Вот понадобится тебе запустить две копии с разными токенами, что делать будешь?
Tishka17
Если тебя потенциальные проблемы с импортами не пугают
Туночка️
понял
Туночка️
ыыыыыыыыыы
Туночка️
Туночка️
копии либ сделаю точнее и по разным папкам
Макс
Короче, просто НИКОГДА НЕ ЮЗАЙ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
а для регистрации методов через декораторы?
Tishka17
Лол
Pavel
...
Туночка️
Лол
но вообще теперь понял
Pavel
что мешает инстансу соединения скормить токен при ините, религия?
Tishka17
но вообще теперь понял
Это только одна из проблем
Макс
Это в идеале тоже.
FILE_HANDLERS = {} def bind_sound_reader(sound_type): '''Bind sound file reader to sound_type type''' def sound_handler_decorator(decored): FILE_HANDLERS[sound_type.lower()] = decored return decored return sound_handler_decorator чтот тип такого
Pavel
ну будет токен как аргумент использовать у каждой функции и страдать^W наслаждаться
Макс
В итоге у тебя глобальный стейт и функции хз как тестировать без него
отдельно тестируются регистрируемые функции, отдельно тестируется, что все фунции зарегистрированы
Tishka17
отдельно тестируются регистрируемые функции, отдельно тестируется, что все фунции зарегистрированы
Ну если ты юзаешь декоратор, у тебя функции всегда зарегистрированы. И без регистрации их не проверить
Tishka17
То есть надо сначала как минимум создать то, куда регистрируешь
Tishka17
Во
Tishka17
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду. В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она. Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение). Глобальные переменные ухудшают масштабируемость проекта. Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет). Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял). Глобальные переменные создают большие сложности при использовании модульного тестирования. Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Pavel
Во
это всё опровергается одним желанием делать "хуяк-хуяк и в прод"
Pavel
нет, вы просто мыслите догмами. (с) @MarkEgorov
лично я мыслю юникс-сокетами
Alex
а я BSD-сокетами ;)
Artyem
Прошлый век. Хуячим прямо в проде
в админке код набираем он потом eval`ится
Tishka17
в админке код набираем он потом eval`ится
И поля в таблице создаются в зависимости от того, что ввел юзер
Artyem
а sql уже готовый язык для запроса к данным, поэтому вместо api просто проксируем запросы через http к бд!
Pavel
а я BSD-сокетами ;)
слушай, а кто не так давно за супервизор в докере топил?
Pavel
не тот же персонаж, случаем?
Alex
слушай, а кто не так давно за супервизор в докере топил?
а действтиельно кто? это ж вроде в чате бегиннеров было.
Alex
это в бегиннерах @melancholiak топил