Питон 2 против 3
Сравнение между Python 2 и Python 3
Финальная версия 2.x версии 2.7 вышла в середине 2010 года с заявлением о расширенной поддержке этого выпуска. Python 3.0 был выпущен в 2008 году. После выпуска 2.x новых крупных выпусков не будет. 3.x находится в стадии активной разработки и уже несколько лет стабильно выпускается, включая версию 3.3 в 2012 году, 3.4 в 2014 году и 3.5 в 2015 году.
Если вы новичок в программировании или опытный разработчик, вам легко выучить и использовать Python 3. Python 3 представляет будущее языка, так как вся разработка остановилась на Python 2.x, за исключением безопасности и исправлений.
Содержание :
оператор печати против функции печати
В Python 3 оператор print был заменен функцией print () с ключевыми словами-аргументами для замены большей части специального синтаксиса старого оператора print.
Python 2 | Python 3 |
---|---|
>>> печать "Hello World" Привет, мир | >>> печать ("Привет, мир") Привет, мир |
>>> # печать новой строки >>> печать | >>> # печать новой строки, >>> # Использование скобок >>> печать () |
>>> # добавляем запятую в >>> # убрать перевод строки >>> распечатать "Нет новой строки", Нет новой строки | >>> # Ничего не зависит >>> # вместо новой строки >>> print ("Нет новой строки", end = "") Нет новой строки >>> |
>>> # печать в stderr >>> печать >> sys.stderr, "Ошибка" Traceback (последний вызов был последним): Файл "<stdin>", строка 1, в <module> NameError: имя 'sys' не определено | >>> # Определяет >>> # выходной буфер >>> print ("Ошибка", file = sys.stderr) >>> Traceback (последний вызов был последним): Файл "C: /Python34/test.py", строка 1, в <модуле> print («Ошибка», file = sys.stderr) NameError: name 'sys' не определено >>> |
>>> #sep указывает разделитель >>> # здесь ',' используется как разделитель >>> print ("Python", "JS", sep = ",") Python, JS | |
>>> # печатается как XYZ, там >>> # в сентябре ничего нет >>> print ("X", "Y", "Z", sep = "") XYZ | |
>>> # очистить буфер вывода >>> print ("Python", flush = True) питон |
Различия между функциями range и xrange
Python 2 | Python 3 |
---|---|
>>> диапазон (1, 10) [1, 2, 3, 4, 5, 6, 7, 8, 9] | >>> диапазон (1, 10) диапазон (1, 10) >>> |
>>> xrange (1, 10) xrange (1, 15) | >>> xrange (1, 10) Traceback (последний вызов был последним): Файл "<pyshell # 9>", строка 1, в <модуле> xrange (1, 10) NameError: name 'xrange' не определено |
>>> isinstance (xrange (1, 15), xrange) Правда >>> | >>> isinstance (диапазон (1, 15), диапазон) Правда >>> |
Поднятие и обработка исключений
Python 2 | Python 3 |
---|---|
>>> 3 <5.5 Правда >>> | >>> 3 <5.5 Правда >>> |
>>> [3, 5]> 'xyz' Ложь >>> | >>> [3, 5]> 'xyz' Traceback (последний вызов был последним): Файл "<pyshell # 14>", строка 1, в <модуле> [3, 5]> 'xyz' Ошибка типа: неупорядоченные типы: list ()> str () >>> |
>>> (3, 5)> 'xyz' Правда >>> | >>> (3, 5)> 'xyz' Traceback (последний вызов был последним): Файл "<pyshell # 15>", строка 1, в <модуле> (3, 5)> 'xyz' Ошибка типа: неупорядоченные типы: tuple ()> str () >>> |
>>> [3, 5]> (3, 5) Ложь >>> | >>> [3, 5]> (3, 5) Traceback (последний вызов был последним): Файл "<pyshell # 21>", строка 1, в <модуле> [3, 5]> (3, 5) Ошибка типа: неупорядоченные типы: list ()> tuple () >>> |
>>> 50 <[2, 'x'] <'xyz' <(2, 'x') Правда >>> | >>> 50 <[2, 'x'] <'xyz' <(2, 'x') Traceback (последний вызов был последним): Файл "<pyshell # 23>", строка 1, в <модуле> 50 <[2, 'x'] <'xyz' <(2, 'x') Ошибка типа: неупорядоченные типы: int () <list () >>> |
Сравнение неупорядоченных типов
Python 2 | Python 3 |
---|---|
>>> print "[2, 3]> 'xyz' =", [2, 3]> 'xyz' [2, 3]> 'xyz' = False >>> print "(2, 3)> 'xyz' =", (2, 3)> 'xyz' (2, 3)> 'xyz' = True >>> print "[2, 3]> (2, 3) =", [2, 3]> (2, 3) [2, 3]> (2, 3) = Ложь | print ("[1, 2]> 'foo' =", [1, 2]> 'foo') print ("(1, 2)> 'foo' =", (1, 2)> 'foo') print ("[1, 2]> (1, 2) =", [1, 2]> (1, 2)) Traceback (последний вызов был последним): Файл "C: /Python34/test.py", строка 1, в |
байты против строки
Python 2 | Python 3 |
---|---|
>>> a = "Питон" >>> лен (а) 6 >>> a [0] 'П' >>> | >>> a = "Питон" >>> лен (а) 6 >>> a [0] 'П' >>> |
>>> # Чтобы рассматривать строку как # последовательность байтов, # вам нужно разыграть: >>> a = bytes ("Python", "utf-8") >>> а b'Python» >>> a [0] 80 >>> | |
>>> #bytes (foo, 'utf-8') означает кодировать <em> foo </ em> >>> # в UTF-8. рассматривать результат как >>> # последовательность 8-разрядных целых чисел без знака. Вы можете >>> # Также конвертируем байты в строку, >>> # как следует >>> a = bytes ("Python", "utf-8") >>> b = str (a, "utf-8") >>> б 'Python' >>> |
Целочисленное деление
Python 2 | Python 3 |
---|---|
>>> импорт системы >>> печать (sys.version) 2.7.9 (по умолчанию, 2 апреля 2015 г., 15:33:21) [GCC 4.9.2] >>> выведите «6/3 =», 6/3 6/3 = 2 >>> выведите «6 // 3 =», 6 // 3 6 // 3 = 2 >>> выведите «6 / 3.0 =», 6 / 3.0 6 / 3,0 = 2,0 >>> выведите «6 // 3.0 =», 6 // 3.0 6 // 3.0 = 2.0 >>> | >>> импорт системы >>> печать (sys.version) 3.4.2 (v3.4.2: ab2c023a9432, 6 октября 2014, 22:15:05) [MSC v.1600 32 бит (Intel)] >>> >>> печать ("6/3 =", 6/3) 6/3 = 2,0 >>> print ("6 // 3 =", 6 // 3) 6 // 3 = 2 >>> распечатать ("6 / 3.0 =", 6 / 3.0) 6 / 3,0 = 2,0 >>> print ("6 // 3.0 =", 6 // 3.0) 6 // 3.0 = 2.0 >>> |
Unicode
В Python 2 есть ASCII-типы str (), отдельный unicode (), но нет байтового типа, а в Python 3.0 язык имеет тип str , содержащий символы Unicode,
Python 2 | Python 3 |
---|---|
>>> импорт системы >>> печать (sys.version) 2.7.9 (по умолчанию, 2 апреля 2015 г., 15:33:21) GCC 4.9.2] >>> тип печати (юникод ("Python Unicode")) <тип 'Юникод'> >>> | >>> импорт системы >>> печать (sys.version) 3.4.2 (v3.4.2: ab2c023a9432, 6 октября 2014, 22:15:05) MSC v.1600 32 бит (Intel)] >>> |
>>> тип печати (б "Питон") <тип 'str'> >>> | |
>>> печать "Python" + b "Юникод" Python Unicode >>> | >>> print ("Python", тип (b "Unicode")) Python <класс 'bytes'> >>> |
словарный метод
В Python 2
dict.iteritems (): возвращает итератор для пар словаря (ключ, значение).
В Python 3
dict.items (): Возвращает копию списка словаря пар (ключ, значение).
Python 2 | Python 3 |
---|---|
>>> x = {1: "красный", 2: "синий"} >>> печать (х) {1: «красный», 2: «синий»} >>> печать (x.items ()) dict_items ([(1, «красный»), (2, «синий»)]) >>> печать (x.iteritems ()) Traceback (последний вызов был последним): Файл "<stdin>", строка 1, в <module> AttributeError: у объекта 'dict' нет Атрибут «Итериитем» >>> печать ([я для я в x.iteritems ()]) [(1, «красный»), (2, «синий»)] >>> | >>> x = {1: "красный", 2: "синий"} >>> печать (х) {1: «красный», 2: «синий»} >>> распечатать (x.items) <элементы встроенного метода объекта dict на 0x7fe191a89748> >>> печать (x.items ()) dict_items ([(1, «красный»), (2, «синий»)]) >>> печать ([я для я в x.items ()]) [(1, «красный»), (2, «синий»)] >>> |
Для других методов словаря: dict.keys, dict.values и dict.items возвращают список в Python 2, но в Python 3 они возвращают объект представления.
>>> # В Python 2 dict.has_key () используется для проверки. >>> # есть ли диктат определенный ключ. >>> x = {1: "красный", 2: "синий"} >>> печать (x.has_key (1)) Правда >>> | >>> # Но этот метод был >>> # удалено в Python 3. >>> # Вместо, оператор >>> # Используется. >>> x = {1: "красный", 2: "синий"} >>> распечатать (a.has_key (1)) # Не запускайте его, если не хотите этого: Traceback (последний вызов был последним): Файл "<stdin>", строка 1, в <module> AttributeError: объект dict имеет нет атрибута 'has_key' >>> печать (1 в х) Правда >>> |
Ввод данных
Python 2:
raw_input ([prompt]) - если аргумент prompt присутствует, он записывается в стандартный вывод без завершающей строки. Затем функция читает строку из ввода, преобразует ее в строку (убирая завершающий перевод строки) и возвращает ее. Когда EOF читается, EOFError повышается.
Python 3:
input ([prompt]) - если аргумент prompt присутствует, он записывается в стандартный вывод без завершающего перевода строки. Затем функция читает строку из ввода, преобразует ее в строку (убирая завершающий перевод строки) и возвращает ее. Когда EOF читается, EOFError повышается.
python2 | python3 |
---|---|
>>> data_input2 = raw_input () | >>> data_input3 = input () |
Предыдущая: Python Home
Далее: Установка Python
Новый контент: Composer: менеджер зависимостей для PHP , R программирования