Python Map | Обучение
246 subscribers
196 photos
4 videos
1 file
85 links
Образовательный канал для программистов на Python 🐍

Сотрудничество – @HackingIP
Download Telegram
Модуль inspect: функция getmodule

Функция getmodule из модуля inspect позволяет получить модуль, в котором определен переданный объект (функция, класс, метод или экземпляр).

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


Функция возвращает объект модуля, в котором определён указанный объект. Если объект не принадлежит ни одному модулю (например, был создан динамически), функция может вернуть None.

🐍 Python Map | Обучение
🔥21👍1
Модуль prettytable

Модуль prettytable в Python используется для создания и отображения красивых ASCII таблиц в консольных приложениях.

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


Кроме того, библиотека поддерживает чтение данных из CSV, HTML или курсора базы данных.


Установка библиотеки:
pip install prettytable


🐍 Python Map | Обучение
🔥31
Деструктурирующее присваивание

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

a, b = range(2)
# a = 0, b = 1

(a, b) = {1: "one", 2: "two"}
# a = 1, b = 2

[a, b] = {3, 5}
# a = 4, b = 5

Левая сторона не является реальным кортежем или списком, а задает структуру для объектов a и b, подобно сопоставлению с шаблоном.


a, b = 42, [16, 72]
# a = 46, b = [16, 72]

c, [d] = 42, [16, 72]
# ValueError: too many values to unpack (expected 1)

Таким образом, множественное присваивание выполняет две задачи: присваивает значения и проверяет количество элементов.


В качестве крайнего случая синтаксис также позволяет указывать списки присвоения нулевой длины.

[] = []


Левая и правая части [] - это принципиально разные вещи. Правая часть … = [] обозначает фактический список без элементов. Левая часть [] = … просто обозначает "нулевые имена".

🐍 Python Map | Обучение
👍2🤯2
Модуль pyscreenshot

Pyscreenshot — кроссплатформенная библиотека для создания скриншотов в Python, поддерживающая Windows, macOS и Linux. Она легко интегрируется с другими модулями и предлагает удобный интерфейс для захвата изображений.

На картинке показан пример, как сделать скриншот всего экрана и сохранить его в файл.

Установка библиотеки:
pip install pyscreenshot


🐍 Python Map | Обучение
Модуль pickle

Модуль pickle в Python предоставляет средства для сериализации и десериализации объектов, что позволяет сохранять их в файл или передавать через сеть. Сериализация — это преобразования объекта в поток байтов. Десериализация — это обратный процесс.

Основные функции модуля:

1. pickle.dump(obj, file): Сериализует объект obj и записывает его в открытый файл file.
2. pickle.load(file): Загружает объект из файла file, десериализуя его в исходный объект Python.
3. pickle.dumps(obj): Сериализует объект obj и возвращает его в виде байтовой строки.
4. pickle.loads(bytes): Десериализует объект из байтовой строки bytes.

Модуль pickle — это удобный и мощный способ сериализации и десериализации объектов в Python.


🐍 Python Map | Обучение
3
Что выведет этот код?
Anonymous Quiz
1%
aa
53%
aa bb
39%
Ошибка
7%
Узнать ответ
Константы модуля string

Модуль string в Python предоставляет ряд полезных констант, которые помогают работать со строками более эффективно и удобно.

➡️ Основной список:

1. string.ascii_letters: Содержит все буквы английского алфавита (как заглавные, так и строчные).
2. string.digits: Включает все десятичные цифры от 0 до 9.
3. string.hexdigits: Содержит шестнадцатеричные цифры (0-9 и a-f, A-F).
4. string.octdigits: Включает восьмеричные цифры (0-7).
5. string.punctuation: Содержит все знаки пунктуации.
6. string.whitespace: Включает все пробельные символы (пробелы, табуляции и переносы строк).

➡️ Пример использования:

import string

# Функция проверяет, состоит ли строка только из букв
def is_alpha(s):
return all(char in string.ascii_letters for char in s)

