Они не такие разные. Почти все, чему вы научились в Python 3, будет перенесено в Python 2. Я бы посоветовал вам просто погрузиться. Иногда вы увидите сообщение об ошибке, но большую часть времени они говорят сами за себя.
Могу поспорить, что освоить Django будет гораздо сложнее, чем привыкнуть к Python 2.
Библиотека six
может оказаться полезной, если вы хотите написать код, устойчиво обратно совместимый. В противном случае, я могу думать только о двух вещах, которые может быть важно знать заранее, когда вы возвращаетесь к Python 2:
Избегайте использования классов в старом стиле. В Python 3 вы можете без каких-либо проблем объявлять класс:
class Foo:
pass
В Python 2, если вы это сделаете, вы получите класс в старом стиле, который вам, вероятно, не нужен. Но вы не получите никаких сообщений об этом, поэтому могут возникать скрытые ошибки наследования, которые могут долго оставаться скрытыми, прежде чем возникнут проблемы. Так что в Python 2 не забудьте явно наследовать от object
:
class Foo(object):
pass
Избегайте использования range(n)
, по крайней мере, для больших значений n
. В Python 3 range
возвращает интеллектуальный итератор, но в Python 2 range
возвращает фактический список. Для больших диапазонов это может сжечь много памяти. Чтобы получить поведение Python 3 range
в Python 2, используйте xrange(n)
. Аналогичные предостережения применяются к методам словаря keys()
, values()
и items()
. Все они возвращают списки в Python 2. Используйте методы iterkeys()
, itervalues()
и iteritems()
для экономии памяти.
Есть несколько других превосходных ответов на этот вопрос, которые охватывают несколько других деталей, таких как unicode
support.