Pro Python
1.29K subscribers
85 photos
20 files
102 links
Канал создан, чтобы заинтересовать вас языками программирования.

@ - связь, реклама
Download Telegram
Основные типы HTTP запросов

HTTP (Hypertext Transfer Protocol) запросы - это основа взаимодействия между клиентом (обычно браузером) и сервером в веб-приложениях.

GET - Запрос данных с сервера. Используется для получения информации, но не для изменения состояния ресурса. Данные передаются в URL. Этот метод является безопасным и идемпотентным, что означает, что повторный запрос не изменит состояние сервера.

POST - Отправка данных на сервер для создания или обновления ресурса. Данные передаются в теле запроса. Обычно используется для отправки формы, загрузки файла или других данных для обработки сервером. Этот метод не является идемпотентным.

PUT - Замена текущего ресурса данными, переданными в запросе. Полностью заменяет целевой ресурс на сервере данными, предоставленными в теле запроса. Идемпотентен, что означает, что повторный запрос имеет тот же эффект, что и первый.

DELETE - Удаление ресурса на сервере. Удаляет указанный ресурс, и повторный запрос на удаление того же ресурса будет безопасным, так как ресурс уже удален. Идемпотентен.

PATCH - Частичное обновление ресурса. Позволяет изменить некоторые поля ресурса без замены всего объекта. Используется для обновления частичной информации и является идемпотентным.

HEAD - Запрос только заголовков ресурса. Возвращает метаданные без тела ответа. Используется для проверки существования ресурса или получения метаданных, таких как длина контента.

OPTIONS - Запрос доступных методов для ресурса. Возвращает методы HTTP, которые поддерживает сервер для указанного ресурса. Используется для проверки возможностей сервера и определения поддерживаемых операций.

CONNECT - Устанавливает туннель к серверу, часто используется для прокси-серверов. Обычно применяется для создания туннеля SSL/TLS через незащищенные прокси-серверы.

TRACE - Эхо-запрос, который возвращает полученные сервером данные. Используется для диагностики и тестирования, чтобы проверить, какие данные достигают сервера. Этот метод не является безопасным и может быть отключен на сервере по соображениям безопасности.

LINK - Создание связи между двумя ресурсами. Менее распространенный метод, используется для связывания одного ресурса с другим.

UNLINK - Разрыв связи между двумя ресурсами. Противоположность метода LINK, используется для разрыва связи между ресурсами.

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Генератор

Генераторы используются для создания итераторов с помощью функции yield. Генераторы позволяют получать значения по одному, сохраняя состояние между вызовами, что делает их очень эффективными для обработки больших наборов данных или потоков данных.

Генераторы вычисляют значения "на лету" и не загружают их в память полностью.
Генератор сохраняет свое состояние между вызовами next(), что позволяет ему продолжить выполнение с того места, где он был прерван.
Генераторы можно итерировать только один раз. После этого они будут истощены.

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Разница между абстрактными классами и интерфейсами ООП

Интерфейсы и абстрактные классы являются важными концепциями объектно-ориентированного программирования (ООП), которые помогают в проектировании кода и его структурировании.

Интерфейсы - определяют набор методов, которые класс должен реализовать, но не содержит их реализации. В большинстве языков программирования класс может реализовывать несколько интерфейсов, что позволяет использовать множественное наследование. Интерфейсы не могут содержать конкретные реализации методов. Они только определяют сигнатуры методов. Интерфейсы обычно не могут содержать состояние (поля или свойства). В некоторых языках, таких как C#, интерфейсы могут иметь свойства, но без конкретной реализации.

Абстрактные классы - могут содержать как абстрактные методы (без реализации), так и конкретные методы (с реализацией). В большинстве языков программирования класс может наследовать только один абстрактный класс. Это ограничивает множественное наследование. Абстрактные классы могут содержать как абстрактные методы, так и методы с конкретной реализацией. Это позволяет предоставить общий код, который будет использоваться в подклассах. Абстрактные классы могут содержать состояние (поля и свойства), что позволяет им хранить данные и предоставлять их реализацию.

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Абстрактный класс

В Python можно создать абстрактный класс с использованием модуля abc (Abstract Base Classes). Этот модуль позволяет определять абстрактные методы, которые должны быть реализованы в подклассах. Абстрактный класс не может быть инициализирован напрямую, он предназначен только для наследования.

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
😐1
Снимок экрана на Python

