Pythoner
7.22K subscribers
862 photos
28 videos
4 files
657 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
➡️pywebcopy поможет вам клонировать отдельные веб-страницы или даже целые сайты.

Функция save_webpage скачивает страницу по указанной ссылке, в аргументы также можно передать путь, куда сохранить результат.

А вот save_website дает возможность скачать целый вебсайт рекурсивно. Например, если сайт представляет из себя блог, то скрипт скачет все статьи, которые есть на сайте.

🔎Но здесь надо быть аккуратнее, подобная рекурсивная загрузка отправит много запросов к серверу и может сильно нагрузить его, если на сайте много страниц.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥1
😁12🤣8👍32
➡️Отличие статических методов от обычных в том, что они привязаны к классу, а не объекту. То есть они могут быть вызваны напрямую у класса.

Статический метод не принимает ни объект (self), ни класс (cls) в аргументах. То есть такие методы не могут модифицировать ни объект, ни сам класс.

➡️Реализовать статический метод можно двумя способами. Один из них — присвоить классу новый метод, напрямую передав изначальный метод в функцию staticmethod.

Но так делать не принято, поэтому чаще всего staticmethod используют в качестве декоратора при написании методов прямо в классе.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
➡️Python поддерживает простой механизм работы с перечислениями, которые ещё называют enum. Подобные перечисления удобно использовать для хранения списков констант.

Из документации можно узнать о том, что Enum — это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность.

➡️Также можно задать геттер через @ property, который используют для получения перечислений в других форматах. В примере реализовано перечисление цветов в RGB, а через геттер их можно получить в формате hex.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥42
🔎Сокеты являются одним из основных понятий в компьютерных сетях. Они представляют собой программный интерфейс, который позволяет приложениям обмениваться данными через сеть.

➡️Сокеты - это точка соединения между двумя программами, которые обмениваются данными через сеть. Один сокет может отправлять данные, а другой может принимать их. Сокеты работают на разных уровнях сетевой модели, таких как уровень транспорта (например, TCP или UDP) и уровень сети (например, IPv4 или IPv6).

➡️Работа с сокетами

Для работы с сокетами в приложении необходимо выполнить несколько шагов. Во-первых, нужно создать сокет, указав его тип (например, TCP или UDP) и семейство адресов (например, IPv4 или IPv6). Затем необходимо привязать сокет к определенному порту или адресу. После этого можно начать передачу данных через сокет, используя методы отправки и приема данных.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥32
➡️На основе итерируемых объектов можно удобно и без циклов строить списки в одну строчку — такой синтаксис называется списковыми включениями.

Сейчас подробнее разберем именно списки, но по такому же принципу можно создавать и словари.

➡️В квадратных скобках вы пишите самую обычную конструкцию цикла for, но само выражение ставите перед ключевым словом for. Также можно добавлять условия в конце записи.

➡️Как правило, списковые включения работают заметно быстрее, чем циклы. Однако, злоупотреблять этим не рекомендуется, так как это зачастую снижает читаемость кода.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥1
➡️Оператор in в Python используется для проверки вхождения элемента в последовательность. Эта последовательность может быть строкой, списком, кортежем или даже словарем. Синтаксис оператора in выглядит следующим образом: элемент in последовательность. Оператор in возвращает логическое значение True, если элемент присутствует в последовательности, и False, если элемент отсутствует.

➡️Например, давайте рассмотрим следующий пример:

fruits = ['apple', 'banana', 'orange']
if 'apple' in fruits:
print("Я люблю яблоки!")

⬆️В этом примере мы создали список фруктов и проверяем, присутствует ли в нем элемент 'apple'. Если элемент 'apple' присутствует, то выводится сообщение "Я люблю яблоки!".

text = "Python is a powerful programming language"
if "Python" in text:
print("Python найден!")


⬆️В этом примере мы проверяем, содержит ли строка "Python is a powerful programming language" подстроку "Python". Если подстрока "Python" присутствует, то выводится сообщение "Python найден!".

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥2
➡️Werkzeug предлагает множество полезных функций для разработки веб-приложений. Одной из главных особенностей этой библиотеки является ее простота использования. Werkzeug предоставляет простой API для обработки HTTP-запросов и ответов, а также для работы с URL-адресами. Она также поддерживает различные протоколы, такие как WSGI (Web Server Gateway Interface), что делает ее идеальным выбором для создания веб-приложений в Python.

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

