Что нового в Python? Руководство по Python 3 и выше

Обновление с одной версии языка программирования Python до другой может быть настоящей проблемой. Еще труднее, если вы пропустили несколько промежуточных версий. Какие самые важные различия? Как они соотносятся с версией, с которой вы знакомы?

Сегодня мы ответим на все эти вопросы от Python 3.0 до Python 3.8. Мы расскажем вам обо всех самых значительных изменениях в сравнении с предыдущими версиями Python и покажем вам примеры кода, которые помогут вам реализовать собственный современный код Python. В конце разделов вы получите загружаемую шпаргалку, которую вы сможете взять с собой, продолжая свой путь к программному обеспечению Python.

Сегодня мы рассмотрим:

  • Python 2.x против Python 3.0
  • Шпаргалка по Python 3
  • Python 3.7 против 3.8
  • Шпаргалка по Python 3.8
  • Что изучать дальше

Пропустите кривую обучения и быстро освоите Python 3.0

Используйте интерактивные примеры и целевые уроки, чтобы ускорить переход на Python 3.

Освоение искусства программирования на Python 3

Python 2.x против Python 3.0

Python 3 внес много изменений, чтобы упростить синтаксис Python и добавить новые функции. Каждое из этих изменений может показаться незначительным, но вместе они могут серьезно повлиять на работу вашей программы.

В целом Python 3.x имеет:

  • Более чистый синтаксис
  • Более надежные математические и логические операторы
  • Более универсальное поведение String
  • Более строгие правила для типов данных
  • Более современная поддержка.

Далее мы рассмотрим важные синтаксические изменения, которые помогут вам адаптироваться к Python 3.

Print ()

В Python 3.0 поведение печати изменилось с оператора на функцию Python. Теперь поле печати должно быть заключено в круглые скобки, как параметр для правильной работы.

  print "hello, world" # Python 2print ("hello, world")  # Python 3  

Переход с инструкции print на функцию print также затронул некоторые общие способы печати, такие как разрывы строк и печать в файл.

Во всех версиях Python каждый вызов печати заканчивается разрывом строки. Однако иногда вам нужно печатать в той же строке..

В Python 2 вы могли печатать в той же строке с запятой:

 # Python 2 печать 5, печать 10 

В Python 3 вместо этого вы используете аргумент ключевого слова end после первой строки.

 # Python 3print (5  , end = "") print (10) 

Наконец , Python 3 сделал синтаксис для печати в файл более читаемым.

  print >> open ('test.txt', 'w'), "  Печать в файл "# Python 2print (" Печать в файл ", file = open ('test.txt', 'w')) # Python 3  

В версии Python 3 больше нет с символами `>>` в пользу более интуитивно понятного `file =`. Он также изменяет порядок аргументов в соответствии с бизнес-логикой операции, как мы бы сказали «печать ___ в файл ___» поверх »на файл ___, печать ____».

Строки в Unicode и ASCII

В Python 2 все строки по умолчанию сохраняются как ASCII. Их можно сохранить как Unicode, используя u перед строкой.

  #Python 2default = "Эта строка - ASCII" unicode =  u «Эта строка - Unicode»  

В Python 3 все строки по умолчанию сохраняются в Unicode. Юникод предпочтительнее ASCII во всем мире, потому что Юникод поддерживает переменную битовую кодировку и другие наборы символов.

  # Python 3unicode = "Эта строка является Unicode по умолчанию"  

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

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

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

Теперь в Python 3 операция динамически меняет типы данных на float, когда результатом является десятичное значение. Каждое частное теперь будет отражать истинное математическое значение без округления.. Вам больше не нужно помнить тонкости операции, и вместо этого вы можете сосредоточиться на своем проекте.

Например:

  • Python2
  • Python2
  • Python2
  • путь> Python3
  • Python3
 # Python 2print 7/5print 7/-5 

Диапазон против xrange

Функция Python 3 range () заменяет Pyth on2 xrange () . Новая, более чистая функция дает тот же результат.

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

  • Python2
  • Python2
  • Python2
  • Python3
  • Python3
 для x в xrange (1, 5): print (x), 

Обработка ошибок