# Тестируем функцию
print(is_alpha("HelloWorld")) # Вывод: True
print(is_alpha("Hello World!")) # Вывод: False


Константы из модуля string значительно упрощают обработку строк и могут быть использованы в различных алгоритмах, таких как валидация ввода, фильтрация символов и т.д.


🐍 Python Map | Обучение
🔥3💯1
Взаимодействие с файлами в Python

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

Открытие файла

Для открытия файла используйте функцию open(). Вот синтаксис:

file = open('имя_файла.txt', 'режим')


Где режим может быть:
- 'r' - чтение (по умолчанию)
- 'w' - запись (создает новый файл или перезаписывает существующий)
- 'a' - добавление (добавляет данные в конец файла)
- 'b' - двоичный режим (например, 'rb' для чтения двоичных файлов).

Чтение из файла

- read(размер) - читает заданное количество байтов или весь файл
- readline() - читает одну строку файла
- readlines() - читает список всех строк файла

Запись в файл

- write(данные) - записывает данные в файл
- writelines(список) - записывает список строк в файл

Другие операции

- close() - закрывает файл
- seek(смещение, откуда) - устанавливает указатель чтения/записи
- tell() - возвращает текущее положение указателя

Пример: считывание файла

with open('my_file.txt', 'r') as f:
    for line in f:
        print(line)


Пример: запись в файл

with open('my_file.txt', 'w') as f:
    f.write('Это строка, записанная в файл.')


Обработка исключений

Python обрабатывает исключения, связанные с файлами, с помощью следующих классов:

FileNotFoundError: файл не найден
PermissionError: нет разрешения на открытие файла
IOError: общая ошибка ввода-вывода.

