TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки
Python Заметки avatar

TGINSIGHT POST

Post #5

@pythonotes

Python Заметки

Прегледи537Број на прегледи
Објавено3 јан.03.01.2020 г., 21:15
Содржина

Содржина на објавата

Если вы еще не начали переходить на 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