TGTGInsighttelegram intelligenceLIVE / telegram public index
Назад кон каналите
Python Заметки avatar

TGINSIGHT CHAT

Python Заметки

@pythonotes

Education

Интересные заметки и обучающие материалы по Python Контакт: @paulwinex ⚠️ Рекламу на канале не делаю!⚠️ Хештеги для поиска: #tricks #libs #pep #basic #regex #qt #django #2to3 #source #offtop

Претплатници2,220Тековни претплатници
Следени објави384Број на индексирани објави
Неодамнешен опфат1,895Збир на неодамнешни прегледи
Неодамнешни објави

Неодамнешни објави

Ознака: #2to3 · 16 објави

当前筛选 #2to3清除筛选

Објавено 17 јан.

В Python2 был необычный способ записать текст в файл с помощью print >>> print >> open(path, 'w'), 'some text' Те, кто часто пишет на Python, заметят как не "питонично" выглядит такая запись. Просто какой-то разрыв шаблонов. Хорошо, что в Python3 этот синтаксис более неактуален. Теперь запись в файл с помощью print выглядит куда более логично: >>> print('some text', file=open(path, 'w')) Хотя, я пока не встречал никого кто пишет что-то в файл с помощью print ))) #2to3

431 views

Hashtags

Објавено 5 јан.

Одно из незаметных но приятных изменений в Python3, которое не часто упоминается, это проблема Leak of variables. Относится она к конструкции List Comprehensions, он же генератор списков. Лучше всего данный фикс показать на примере. Python2 x = 'some_value' my_list = [x for x in range(10)] print x >>> 9 Python3 x = 'some_value' my_list = [x for x in range(10)] print(x) >>> some_value Переменная "х" в генераторе списка не затирает глобальную переменную с таким же именем. То есть внутри генератора действуют локальные переменные. Но стоит помнить, что к обычным циклам это не относится. Python3 x = 'some_value' for x in range(10): pass print(x) >>>9 #2to3

439 views

Hashtags

Објавено 4 јан.

Поздно писать код, совместимый с Python2 и Python3 одновременно. Если вы матёрый программист, то, возможно, использовали библиотеку six для создания совместимого кода. Или использовали различные модули автоматизации для преобразования кода из Python2 в совместимый для Python2 и Python3. Например sixer или python-future. Но это время прошло! Теперь пишем только на 3м Python. Совместимость с версией 2 скоро вовсе не потребуется (кроме отдельных тяжелых случаев поддержки legacy систем, но я надеюсь таких у вас нет или совсем мало) Скорее всего, у многих появляется вопрос, а что делать с кодом который написан под Python2? Садиться и переписывать? Или хотя бы сделать совместимым с Python3? Всё зависит от конкретной ситуации. Убедитесь что ваша инфраструктура готова под Python3 прежде чем начать. Скорее всего пора переписывать и не оглядываться назад! Но не всё так безнадёжно, в стандартной поставке Python уже давно есть готовый инструмент для автоматизации процесса. Это библиотека lib2to3 и прилагаемый скрипт 2to3.py С чего начать? 1. Документация Прежде всего почитайте документацию https://docs.python.org/3.8/library/2to3.html А также встроенная справка для Windows python C:\python37\Tools\scripts\2to3.py --help для Linux 2to3-3.7 --help 2to3-2.7 --help (имена зависят от установленных версий Python) 2. Тест Прежде чем приступать к ожесточенным конвертациям, обязательно протестируйте весь процесс! Например, чтобы просто посмотреть какие будут изменения в скрипте, запустите команду с флагом --list-fixes 2to3 --list-fixes my_script.py 3. Полезные советы Нашел развёрнутую статью про тему 2to3, советую почитать. http://python3porting.com/2to3.html 3. Конвертация Не забываем что в качестве источника для конвертации можно указать директорию. И ВСЕГДА указывайте путь сохранения результата. Пример конвертации пакета 2to3 --output-dir=./py3/package_name -W -n ./package_name #2to3

488 views

Hashtags

Објавено 3 јан.

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

537 views

Hashtags

12
ПретходнаСтраница 2 од 2Следна