Comments 25
Спасибо большое за обратную связь.
А то я по счётчику просмотров вижу, что люди статью читают, но плюсиков почему-то не прибавляется, что, конечно, несколько демотивирует. Пока не пойму, то ли статья слабовата, то ли с форматом (длинновато получилось) не угадал.
Хорошая статья, и хорошо, что в одном месте, но если это вдумчиво читать, тут несколько дней нужно.
Или я чего-то не понял, или здесь ошибочка.
А вообще статья годная. Мне, как ненастоящему сварщику junior-у пригодится, например.
А в чём ошибка?
Какая взаимосвязь между датой/временем и encode/decode, и при чем тут math?
Вот небольшая выжимка из прекрасного cheatsheet по Python (номер два в моём списке источников в конце статьи, сразу после официальной документации):
Encode
<D/T/DT> = D/T/DT.fromisoformat('<iso>') # Object from ISO string. Raises ValueError.
<DT> = DT.strptime(<str>, '<format>') # Datetime from str, according to format.
<D/DTn> = D/DT.fromordinal(<int>) # D/DTn from days since the Gregorian NYE 1.
<DTn> = DT.fromtimestamp(<real>) # Local time DTn from seconds since the Epoch.
<DTa> = DT.fromtimestamp(<real>, <tz.>) # Aware datetime from seconds since the Epoch.
Decode
<str> = <D/T/DT>.isoformat(sep='T') # Also `timespec='auto/hours/minutes/seconds/…'`.
<str> = <D/T/DT>.strftime('<format>') # Custom string representation.
<int> = <D/DT>.toordinal() # Days since Gregorian NYE 1, ignoring time and tz.
<float> = <DTn>.timestamp() # Seconds since the Epoch, from DTn in local tz.
<float> = <DTa>.timestamp() # Seconds since the Epoch, from aware datetime.
Arithmetics
<D/DT> = <D/DT> ± <TD> # Returned datetime can fall into missing hour.
<TD> = <D/DTn> - <D/DTn> # Returns the difference, ignoring time jumps.
<TD> = <DTa> - <DTa> # Ignores time jumps if they share tzinfo object.
<TD> = <TD> * <real> # Also: <TD> = abs(<TD>) and <TD> = <TD> ±% <TD>.
<float> = <TD> / <TD> # How many weeks/years there are in TD. Also //.
Даже если что-то пойдет не так, как задумано (например, вы не обработаете исключение во время работы с файлом), менеджер контекста «зачистит хвосты», и ваша оплошность не отразится, например, на файловой системе.
Не знал, что это работает как транзакция. Мне всегда казалось, что менеджер контекста лишь объявляет переменную на время исполнения кода и удаляет ее из памяти и обработки в случае выхода из контекстного менеджера.
Спасибо за труд, как раз знакомлюсь с пайтоном
Михаил, спасибо огромное за проделанную работу! Отличный материал, чтобы освежить знания о Python и заполнить пробелы.
Спасибо за материал. Видно, что в него вложен большой труд.
Но не совсем ясно, для какой аудитории этот учебник. Для начинающих тут слишком много упоминаний более глубоких тем, хотя большинство базовых пунктов раскрыты именно под них; для "продолжающих" слишком много базовой информации, в то время как те, более глубокие темы, недораскрыты. Это отразилось и на последовательности пунктов.
Очень показательно выглядят деревья – описаны раньше строк (/начинающие закрыли страницу/), и по объёму раскрытия вместе эквивалентны базовым строковым методам (/продолжающие ушли в гугл, в хорошем исходе/).
Могло бы помочь дополнительное введение уровней, для каждого пункта, хотя бы "начинающим / продолжающим / углубляющимся". И согласовать степень раскрытия пункта под каждый уровень. Здесь, как раз, можно подумать о дроблении на разные статьи, так как в формате "всё-в-одном" материал тогда вырастет ещё раза в два, как минимум, а читатели утонут в проскроллах не своих уровней. Можно для сокращения текста сопровождать ссылками на прочие статьи, так как все пункты, по отдельности, уже не раз описаны.
Уровни на диаграммах я в расчёт не беру – они никак не отражены в тексте. Да и дробления на два уровня явно недостаточно – те же метаклассы оказываются на одном уровне с Counter, dict comprehension и @cache (специально взял примеры из разных разделов).
Ну и само дробление на разделы… оно-то и логично категоризировано, но последовательность изложения/чтения от этого сильно страдает.
На текущий момент материал очень хорош и полезен освежающим знания, для чтения по диагонали, с гуглом в соседней вкладке, но никак не в качестве учебника, как мне видится.
Спасибо за развёрнутый комментарий!
В предыдущем материале (https://habr.com/ru/articles/697760/) я пытался составить небольшой путеводитель, придавая ему некоторой универсальности цветовой дифференциацией тем.
В текущей статье я изначально хотел расписать только "зеленые" темы (для начинающих), но потом как-то слегка залип и стал строчить про всё подряд.
В целом, материал всё-таки больше для новичков с небольшим запасом на будущее, какие-то специфические темы средней сложности, вроде адаптеров для логгинга или кастомных JSON-преобразований, здесь рассматривать не стоит.
ЦА статьи - готовящиеся к тех собеседованию, или проходящие его.
Курсы и учебники для начинающих нужно уметь писать. Нужно уметь создавать иллюзию у начинающих, что за 2-3 месяца умственных усилий у них будет зарплата в 120.
Ох и работу вы проделали, вы титан. В закладки однозначно.
окинул взглядом... может, ну его нафиг, в С++ вернуться...
самая толковая статья про пайтон, что я читал на русском
Спасибо за статью!
Колоссальная работа! Есть что узнать, даже будучи профессионалом!
Весьма полезная статья! Стоит отметить!
Ядро планеты Python. Интерактивный учебник