кодесурса
«Python

Питон 2 против 3

script1adsense2code
script1adsense3code

Сравнение между 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, 
  в 
    print ("[1, 2]> 'foo' =", 
	[1, 2]> 'foo')
Ошибка типа: неупорядоченные типы: 
list ()> str ()

байты против строки

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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code