try:
with open('несуществующий_файл.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print("Файл не найден.")


Закрытие файла

Важно закрывать файлы после их использования, чтобы избежать утечек ресурсов:

file.close()


Использование контекстного менеджера with автоматически закроет файл, когда блок кода завершится.

🐍 Python Map | Обучение
🔥2👍1🏆1
📄 Модуль logging

Логирование — ключевой аспект разработки, позволяющий отслеживать состояние приложения и выявлять проблемы. В Python для этого часто используется встроенный модуль logging, который предлагает гибкие механизмы записи логов. В этом посте мы рассмотрим, как его настроить.

Основные возможности

- Записывать сообщения разного уровня важности (DEBUG, INFO, WARNING, ERROR, и CRITICAL).
- Конфигурировать формат сообщений, включая временные метки, уровень логирования и текст сообщения.
- Записывать логи не только в консоль, но и в файлы, сетевые сокеты и даже базы данных.

Пример простого приложения с логированием

import logging

# Настройка логирования
logging.basicConfig(
level=logging.DEBUG, # Устанавливаем уровень логирования
format='%(asctime)s - %(levelname)s - %(message)s', # Формат сообщения
handlers=[
logging.FileHandler("app.log"), # Запись логов в файл
logging.StreamHandler() # Вывод логов в консоль
]
)

# Примеры логирования
def main():
logging.debug("Это отладочное сообщение.")
logging.info("Приложение запущено.")
try:
result = 10 / 0 # Исключение
except ZeroDivisionError:
logging.error("Деление на ноль произошло.", exc_info=True) # Логируем ошибку
logging.warning("Это предупреждающее сообщение.")
logging.info("Приложение завершено.")

if __name__ == "__main__":
main()



Объяснение кода

1. Импорт модуля: Сначала импортируется модуль logging.
2. Настройка логирования: basicConfig настраивает уровень логирования и формат сообщений. Логи будут выводиться как в файл app.log, так и в консоль.
3. Функция: В функции main записываются информационные и ошибочные сообщения, что позволяет отслеживать поведение программы.

Вывод логов

После выполнения программы в консоли и в файле app.log вы увидите записи, которые будут выглядеть примерно так:

2024-09-14 11:05:02,123 - DEBUG - Это отладочное сообщение.
2024-09-14 11:05:02,124 - INFO - Приложение запущено.
2024-09-14 11:05:02,125 - ERROR - Деление на ноль произошло.
Traceback (most recent call last):
File "app.py", line 10, in main
result = 10 / 0
ZeroDivisionError: division by zero
2024-09-14 11:05:02,126 - WARNING - Это предупреждающее сообщение.
2024-09-14 11:05:02,127 - INFO - Приложение завершено.


🐍 Python Map | Обучение
😎51🔥1
Создаем прогресс-бар

Библиотека rich для Python предоставляет мощные инструменты для создания консольных приложений с красивым выводом. Один из её важных компонентов — модуль progress, который позволяет удобно отображать прогресс выполнения различных задач через прогресс-бары в консольных приложениях.

Прогресс-бар — это индикатор, который отображает прогресс выполнения задачи.


— Метод add_task добавляет новую задачу в прогрессбар. Задача получает описание и общее количество шагов.
— В цикле обновляется прогресс с помощью метода update, который увеличивает значение прогресса и добавляет задержку для демонстрации работы.

Установка библиотеки:
pip install rich


🐍 Python Map | Обучение
41🏆1
Модуль fnmatch: функция fnmatch

Функция fnmatch из модуля fnmatch предназначена для сравнения строки с шаблоном, используя символы подстановки. Она позволяет проверять, соответствует ли заданная строка определенному шаблону.

Синтаксис:

fnmatch.fnmatch(name, pat)


Где:
- name: строка, которую нужно проверить.
- pat: строка-шаблон, содержащая символы подстановки, такие как * (любое количество символов или пустая последовательность) и ? (ровно один любой символ).

Примечание:
Оба параметра name и pat нормализуются с помощью os.path.normcase().

🐍 Python Map | Обучение
👍2🔥21
Модуль slugify

Слаг — это упрощенная версия заголовка или названия, в которой специальные символы заменяются на дефисы (-), а все буквы становятся строчными. Например, заголовок "Как создать слаг в Python!" превращается в "kak-sozdat-slag-v-python".

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

from slugify import slugify

title = "Пример поста о создании слагов"
slug = slugify(title)
print(slug) # вывод: primer-posta-o-sozdanii-slagov


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

Установка библиотеки:
pip install python-slugify


🐍 Python Map | Обучение
🔥5😎1
Нормализация строк: метод casefold()

Нормализация строк - это полноценное приведение текста к единому представлению.

casefold() — это метод строк, который преобразует все символы строки в нижний регистр, при этом учитывая особенности различных языков.

Он похож на метод lower(), но более агрессивен, потому что он предназначен для удаления всех различий регистра в строке.


В первом примере sign1 - "микрознак", sign2 - "греческая строчная буква мю".

Интерпретатор Python видит эти символы как два разных, но в Unicode они имеют одинаковое отображение.


🐍 Python Map | Обучение
🔥31
Модуль collections: класс namedtuple

namedtuple — это структура данных в Python, позволяющая создавать кортежи с именованными полями. Она делает работу с данными более читабельной и удобной, позволяя обращаться к элементам как по имени, так и по индексу.

📄 Синтаксис:

namedtuple(typename, field_names, rename=False, defaults=None, module=None)


Где:

typename: имя класса
field_names: последовательность строк, имена полей
rename: авто-переименование повторяющихся имен
defaults: итерируемая последовательность, значения по умолчанию
module: модуль кортежа

⚙️ Подробнее:
Класс namedtuple создает новый подкласс кортежа с именем typename. Этот подкласс обеспечивает создание объектов, которые имеют индексируемые и итерируемые поля. Экземпляры также имеют документацию с typename и field_names, а метод repr() выводит кортеж в формате name=value.

🆚 Dict vs namedtyple:
Экземпляры именованных кортежей не имеют словарей, поэтому они легковесны и требуют не больше памяти, чем обычные кортежи.

🐍 Python Map | Обучение
👍2🔥21