Pull to refresh

Comments 13

Вообще я планировал небольшую заметку, но не преуспел: получилась здоровенная статья. Старался выбрать только самое интересное, но все равно в обзор попало три десятка доработок. Питон, он такой ツ

А что с производительностью реализаций данных функций? Если раньше их заменял другими конструкциями, то новые быстрее будут работать?

Может у каких-то функций вообще за последние выпуски реализацию в пользу производительности пересмотрели. Это тоже хотелось бы узнать в сравнительных тестах.

Зависит от реализации. Если новая функция написана на C — будет работать быстрее, чем ваша самописная на Python. Если нет — возможны варианты.

Ещё бы выбросили logging и unittest, вообще супер было бы.

А что с ними не так? В смысле, зачем их выкидывать?

Разве неочевидно? Они же омерзительно непитоничны. Судя по всему, их скопипастили в своё время с C++ или Java только потому, что надо было что-то такое иметь в стандартной либе как можно скорее. Теперь, когда есть нормальные альтернативы (loguru и pytest), поддерживать их там нет никакого смысла.

оно ведь как. Как в stdlib попадёте - так и приходите

При прочих равных, я буду использовать то, что гарантированно будет на хосте, а не то, что можно привезти. Мы же не в npm, в конце концов

А какой смысл в этих гарантиях? Можно же обеспечить себе то, что нужно, а не довольствоваться тем, что завезли.

Согласен, что logging and unittest are not pythonic. Но есть большой камень в огороды loguru и pytest:


loguru нормально через конфиг-файл не сконфигурируешь. Например, надо какой-нибудь сторонний Handler/Formatter добавить. В logging в конфиге пишем что-то типа:


formatters:
  json:
    class: pythonjsonlogger.jsonlogger.JsonFormatter

handlers:
  azure:
    class: opencensus.ext.azure.log_exporter.AzureLogHandler
    connection_string: blablabla

И всё будет работать. Загрузчик из logging сам всё разрулит, создаст экземпляры, передаст аргументы и т.п. А что делать в loguru? Их конфигурация из словаря так не умеет, там всё довольно примитивно. Придется писать всё вручную. Конфигурация через код — это не гибко.


pytest — классная библиотека, я только её и использую, но… Но столько неявной "магии" под капотом я больше нигде не видел. Это и хорошо и плохо. Хорошо, потому что нет boilerplate кода. Плохо, потому что при большой и развесистой тестовой кодовой базе там чёрт ногу сломит. Все эти фикстуры, которые неявно прокидываются, хуки, которые неявно вызываются и т. п.

unittest — архитектура в стиле xUnit.

Logging — да Java.

Интересно, зачем тратятся усилия на модули, которые никто никогда не будет использовать, типа graphlib и statistics?

Новинки в модуле math (нод и нок) могут привлечь школьников нчать изучать Python :)

А это точно все должно быть в стандартной библиотеке? Так-то многие функции специализированные.

Sign up to leave a comment.

Articles

Change theme settings