Если ваша цель состоит в том, чтобы остановить запуск кода на pre-Python-3.6, то явно проверьте это:
import sys
if sys.version_info < (3, 6):
raise RuntimeError('my_thing requires a Python version of at least 3.6.')
Если вы просто больше не заботитесь о поддержке pre-Python-3.6, тогдавам не нужно ничего делать.Ваш код уже совершенно корректен Python 3.6.
Попытка просмотреть всю кодовую базу и преобразовать ее, чтобы использовать методы, которые не работают в предыдущих версиях, просто вызовет массу ненужного оттока кода ириск введения ошибок без реальной выгоды.Новые методы не являются даже безусловными обновлениями по сравнению со старыми;например, если вы пройдете и переключите все форматирование строк на f-строки, вам может понадобиться пройти и все равно переключить все обратно для поддержки интернационализации, поскольку невозможно интернационализировать форматирование f-строки.
Вместо этого, когда у вас есть особая причина для изменения какой-либо части вашего кода, вы можете свободно использовать методы, несовместимые с версиями Python до 3.6, при внесении этих изменений.
Помните, что новые вещи в новых выпусках Python - это не просто простые вещи, такие как 0-аргумент super
.Если по какой-то причине вы хотите наполнить свой код как можно большим количеством новых замечательных языковых функций, есть такие вещи, как
и это раньше, даже если учесть зависимости только для Python 3, к которым у вас есть доступ.Многие из этих вещей потребуют тщательного проектирования, чтобы включить их в вашу программу.Включение их таким образом, что получается действительно хороший код, не является чем-то автоматическим или бессмысленным, быстрым ручным переходом по вашему коду.Попытка рассказать вам, как включить все эти вещи в вашу программу, слишком широка для ответа на переполнение стека;слишком много нового.
Кроме того, даже сама стандартная библиотека Python не делает попыток очистить использование шаблонов, совместимых со старыми версиями.Быстрый grep
через текущую главную ветвь CPython показывает сотни классов, все еще наследующих от object
и более тысячи использований str.format
, которые можно заменить на f-строки.