"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como comparar com precisão strings de versões do Python?

Como comparar com precisão strings de versões do Python?

Publicado em 2024-11-18
Navegar:421

How to Accurately Compare Python Version Strings?

Como comparar strings de versão do Python de maneira elegante

Ao trabalhar com pacotes Python, muitas vezes é necessário comparar os números de versão. No entanto, comparar versões de strings pode levar a resultados incorretos, pois a ordem das strings pode não corresponder à ordem real da versão.

Para resolver esse problema, Python fornece a classe packaging.version.Version, que suporta o PEP 440 estilo de ordenação de strings de versão. Este método permite a comparação precisa de strings de versão, levando em consideração caracteres especiais e identificadores de pré-lançamento.

Usar Versão é simples:

from packaging.version import Version

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

print(version1 

Ao contrário da comparação de string nativa, Version reconhece corretamente que "2.3.1" é menor que "10.1.2".

Outra opção, embora obsoleta, é distutils.versão. Embora não esteja documentado e esteja em conformidade com o PEP 386 desatualizado, ainda pode ser encontrado:

from distutils.version import LooseVersion

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

print(version1 

No entanto, distutils.version tem limitações e não lida corretamente com versões PEP 440.

Em resumo, para comparar strings de versão Python com precisão e em um Pythonic forma, use packaging.version.Version.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3