0

Как проверить, написан ли код на Python 2.7 или 3 и выше?

256

У меня есть долгоиграющий проект на Python, который содержит много ошибок, и я пытаюсь его отладить. Код грязный и не задокументирован. Я знаком с Python 2.7. В проекте нет бинарных файлов. Простая идея - попробовать выполнить его с помощью команд python2.7 file.py или python3 file.py и посмотреть, что сработает. Но, как я уже упоминал, проект уже содержит много ошибок, так что ни один из этих вариантов не работает. Существует ли какой-либо способ, метод или редактор, который мог бы подсказать, в какой версии Python (2.7 или 3.x) был написан код?

2 ответ(ов)

0

Попробуйте скомпилировать ваш скрипт. Если в нём использован синтаксис, специфичный для определённой версии, то компиляция завершится ошибкой.

Вот команды, которые вы можете использовать:

$ python2 -m py_compile foo.py
$ python3 -m py_compile foo.py

Это позволит вам проверить, поддерживает ли код выбранная версия Python.

0

Эти конструкции указывают на использование Python 2.x:

import exceptions

for i in xrange(n):
  ...

print 'No parentheses'

# raw_input не существует в Python 3
response = raw_input()

try:
   ...
except ValueError, e:
   # обратите внимание на запятую выше
   ...

Эти примеры могут также встречаться в коде Python 3 из-за устаревших привычек:

'%d %f' % (a, b)

# целочисленное деление
r = float(i)/n # где i и n - целые числа
r = n / 2.0

Эти конструкции, скорее всего, принадлежат Python 3:

# f-строки
s = f'{x:.3f} {foo}'

# range возвращает итератор
foo = list(range(n))

try:
   ...
except ValueError as e:
   # обратите внимание на 'as' выше
   ...
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь