Comments 13
Вообще я планировал небольшую заметку, но не преуспел: получилась здоровенная статья. Старался выбрать только самое интересное, но все равно в обзор попало три десятка доработок. Питон, он такой ツ
А что с производительностью реализаций данных функций? Если раньше их заменял другими конструкциями, то новые быстрее будут работать?
Может у каких-то функций вообще за последние выпуски реализацию в пользу производительности пересмотрели. Это тоже хотелось бы узнать в сравнительных тестах.
Ещё бы выбросили 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 :)
А это точно все должно быть в стандартной библиотеке? Так-то многие функции специализированные.
Как изменилась стандартная библиотека Python за последние годы