«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как точно сравнить строки версий Python?

Как точно сравнить строки версий Python?

Опубликовано 18 ноября 2024 г.
Просматривать:342

How to Accurately Compare Python Version Strings?

Как элегантно сравнивать строки версий Python

При работе с пакетами Python часто необходимо сравнивать номера версий. Однако сравнение версий строк может привести к неправильным результатам, поскольку порядок строк может не соответствовать фактическому порядку версий.

Для решения этой проблемы Python предоставляет класс package.version.Version, который поддерживает PEP 440. стиль упорядочения строк версий. Этот метод позволяет точно сравнивать строки версий с учетом специальных символов и идентификаторов предварительных выпусков.

Использовать версию очень просто:

from packaging.version import Version

version1 = Version("2.3.1")
version2 = Version("10.1.2")

print(version1 

В отличие от собственного сравнения строк, Version правильно распознает, что «2.3.1» меньше, чем «10.1.2».

Другой вариант, хотя и устаревший, это distutils.version. Хотя он недокументирован и соответствует устаревшему PEP 386, его все равно можно встретить:

from distutils.version import LooseVersion

version1 = LooseVersion("2.3.1")
version2 = LooseVersion("10.1.2")

print(version1 

Однако distutils.version имеет ограничения и некорректно обрабатывает версии PEP 440.

В общем, для точного сравнения строк версий Python и в Pythonic кстати, используйте package.version.Version.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3