Используется класс ImageGrab из библиотеки Pillow. Функция ImageGrab.grab используется для захвата экрана.
👍1
🚀Полезные библиотеки Python

👀marshmallow

📚Библиотека для сериализации и десериализации объектов.

⚙️ Установка 👇

pip install marshmallow


🖥Документация

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
notepadProPython.py
4 KB
Простой текстовый редактор на Python

Используется библиотека tkinter

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Потоки и процессы

В современном компьютерном мире понятия потоков (threads) и процессов (processes) играют ключевую роль в обеспечении многозадачности и эффективного использования ресурсов системы.

Процессы

Процесс - это экземпляр программы, который выполняется на компьютере. Каждый процесс имеет своё собственное пространство памяти, системные ресурсы и данные. Процессы создаются операционной системой и могут быть запущены пользователем или другой программой.

Ключевые характеристики процессов:

🔤 Изоляция памяти: Каждый процесс работает в своем собственном адресном пространстве. Это означает, что данные одного процесса не могут быть напрямую доступны или изменены другим процессом.

🔤 Ресурсы: Процессы имеют свои собственные дескрипторы файлов, системные ресурсы и окружение.

🔤 Безопасность: Изоляция памяти обеспечивает безопасность данных между процессами, предотвращая случайное или намеренное изменение данных другими процессами.
Создание и управление: Создание нового процесса (форк) занимает больше времени и ресурсов, так как операционная система должна выделить память и ресурсы для нового процесса.

Потоки

Поток (или нить) - это наименьшая единица обработки, которая выполняется в пределах процесса. Потоки позволяют параллельно выполнять несколько задач внутри одного процесса, что увеличивает эффективность использования ресурсов процессора.

Ключевые характеристики потоков:

🔤 Общее адресное пространство: Все потоки в одном процессе разделяют одно и то же адресное пространство и ресурсы, такие как дескрипторы файлов и системные данные.

🔤 Легковесность: Создание и управление потоками менее ресурсоёмко по сравнению с процессами. Потоки могут быстро переключаться, что делает их идеальными для выполнения параллельных задач.

🔤 Синхронизация: Поскольку потоки разделяют общее адресное пространство, они могут легко обмениваться данными, но это требует механизмов синхронизации (например, мьютексов или семафоров) для предотвращения конфликтов при одновременном доступе к общим ресурсам.

🔤 Производительность: Потоки позволяют использовать возможности многоядерных процессоров, выполняя задачи параллельно и улучшая общую производительность системы.

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Кортежи в pattern matching

В качестве шаблонов в pathern matching в Python могут выступать кортежи. Эти примеры показывают, как можно использовать pattern matching для работы с кортежами в Python. С помощью этой функциональности можно значительно упростить обработку различных структур данных.

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
✈️Все типы апдейтов в Telegram Bot API

🛩Pro Python. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Все типы данных в PostgreSQL

PostgreSQL — это мощная реляционная база данных с широкими возможностями, включая поддержку различных типов данных. Давайте рассмотрим основные типы данных, которые доступны в PostgreSQL.

1. Числовые типы
- INTEGER: Целые числа (4 байта). Диапазон: от -2,147,483,648 до 2,147,483,647.
- BIGINT: Большие целые числа (8 байт). Диапазон: от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.
- SMALLINT: Малые целые числа (2 байта). Диапазон: от -32,768 до 32,767.
- DECIMAL или NUMERIC: Числа с фиксированной точкой. Полезно для финансовых данных. Формат: DECIMAL(10, 2).
- FLOAT: Числа с плавающей точкой (4 байта). Может быть представлен как FLOAT4 или FLOAT8.
- REAL: Числа с плавающей точкой одинарной точности (4 байта).
- DOUBLE PRECISION: Числа с плавающей точкой двойной точности (8 байт).

2. Символьные типы
- CHAR(n): Фиксированная длина строк (n символов).
- VARCHAR(n): Переменная длина строк (максимум n символов).
- TEXT: Не ограниченная длина строк. Полезно для хранения больших текстов.

3. Булевый тип
- BOOLEAN: Логические значения (TRUE, FALSE, NULL).

4. Дата и время
- DATE: Дата (год, месяц, день).
- TIME: Время (часы, минуты, секунды).
- TIMESTAMP: Дата и время (без указания часового пояса).
- TIMESTAMPTZ: Дата и время (с указанием часового пояса).
- INTERVAL: Период времени.

