Поиск по сайту:
Когда нам платят за благородный поступок, его у нас отнимают (Н. Шамфор).

Что нового в Python 3

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (4 оценок, среднее: 5,00 из 5)
Загрузка...
03.07.2017
Что нового в Python 3

Модуль __future__

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

Например, если мы хотим, поведение деления целого числа Python 3.x в Python 2, добавьте следующий оператор импорта.

from __future__ import division

 

Функция печати

Наиболее заметные и наиболее широко известные изменения в Python 3, это использование функции print. Использование круглых скобок () с функцией печати является обязательным. Она была необязательной в Python 2.

print "Hello World" #приемлемо в Python 2
print ("Hello World") # в Python 3, после печати должны последовать скобки ()

 

Функция print() вставляет новую строку в конце, по умолчанию. В Python 2, она может отсутствовать, поставив ‘,’ в конце. В Python 3, “end =’ ‘” присоединяет пространство вместо символа новой строки.

print x,           # Точка с запятой подавляет строки в Python 2
print(x, end=" ")  # Добавляет пробел вместо символа новой строки в Python 3

 

Чтение ввода с клавиатуры

Python 2 имеет две версии входных функций, input() и raw_input(). Функция input() обрабатывает принятые данные в виде строки, если она заключена в кавычках ” или “”, в противном случае данные рассматриваются как число.

В Python 3, функция raw_input() является устаревшей. Кроме того, полученные данные всегда рассматриваются как строки.

В Python 2

>>> x = input('что-то:') 
что-то:10 # введенных данных обрабатывается как число
>>> x
10

>>> x = input('что-то:')
что-то:'10' #введенные данные обрабатываются как строки
>>> x
'10'

>>> x = raw_input("что-то:")
что-то:10 #введенные данные обрабатываются как строки даже без ''
>>> x
'10'

>>> x = raw_input("что-то:")
что-то:'10' #введенные данные обрабатываются как строки в том числе ''
>>> x
"'10'"

В Python 3

>>> x = input("что-то:")
что-то:10
>>> x
'10'

>>> x = input("что-то:")
something:'10' #введенные данные обрабатываются как строки с или без ''
>>> x
"'10'"

>>> x = raw_input("что-то:") # приведет к NameError
Traceback (most recent call last):
   File "<pyshell#3>", line 1, in 
  <module>
   x = raw_input("something:")
NameError: имя 'raw_input' не определено

 

Целочисленное деление

В Python 2, результат деления двух целых чисел округляются до ближайшего целого числа. В результате, 3/2 будет показывать 1. Для того, чтобы получить деление с плавающей точкой, числитель или знаменатель должен быть явно использовать в качестве плавающей точки. Следовательно, либо 3.0/2 или 3/2.0 или 3.0/2.0 приведет к 1,5

Python 3 оценивает 3/2, как 1.5 по умолчанию, который является более понятным для начинающих программистов.

Представление Unicode

Python 2 требует пометить строку, если вы хотите сохранить его как Unicode.

Python 3 хранит строки как Unicode, по умолчанию. У нас есть строка Unicode (utf-8), и 2 байтных класса: байты и массивы байт.

Функция xrange() удалена

В Python 2 range() возвращает список, а xrange() возвращает объект, который будет только генерировать элементы в диапазоне, когда это необходимо, сохраняя память.

В Python 3 функция range() будет удалена, а xrange () был переименована в range(). Кроме того, в range() объект поддерживает нарезку в Python 3.2 и более поздних версий.

raise exceprion

Python 2 принимает оба обозначения, синтаксис «старый» и «новый»; Python 3 вызывает SyntaxError, если не заключить аргумент исключения в скобках.

raise IOError, "file error" #This is accepted in Python 2
raise IOError("file error") #This is also accepted in Python 2
raise IOError, "file error" #syntax error is raised in Python 3
raise IOError("file error") #this is the recommended syntax in Python 3

 

Аргументы в Exceptions

В Python 3, аргументы исключения должны быть объявлены ключевым словом ‘as’.

except Myerror, err: # В Python2
except Myerror as err: # В Python 3

 

Функция next() и метод .next()

В Python 2, next() в качестве метода объекта генератора, не допускается. В Python 2, функция next(), принята для генерации перебора объекта. В Python 3, однако, next(0) в качестве способа генератора прекращается и вызывает AttributeError.

gen = (letter for letter in 'Hello World') # создает генератор объекта
next(my_generator) #допускается в Python 2 и в Python 3
my_generator.next() #допускается в Python 2. вызывает AttributeError в Python 3

 

Утилиты 2to3

Наряду с интерпретатором Python 3, сценарий 2to3.py обычно устанавливается в папке инструментов/сценариев. Он читает исходный код Python 2.x и применяет ряд фиксаторов, чтобы превратить его в действующий код Python 3.x.

Вот пример кода на Python 2 (area.py):

def area(x,y = 3.14): 
   a = y*x*x
   print a
   return a

a = area(10)
print "area",a

Для преобразования в Python версии 3:

$2to3 -w area.py

Преобразованный код :

def area(x,y = 3.14): # formal parameters
   a = y*x*x
   print (a)
   return a

a = area(10)
print("area",a)

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

Теперь редакторы в курсе.