Python Заметки
2.31K subscribers
58 photos
2 videos
2 files
212 links
Интересные заметки и обучающие материалы по Python

Контакт: @paulwinex

⚠️ Рекламу на канале не делаю!⚠️

Хештеги для поиска:
#tricks
#libs
#pep
#basic
#regex
#qt
#django
#2to3
#source
#offtop
Download Telegram
Channel created
Сегодня, 01.01.2020, официально завершена поддержка Python2. Старый друг отправляется на пенсию...
Если вы еще не начали переходить на Python3 то сейчас самое время!
Различий очень много. Как внутренние архитектурные решения, невидимые рядовому программисту, так и явные изменения, которые приходится использовать каждый день.

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

🔸Unicode по умолчанию
Для тех, кто пишет на Python2, всегда была актуальная проблема использования любых символов вне ASCII таблицы. Это относилось как к строкам в данных, так и просто комментариям по коду.
В Python3 по умолчанию строки это UNICODE, кодировка по умолчанию UTF-8. Теперь можно где угодно в строках использовать символы из кириллицы, таблицы Unicode, иероглифы, смайлы и эмодзи.
Конечно же это не относится к именам переменных и файлов! Только строки и коменты.

🔸Функция print()
Не смотря на то, что теперь приходится писать лишние скобочки, мы получили серьезный апгрейд такой простой, но полезной функции. Если вкратце, то print "объединился" с sys.stdout. Как это работает?

Как не переносить курсор на новую строку после печати?
PY2:
print text,
PY3:
print(text, end='')


Логично предположить что вместо пустой строки можно подставить любые символы.

Форсировать вывод в stdout во время блокирующей операции в консольном приложении.
PY2:
import sys
print text # или sys.stdout.write(text)
sys.stdout.flush()
PY3:
print(text, flush=True)


Кроме того, с помощью аргумента file можно печатать в файл или другой подходящий интерфейс.

🔸Оператор деления
Теперь деление целых чисел не обязательно в результате будет иметь целое число. То есть, если числа int не делятся без остатка то результатом будет float

Как разделить два int и получить float?
PY2:
12/5
>>> 2 # ужасный результат!
12/float(5) # приходится делать так
>>> 2.4
PY3:
12/5
>>> 2.4


Между тем, чтобы работало как раньше, то есть деление без остатка, просто нужно использовать другой оператор:
12//5
>>> 2

🔸Относительный импорт
В Python3 изменили принципы относительного импорта. Теперь стало проще и более предсказуемо. Но об этом лучше подробней и отдельно.

Все перечисленные выше фишки были доступны и в Python2 как бекпорт. То есть можно было активировать этот функционал через модуль __future__. Но когда оно по умолчанию, это сильно удобней)))

🔸 Асинхронное программирование
Теперь в Python3 удобно писать асинхронный код с помощью библиотеки asyncio и аналогичных.

🔸 F-String
Да, в Python добавился новый способ форматирования строки (если не ошибаюсь, уже 5й), но он офигенный!
PY2:
value = 123
string = "Value = {}".format(value)
PY3:
value = 123
string = f"Value = {value}"

🔸Упорядоченный словарь
Нет, я не про OrderedDict, я про обычный dict. Теперь порядок ключей сохраняется! В каком порядке добавляли, в таком порядке они и итерируются. Мелочь, но приятно.

Это далеко не всё, но для начала достаточно 😉


#2to3