5. Геометрические типы
- POINT: Точка в 2D пространстве.
- LINE: Непрерывная прямая.
- CIRCLE: Круг.
- POLYGON: Многоугольник.

6. Сетевые типы
- CIDR: IPv4 и IPv6 адреса с масками.
- INET: IPv4 и IPv6 адреса без маски.
- MACADDR: MAC-адреса.

7. JSON и XML
- JSON: Данные в формате JSON, позволяют хранить несопоставленные данные.
- JSONB: Бинарный формат JSON, более эффективен для хранения и операций.
- XML: Хранение и запрос данных в формате XML.

8. Модель данных
- ARRAY: Массивы. Позволяют хранить массив значений одного типа.
- COMPOSITE: Пользовательские типы данных, составленные из других типов.
- HSTORE: Набор пар ключ-значение. Полезен для хранения схематически не структурированных данных.

9. Уникальные типы
- UUID: Уникальные идентификаторы, генерируемые на основе алгоритма.
- TSVECTOR и TSQUERY: Для полнотекстового поиска.

Заключение
PostgreSQL предлагает огромный выбор типов данных, позволяющих гибко управлять вашей информацией. Правильный выбор типа данных может существенно улучшить производительность и управляемость вашей базы данных. Убедитесь, что вы используете подходящие типы данных для оптимизации вашего приложения!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
4🥰1
Хотели бы видеть разборы решения задач ЕГЭ по инфе на python?
Anonymous Poll
82%
Да
18%
Нет
Начнём с рассмотрения задач 13 типа ЕГЭ по Информатике (Работа с сетью), они затрагивает организацию компьютерных сетей, адресацию, протоколы передачи данных.

Но для начала немного теории.

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

Существуют два основных типа IP-адресов:

IPv4: Используется в большинстве современных сетей. Представляет собой 32-битное число, которое записывается в виде четырех чисел от 0 до 255, разделенных точками, каждое из которых весит по 8 бит (например, 192.168.1.1). (Используется на ЕГЭ)
IPv6: Новая версия IP-адреса, использующая 128-битное число, записанное в шестнадцатеричном виде (например, 2001:0:200:3:0:0:0:1).

Адрес сети - это начальный IP-адрес диапазона IP-адресов, которые относятся к одной сети. Он используется для идентификации этой сети и является частью объекта сети, который также включает в себя маску подсети.

Маска - это 32-битное число, которое определяет, какая часть IP-адреса используется для идентификации сети, а какая - для идентификации конкретного устройства в сети.

По IP и маске можно найти адрес сети.
Например, IP - 192.168.1.10 Маска - 255.255.255.0
Нужно перевести в двоичное представление и выполнить побитовую операцию AND
IP-адрес: 11000000 10101000 00000001 00001010
Маска подсети: 11111111 11111111 11111111 00000000
Результат побитовой операции AND: 11000000 10101000 00000001 00000000 = 192.168.1.0 в десятеричном представлении. Это адрес сети

Дальше в процессе решения задач разберёмся подробнее, будем использовать модуль ipaddress
👍1
Решаем при помощи модуля ipaddress

from ipaddress import *

ip="145.92.137.88"
mask = "255.255.240.0"

network = ip_network(f"{ip}/{mask}", strict=False)

print(network) #145.92.128.0/20


Фукнция ip_network() возвращает нам объект сети (IPv4Network), в формате строки: 145.92.128.0/20. Слешом разделены искомый IP адрес сети и число 20 (маска, может задаваться в таком формате) показывает, сколько бит IP-адреса используется для идентификации сети, а сколько - для идентификации устройства внутри сети. Простыми словами это значит, что маска содержит 20 единиц в двоичном представлении, это нам пригодится для решения других задач такого типа.

Из полученного результата (145.92.128.0) следует, что ответ BHEA

Примечание: параметр strict False, чтобы функция не проверяла маску на соответствие стандартам.
👍1
ip = "218.159.208.24"
address = "218.159.192.0"
for mask in range(33):
network = ip_network(f"{ip}/{mask}", False)
if address in str(network):
print(network.netmask)


Перебираем все возможные варианты масок, то есть 0 от 32 (потому что максимум 32 единицы, а минимум ни одной в двоичном представлении)
При помощи функции ip_network() находим адрес сети, выводим в консоль подходящие маски для этого адреса.

Получаем

255.255.192.0
255.255.224.0


Каждое число представляет отдельный байт, видим что самый наибольший третий байт равен 224
👍2