Как мне изучить Python 2, если я уже знаю Python 3? - PullRequest
7 голосов
/ 23 января 2012

Я немного знаю Python 3 (я не новичок, но я не эксперт).Я заинтересован в веб-разработке, поэтому я хочу использовать Django.Каковы различия между двумя версиями Python?Как мне переключиться с 3 на 2.x?

Ответы [ 5 ]

5 голосов
/ 23 января 2012

Они не такие разные. Почти все, чему вы научились в Python 3, будет перенесено в Python 2. Я бы посоветовал вам просто погрузиться. Иногда вы увидите сообщение об ошибке, но большую часть времени они говорят сами за себя.

Могу поспорить, что освоить Django будет гораздо сложнее, чем привыкнуть к Python 2.

Библиотека six может оказаться полезной, если вы хотите написать код, устойчиво обратно совместимый. В противном случае, я могу думать только о двух вещах, которые может быть важно знать заранее, когда вы возвращаетесь к Python 2:

  1. Избегайте использования классов в старом стиле. В Python 3 вы можете без каких-либо проблем объявлять класс:

    class Foo:
        pass
    

    В Python 2, если вы это сделаете, вы получите класс в старом стиле, который вам, вероятно, не нужен. Но вы не получите никаких сообщений об этом, поэтому могут возникать скрытые ошибки наследования, которые могут долго оставаться скрытыми, прежде чем возникнут проблемы. Так что в Python 2 не забудьте явно наследовать от object:

    class Foo(object):
        pass
    
  2. Избегайте использования 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.

5 голосов
/ 23 января 2012

Если вы уже знакомы с Python 3, то есть почти нет различий, о которых вам придется беспокоиться при кодировании в Python 2. Наиболее заметные для пользователя различия касаются деталей print оператор, который вы, вероятно, не будете использовать для Django в любом случае.

Итак, просто напишите код и спросите о любых специфических проблемах, с которыми вы можете столкнуться.

3 голосов
/ 23 января 2012

Другое большое отличие состоит в том, как Python 3 обрабатывает юникод - все в Python 3 является либо строкой Unicode, либо двоичными данными, тогда как в Python 2 было проведено различие между строками Unicode и 8-битными строками.

На следующей странице есть намного больше информации о разнице между Python 2 и 3. http://docs.python.org/release/3.0.1/whatsnew/3.0.html

1 голос
/ 23 января 2012

Прочтите это: http://python3porting.com/differences.html

Обратите внимание, что многие вещи просто удалены из Python 2, такие как apply (), поэтому вам не о чем беспокоиться.

Также, как отмечает senderle, вы используете подкласс от объекта (это также рекомендуется в Python 3, возможно, по той причине, что это действительно имеет значение в Python 2).

0 голосов
/ 23 января 2012
...