Содржина на објавата
Как проверяется текущая версия Python? Допустим, вам нужно выбрать конкретное действие в зависимости от версии используемого интерпретатора. В моём примере мне нужна версия Python больше чем 3.5. Самый очевидный способ проверки мажорной версии такой: >>> import sys >>> print sys.version_info.major > 3 True С минорной версией будет чуть длинней >>> print sys.version_info.major == 3 and sys.version_info.minor > 5 Можно ли сократить эту запись? Конечно! Иначе поста бы не было 😊 Вспоминаем как работает сравнение итерируемых объектов в Python. Элементы сравниваются попарно. Если первая пара совпала, проверяется следующая пара, и так пока не найдутся разные элементы или закончится один из итераторов. Например, сравним кортежи. >>> (1, 2) > (1, 3) False >>> (1, 4, 5) > (1, 4, 3) True Теперь преобразуем version_info в кортеж (или список) >>> tuple(sys.version_info) (3, 7, 3, 'final', 0) И можем использовать его для сравнения кортежей >>> tuple(sys.version_info) > (3, 5) True На самом деле можно и не преобразовывать явно, главное запомнить что сравнивать нужно с кортежем. >>> sys.version_info > (3, 5) True Можно еще как-то иначе? Можно! Строки тоже итерируемый объект. Они сравниваются не по длине или кодам символов, а так же попарно, и по порядку символа в таблице (или в алфавите). >>> 'a' > 'b' False >>> 'e' > 'c' True >>> '5' < '4' False А что у нас есть еще в sys? Правильно, переменная version. >>> print (sys.version) '3.7.3 (default, Dec 20 2019, 18:57:59) \n[GCC 8.3.0]' Сравниваем эту переменную с другой строкой: >>> sys.version > '3.5' True ⚠️Этот метод со строкой перестанет работать когда версия Python станет 3.10+. Не используйте его! # tricks