➡️Преимущества:

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

Еще одним преимуществом Werkzeug является его интеграция с популярными фреймворками веб-разработки, такими как Flask и Django.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
➡️Функция ord() возвращает целое число, представляющее символ Юникода. Эта функция принимает строку единичной длины в качестве аргумента и возвращает эквивалентность переданного аргумента в Юникоде.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥1
➡️У списка (и только у него) есть особые методы .sort() и .reverse() которые делают тоже самое, что соответствующие функции sorted() и reversed(), но при этом:

💬Меняют сам исходный список, а не генерируют новый.

💬Возвращают None, а не новый список.

💬Поддерживают те же дополнительные аргументы.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
➡️Допустим данные нужно отсортировать сначала по столбцу А по возрастанию, затем по столбцу B по убыванию, и наконец по столбцу C снова по возрастанию.

➡️Если данные в столбце B числовые, то при помощи подходящей функции в key можно поменять знак у элементов B, что приведёт к необходимому результату.
А если все данные текстовые? Тут есть такая возможность.
Дело в том, что сортировка sort в Python устойчивая (начиная с Python 2.2), то есть она не меняет порядок «одинаковых» элементов.

Поэтому можно просто отсортировать три раза по разным ключам.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥2
➡️Чтобы избавится от «магических констант», особенно в случае, когда один и тот же срез надо применять многократно, можно задать константы с именованными срезами с пользованием специальной функции slice()()

Примечание: Nonе соответствует опущенному значению по-умолчанию. То есть [:2] становится slice(None, 2), а [1::2] становится slice(1, None, 2).

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥1
➡️В python есть классный модуль itertools для создания собственных итераторов. Функции данного модуля довольно эффективны в работе, поэтому их часто используют в реальных проектах.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥3
➡️Со встроенным модулем shutil многие уже, вероятно, знакомы, но его обычно используют в контексте задач копирования, переноса файлов и папок.

🔎Но с помощью shutil мы можем даже получить информацию о памяти на жестком диске компьютера. Метод disk_usage возвращает количество всей, занятой и свободной памяти.

Пример выведет:
Total : 245.11 GB
Used : 128.38 GB
Free : 99.04 GB


⬆️Так как все три значения возвращаются в байтах, в примере мы их перевели и вывели в гигабайты для лучшей наглядности.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥43
✈️WebApp (или веб-приложение) в Telegram — это приложение, которое запускается прямо внутри мессенджера. Это делает его доступным в любое время и в любом месте, где у вас есть доступ к Telegram.

🔎Преимущества WebApp в Telegram:

➡️Удобство и доступность

WebApp работает прямо в Telegram, поэтому вам не нужно устанавливать дополнительные приложения.

➡️Мгновенное обновление

Веб-приложения всегда обновлены до последней версии. Вам не нужно беспокоиться об установке обновлений — разработчики делают это за вас!

➡️Кроссплатформенность

WebApp работает одинаково хорошо на всех устройствах: будь то iOS, Android или десктопная версия Telegram. Это значит, что вы получите единый опыт использования независимо от вашего устройства.

➡️Богатый функционал

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

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥2🤔2
😁25🤣11👍2🔥2😐1
➡️Чтобы вычислить размер какого-либо объекта, можно воспользоваться функцией sys.getsizeof(object[, default]). Поскольку Python написан в полном соответствии с парадигмой ООП, таким объектом может быть все что угодно.

Однако, следует помнить, что хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.

Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError.

➡️Функция getsizeof вызывает метод __sizeof__ объекта и добавляет дополнительные служебные данные сборщика мусора, если конечно объект управляется сборщиком мусора.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥51
➡️Множеству инструментов командной строки или скриптов для работы требуется имя пользователя и пароль. Если вам придётся писать подобную программу – вы, возможно, сочтёте полезным модуль getpass.

Этот очень простой пакет позволяет запрашивать у пользователя его пароль, а также получать имя пользователя, извлекая имя, под которым он вошёл в систему.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍42
➡️Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.

🔎Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.

➡️По сути, vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👍1