TGINSIGHT CHAT
Python Academy
@python_academy
EducaciónPython Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Posts recientes
Pág. 79 de 85 · 1,014 posts
Важное про цифры и Юникод 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры. Полный список находится здесь. Это крайне важно знать, потому что эти символы влияют на такие функции, как int, unicode.isdecimal и даже re.match. Думаю, в один момент это знание сэкономит вам время на исправление "бага" с такими странными символами. Предупрежден — значит вооружен. #числа#юникод
Вычисление выражений Python Вы наверняка знакомы с eval, но знаете ли вы о literal_eval? Вряд ли. Для безопасного исполнения выражений, содержащих исключительно литералы, вы можете делать так, как показано на картинке выше. Между прочим, данная фича находится в языке уже очень давно. #tips#eval
Трюк с f-строками Думаю, про f-строки как метод форматирования все уже знают. Напоминаю, что появились они еще в Python 3.6. Но им добавили еще одну классную фичу в обновлении 3.8 — можно выводить имя переменной и сразу ее значение, добавив знак равно как показано на картинке. #строки
Hashtags
Библиотека для работы с итераторами Встроенный пакет itertools содержит сборник полезных итераторов, поговорим о нескольких из них: combinations — возвращает кортеж в отсортированном порядке без повторяемых элементов. chain — возвращает элементы из объекта, пока он не будет исчерпан, затем переходит к следующему, используется для обработки множества последовательностей как единой. permutations — возвращает все возможные перестановки. filterfalse — возвращает все элементы для которых функция вернула false. startmap — применяет функцию к каждому элементу последовательности распаковывая его. В самой библиотеке их намного больше, поэтому советую вам ознакомится с документацией. Ознакомиться с интерактивным примером можно тут. #itertools
Hashtags
Разница между == и is Многие разработчики не понимают разницу этих двух операторов сравнения. Из-за неправильного использования == и is в приложениях могут возникнуть странные ошибки. Оператор == проверяет равенство значений двух объектов. А оператор is проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти. Но Python в целях производительности кеширует малые числа и короткие строки, поэтому возможны некоторые казусы, как в примере выше. #тонкости
Hashtags
Оператор неравенства и Дядя Бэрри Вспомним немного историю: 1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python. На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе, дружелюбный дядя языка на всю жизнь. И этот Дядя Бэрри предложил заменить "противный" знак неравенства != на <>. Изменения обещали выпустить в последующих версиях, но его можно было протестировать и раньше времени. Для этого можно импортировать barry_as_FLUFL из пакета __future__. Результат можете посмотреть на картинке сверху. Это всё, конечно же, было первоапрельской шуткой, но оператор <> всё ещё доступен и является некой пасхалкой. #пасхалка
Hashtags
Подключаемся к серверу по ssh Пакет paramiko позволяет устанавливать соединение с удаленными машинами по протоколу SSH2 и производить там все те же операции, если бы вы подключались через, например, утилиту ssh на линуксе. Использовать модуль достаточно просто, пример основный методов на картинке выше. Кстати, интересный факт, Paramiko — это сочетание слов "параноик" и "друг" на языке эсперанто. Устанавливается пакет привычным образом через пакетный менеджер pip. А документацию можете изучить тут. #ssh
Hashtags
Простой, но мощный веб-фреймворк Самым популярным фреймворком для разработки серверной части на Python является Flask. К слову, он обгоняет даже Django по звездам на GitHub. Flask предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. А коммьюнити предоставляет множество расширений для фреймворка. Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу http://localhost:5000/ и посмотреть результат. #модули
Hashtags
Сортировка списков В Python есть два встроенных способа для сортировки списков — функция sorted() и метод list.sort(). Результат в обоих случаях одинаков, но всё же есть нюансы. Функция sorted() принимает на вход аргумент в виде списка, а возвращает уже новый, отсортированный список. При этом исходный список не изменяется. Метод sort() в свою очередь применяется к списку, изменяет его непосредственно и ничего не возвращает. #списки
Hashtags
Не используйте обработку исключений слишком часто Обработка исключений может защитить вашу программу от внезапных сбоев. Тем не менее все прекрасно знают, что подобные конструкции могут заметно снизить производительность скрипта. Не стоит злоупотреблять try-except конструкциями, так как в большинстве случаев можно справиться с задачей, применяя обычные условия. Используйте обработку исключений только в крайних случаях. На картинке мы привели пример двух случаев необоснованного использования обработки исключений, а также показали более правильную альтернативу. #совет#исключения
Hashtags
Сохранение документации функции при декорировании У декораторов существует ряд проблем, одна из которых заключается в том, что, после оборачивания функции в декоратор, на выходе мы не можем получить информацию атрибутов __name__ и __doc__, нужные для документации функции. Вместо значений данных атрибутов исходной функции мы будем получать значения функции обертки. Для решения этой проблемы можно воспользоваться декоратором functools.wraps, применяя его к обертке нашего декоратора. В результате имя и сигнатура функции, передаваемой в декоратор, будут копироваться в обертку. #декораторы#wraps
Hashtags
Разница между == и is Многие разработчики не понимают разницу этих двух операторов сравнения. Из-за неправильного использования == и is в приложениях могут возникнуть странные ошибки. Оператор == проверяет равенство значений двух объектов. А оператор is проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти. Но Python в целях производительности кеширует малые числа и короткие строки, поэтому возможны некоторые казусы, как в примере выше. #тонкости
Hashtags