Python 3 теперь требует as при реализации обработки ошибок. Это изменение отделяет синтаксис обработки ошибок от синтаксиса параметров функции и упрощает чтение кода обработки ошибок с первого взгляда. Многие разработчики, переходящие с Python 2 на Python 3.0, упускают из виду это небольшое, но важное изменение.

  # Python 2try: try_to_check_error except NameError, err: print err, 'Error  Вызвано ' 

  # Python 3try: try_to_check_error, кроме NameError as err: # new `as` keyword print (err,' Error Caused ')  

Совместимость исходного кода и библиотеки

Python 2. x может быть совместим с Python 3, но часто приводит к неожиданному поведению. Однако код Python 3 не может быть запущен с Python 2.

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

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

Например, Django требует современных библиотек для Работа. В результате Django больше не поддерживает версии Python 2.x с обновлениями. Django 1.11 был последней версией, поддерживающей Python 2.7. Теперь Django рекомендует вам загрузить новейшую версию языка программирования Python, чтобы получить лучшие возможности и возможности веб-разработки.

Шпаргалка по Python 3

Сохранить изучение Python 3.0

Получите инструменты, необходимые для быстрого изучения Python 3. Текстовые курсы Educative легко просматриваются и нацелены на навыки, которые вам больше всего нужны для достижения успеха в ваших личных и профессиональных проектах.

Освоение искусства программирования на Python 3

Python 3.7 против 3.8

Самой последней версией Python является версия 3.8. Независимо от того, используете ли вы Python 2 или более раннюю версию Python 3, важно понимать новейшие функции, доступные в этом мощном обновлении.

Ниже мы рассмотрим самые большие изменения в Python. 3.7–3.8 с примерами кода и пояснениями, которые помогут вам использовать самую современную версию Python, независимо от того, с какой предыдущей версией вы работали.

Выражения присваивания

Выражения присваивания — это самая большая функция, добавленная в Python 3.8. С помощью этих выражений вы можете присваивать и возвращать значение переменной всего в одной строке. Выражения присваивания записываются с помощью нового оператора моржа, (: =) .

Вот пример:

  • Python3.x
  • Python3.x
  • Python3. x
  • Python3.8
  • Python3 .8
 var = 'False' print var # False 

Вместо использования двух строк мы используем оператор моржа для установки и печати значения var в той же строке. Этот тип структуры имеет большой потенциал в больших решениях с несколькими переменными, особенно при использовании в качестве временной переменной в цикле.

Посмотрите, насколько мы можем упростить эту более сложную программу:

  • Python3.x
  • Python3.x
  • Python3.x
  • Python3.8
  • Python3. 8
 shoppingList = list () while True: current = input ("Следующий элемент:") if current ==  "конец": прервать shoppingList.append (текущий) 

Здесь мы используем оператор моржа для создания временная переменная current , которая назначается как строка ввода пользователя. Он также оценивается при назначении, чтобы убедиться, что он соответствует «концу». Программа повторяет цикл и добавляет новый элемент в конец списка.

Эта программа может создать весь управляемый вводом список всего с 3 строками кода!

Отладка f-строки

Относительно новые «f-строки» также получили обновление в Python 3.8. Напоминаем, что f-строки — это упрощенный способ печати операторов с оцененными переменными без ручного объединения строк. Представленные в Python 3.6, они стали одной из самых популярных частей современного Python. Фактически, они считаются основной причиной того, что так много библиотек Python совместимы только с версиями после 3.6.

F-строки — это форматированный строковый литерал, распознаваемый по f перед открывающей кавычкой строки. Оценивается любое имя переменной в фигурных скобках, и его значение плавно добавляется в строку..

Взгляните на пример:

 size = "small" print (f "Это собака {size}") 

Это позволяет легко создавать динамические строки без загроможденного синтаксиса.

Начиная с Python 3.8, вы можете теперь добавьте = после переменной в фигурных скобках, чтобы напечатать и выражение, и переменную.

 size = "small" print (f "{size =}") 

й>

Это наиболее полезно для отладки, поскольку позволяет увидеть, как программа достигает этих значений.

В версиях до 3.8 вам придется повторить выражение перед фигурными скобками, чтобы получить тот же эффект:

 size = "small" print (f "size = {size}") 

Вы также можете использовать выражения присваивания в f-строках для создания компактных и динамических строк:

  print (f "Площадь квадрата равна {(area: = length **  2)} периметр {(perimeter: = length * 4)} ")  

Positional- только аргументы

