Bogdan (SirEdvin)
А экономия места не приведет к проблемам?)
RAwesoMeat
Скорее просядет производительность, поскольку эта функция вызывается чуть более чем часто.
Bogdan (SirEdvin)
Стоит ещё учитывать, что python ещё и про скрипты
RAwesoMeat
Да. на сях это решило бы массу проблем по скорости во много раз, но есть одна вещь - в питоне есть то, что на сях надо было бы писать дольше. Такой вот расклад, что лень кодера приводит к чуть более увеличенному интервалу ожидания конечного пользователя.
RAwesoMeat
* хотя нет, не лень, увы, дедлайны *
Bogdan (SirEdvin)
Если основное время - это работа с бд, чем помогут си? А если нет, то точно питон, а не завтыки?
RAwesoMeat
Если основное время - это работа с бд, чем помогут си? А если нет, то точно питон, а не завтыки?
Си разве что уберут доли секунд наложенные интерпретацией. И то, там между запусками скрипта проходят почти сутки и время загрузки скрипта в интерпретатор совсем незаметно в таких масштабах. Нет, Си скорее не даст особого прироста, если конечно кодер не аптекарь и у него в кармане не спрятаны атомные весы.
Yura
ты больше просядешь в базе, от языка тут мало зависит
RAwesoMeat
ты больше просядешь в базе, от языка тут мало зависит
Да, я знаю, я на это уже указал. Да и собственно, речь даже была не об этом, а о кол-ве строк 1200 :) Хотя там одни сплошные if и проверки раздельных запросов.
Yura
лучше не трогать
Yura
но за такое надо бить по рукам, а сейчас уже поздно
RAwesoMeat
😁 Ну я вот и думаю, как можно сократить 1200 строк? Разбить на подфункции? В принципе можно. Но там формируется достаточно большой контекст (аккумулируется структура данных, каждая часть которой необходима для следующих запросов).
Yura
есть старый принцип, работает - не трогай!!
RAwesoMeat
Подготавливать структуру и гонять ее между вызовами? Можно, но едва ли это сэкономит место, разве что будут сплошные def
RAwesoMeat
есть старый принцип, работает - не трогай!!
Таким принципом руководствовались когда создавали кучу бд на разных серверах под разные направления статистики 😂 пришлось продолжить их идею (примерно так же ответили когда зашла речь о кликхаусе)
Aquinary
pep8 + pylint все расскажут и покажут
Про pep8 знаю, а вот про pylint нет. Сябки
Aquinary
Bogdan (SirEdvin)
Про pep8 знаю, а вот про pylint нет. Сябки
Стоит заметить, что у него в целом есть конкуренты, например, pyflakes. Выбирай, что больше будет нравится)
Bogdan (SirEdvin)
Да, я знаю, я на это уже указал. Да и собственно, речь даже была не об этом, а о кол-ве строк 1200 :) Хотя там одни сплошные if и проверки раздельных запросов.
Скорее всего, тут надо делать рефакторинг постановки задачи, как мне кажется. Без него делать чисто ради маленьких функций смысла мало.
RAwesoMeat
Скорее всего, тут надо делать рефакторинг постановки задачи, как мне кажется. Без него делать чисто ради маленьких функций смысла мало.
Да, однозначно следует пересмотреть в корне все. Но у серверов БД есть две стороны, одна в эти самые БД пишет, другая с них читает. И помимо БД деньги были уплОчены и за пишущие стороны. Поэтому позиция заказчика вполне оправдана - мы уже отбили затраты и хочется насладить прибылью. Поэтому, интересы Итшников для них находятся не в приоритете пирамиды :) А по разбивке на мелкие функции - стала бы обрисованная, пусть и не полным образом, задача отмазкой на вопрос - "куда нна столько строк в функции на питоне?".
RAwesoMeat
Или PEP и всё тут!?
Bogdan (SirEdvin)
Я, кстати, не вижу в pep 8 упоминания количества строк
RAwesoMeat
Я, кстати, не вижу в pep 8 упоминания количества строк
На эту ситуацию уругается pylint. Хотя да, о кол-ве нет упоминания (только что пробежался).
Bogdan (SirEdvin)
В pylint там есть по умолчанию ограничение на 100 строк, но его всегда можно отключить для конкретной функции
Bogdan (SirEdvin)
С комментом почему так сделано.
RAwesoMeat
Есть только длина строки
Bogdan (SirEdvin)
А, ну да, там есть max-module-lines=1000
RAwesoMeat
Думаю, данный вопрос в любом случае скорее религиозный, поскольку с ихсодниками вряд ли кто-то будет дальше работать. А так, между нами говоря, я там еще и строки до 200 символов в ряд увеличил (иначе 1200 строк превратились бы в нечто большее) 😂
Bogdan (SirEdvin)
У меня стоит ограничение на 400, я просто следую правилу, что бы все умещалось в один экран
Bogdan (SirEdvin)
Экраны то уже большие стали
RAwesoMeat
Да, 80 символов - это для консолек уже как-то. А 400 в ширину (или это о макс. кол-ве строк?)?
Bogdan (SirEdvin)
в ширину
RAwesoMeat
☺ мне прям полегчало, часто встречаю противников моих 200
Aquinary
Вопрос по поводу переноса длинных строк. Верно ли, или нет?
Aquinary
ктото бота пилит)
Уже напилен, дважды, второй раз с классами, сейчас привожу кодец в порядок, чтобы на гитлаб репу залить, чтобы не потерять)
Vladimir
Вопрос по поводу переноса длинных строк. Верно ли, или нет?
я не претендую на истину в последней инстанции но имхо надо переносить строки после ...photo( chat_id.... caption... photo...
Vladimir
а т.к. я за хаос, то перенос строк не для меня, путь будет каша)
Aquinary
Так?
Aquinary
Или равнять параметры по скобочке открывающей?
Vladimir
между параметром и "=" пробел и между "=" и выражениями пробел
Vladimir
но вроде стандарта конкретного нет, все делается для удобства восприятия. на мой спартанский взгляд выглядит хорошо
Aquinary
Угусь. Так и есть. Наверное, я даже согласен с ними в этом моменте)
Aquinary
ого, спасибо, а я думал наоборот
Вот, кстати, как в гугле осуществляют документирование
Aquinary
Мне это нравится
Vladimir
а смотри, там говорится что не использовать пробелы если указываешь в коде значение ключа по умолчанию, а у тебя это значения не по умолчанию, они у тебя в логике задействованы
Aquinary
keywords arguments
Aquinary
"для обозначение аргумента-ключа или значения по умолчанию"
Aquinary
Что, похоже, не одно и тоже
Aquinary
Но я могу ошибаться)
Bogdan (SirEdvin)
Вот, кстати, как в гугле осуществляют документирование
Вот только sphinx в такие штуки не умеет. Потому лучше так делать: https://thomas-cokelaer.info/tutorials/sphinx/docstring_python.html
Bogdan (SirEdvin)
:param arg1: description :param arg2: description :type arg1: type description :type arg1: type description :return: return description :rtype: the return type description
Bogdan (SirEdvin)
Хотя может где-то и лежит плагин для этого
Aquinary
Интересненько... надо и это попробовать
Aquinary
Хотя может где-то и лежит плагин для этого
Всё отлично, спинфикс тянет гугловский стиль
Bogdan (SirEdvin)
Окей, значит мой косяк(
Aquinary
Ну, то, мне скинули - слишком перегруженным кажется, во всяком случае пока. У меня сейчас и так получается 17 строк доков и 1 строка кода :D
Сергей
всем привет! подскажите, пожалуйста, как можно замокировать итерируемый объект, чтобы при проходе с помощью for .. in получать требуемые значения? мокирование __getitem__ и __len__ не дало желаемого результата, к сожалению
Bogdan (SirEdvin)
Мда, только так)
Сергей
взлетело, спасибо! с MagicMock так не получалось)
Aquinary
Очень сложно с 80 символами, увеличил до 100)
Bogdan (SirEdvin)
Я бы сразу до 200 увеличил
Bogdan (SirEdvin)
Там важно, что бы влазило в средний рабочий экран
Bogdan (SirEdvin)
А само количество не очень важно, как мне кажется
Aquinary
Ну, у меня дома нормальный фуллхд моник, а на работе 1366 который, а часто надо два файлика в рабочей области держать
Bogdan (SirEdvin)
Тогда, конечно, без вариантов)
λ
`lst = list(range(i))`
λ
Для pop(0) это получается O(n)? Для pop() это O(1)?
Boris
да
Mark ☢️
И перед чат айди равно поставь ентер
Anonymous
Что за фигня - не получается импортировать модель, которая лежит в папке ~/api/models/models.py(модель - это класс Users). Импортирую в файл ~/api/core/backup.py
Anonymous
python3.6 backup.py Traceback (most recent call last): File "backup.py", line 2, in <module> from models.models import Users ModuleNotFoundError: No module named 'models'
λ
__init__.py есть?
Anonymous
Да, есть
Anonymous
Самое забавное - если запускать через gunicorn, всё заработает.
λ
Из api запускаешь?