В Python 3.8 теперь вы можете определять только позиционные аргументы для своих собственных функций. Только позиционные аргументы могут быть назначены только по их положению в аргументе функции и вызовут ошибку, если вы попытаетесь назначить их с помощью ключевых слов. Вы используете символ / в аргументах функции, чтобы обозначить, что все предыдущие аргументы должны быть только позиционными.

Например:

 >>> def ParkingSpace (name,/, space = "Guest Parking"): ... return f "{name}: {space}" ... >>> ParkingSpace ("Ryan") # `Райан: Гостевая парковка '>>> ParkingSpace (" Jodie ", space =" 14G ") #' Jodie: 14G '>>> ParkingSpace (name =" Joe ", space =  "9B") Traceback (последний вызов последним): файл "", строка 1, в  TypeError: ParkingSpace () получил некоторые позиционные аргументы, переданные как аргументы ключевого слова: 'name'  

В строке 1 мы указываем, что name должно передаваться позиционно (после /), а пробел должен быть передан вместе с его ключевым словом. В строке 4 мы успешно вызываем ParkingSpace и позиционно назначаем значение name со значением по умолчанию для space . В строке 7 мы снова успешно вызываем ParkingSpace , но на этот раз мы присваиваем новое значение space с его ключевым словом. Наконец, в строке 10 мы вызываем ParkingSpace в третий раз, но присваиваем name его ключевому слову, а не позиционному, и получаем ошибку.

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

Используйте только позиционные аргументы, когда:

  • Заголовок аргумента произвольно, например конструктор int, int (x = "1") не дает больше информации, чем просто int ("1") .
  • Заголовок аргумента также используется встроенной функцией, например self . Только позиционные аргументы устраняют путаницу в том, что передается.
  • Вы переносите код с C или сделаете это в будущем. C не принимает аргументы ключевого слова, поэтому использование только позиционных аргументов упростит перенос.

Синтаксические предупреждения

Python 3.8 добавляет два новых предупреждения в список Python SyntaxWarnings . Первое — это предупреждение, в котором будет указано, когда выбрать вместо == . Они немного отличаются, и их легко смешать. Последний проверяет одинаковые значения , а is возвращает True, только это те же самые объекты .

 >>> # Python 3.8 >>> version = "3.8" >>> version is "3.8" : 1: SyntaxWarning: "is" с  буквальный.  Вы имели в виду "=="? # Возвращает False >>> version == "3.8" # возвращает True  

Другое предупреждение — это исправленное SyntaxWarning, когда вы пропустить запятую в списке. В предыдущих версиях пропущенные запятые в списке кортежей приводили к ошибке, в которой говорилось, что «кортежи не могут быть вызваны». Это сбивало с толку пользователей Python, поскольку в большинстве случаев у них просто отсутствовала запятая.

Теперь Python 3.8 правильно определяет ошибку:

  >>> [... (1, 3) ... (2, 4) ... ] : 2: SyntaxWarning: объект 'кортеж' не вызывается;  возможно вы пропустили запятую?  Traceback (последний вызов последним): файл «», строка 2, в  TypeError: объект 'tuple' не вызывается  

Шпаргалка по Python 3.8

Что нужно узнать дальше

Вы только что узнали обо всех наиболее важных обновлениях Python 3 и 3.8. Если какое-либо из этих изменений кажется привлекательным, я рекомендую вам обновить его сейчас и начать реализацию этих новых функций. Важно быть современным разработчиком Python.

Даже если вас не интересует какая-либо конкретная функция, Python с каждым обновлением становится быстрее и требует меньше памяти. Если вы внесете изменения сейчас и начнете практиковать новый синтаксис, вы сможете продемонстрировать свои современные навыки интервьюеру!

Чтобы помочь вам преодолеть кривую обучения с Python 3 , Educative создал курс для разработчиков Python, желающих внести изменения. Освоение искусства программирования на Python 3 содержит множество практических примеров и беглых текстовых объяснений, которые сделают переход к новейшей версии быстрым и безболезненным.

Удачного обучения!

Продолжить чтение о Python

  • Повысьте свои навыки Python с эти 6 проблем
  • Часто задаваемые вопросы о Python: быстрые ответы на распространенные вопросы о Python
  • Учебник по динамическому программированию: создание эффективных программ на Python
Оцените статью
nanomode.ru
Добавить комментарий