TGTGInsightinteligencia telegramLIVE / telegram public index
Volver a canales
Python Academy avatar

TGINSIGHT CHAT

Python Academy

@python_academy

Educación

Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu

Suscriptores4.5万Suscriptores actuales
Posts rastreados1,014Posts indexados
Alcance reciente47,060Vistas de posts recientes
Posts recientes

Posts recientes

Pág. 14 de 85 · 1,014 posts

Publicado 28 dic

Отлавливаем баги с assert При выполнении инструкции assert с логическим выражением, результат которого равен True, ничего не произойдет. Но если попробовать выполнить инструкцию assert с логическим выражением, которое равно False, то будет сгенерировано исключение AssertionError. Исключения AssertionError предназначены скорее для отладки. При написании программ на этапе разработки мы можем видеть, что делаем что-то не так (например, передали в метод некорректное значение). Также не нужно, к примеру, обрабатывать пользовательский ввод и пытаться обработать исключение AssertionError блоком try-except. Если в вашем коде будет очень много assert'ов, то это затронет и производительность программы. #исключения#assert

3,850 views

Publicado 27 dic

Параметры *args и **kwargs Все хоть раз видели такую запись, и сейчас мы узнаем, что это за символы. Сообщу сразу, что args и kwargs – общепринятые имена переменных, а разбирать мы будем звездочки перед ними. В примере функция принимает обязательный аргумент value, а остальных аргументов она как бы не ожидает. В таком случае *args упаковывает все не именованные аргументы в кортеж, а **kwargs – все именованные в словарь. Конструкция с *args, **kwargs получается достаточно полезной, если мы не знаем, кто и в каких целях будет использовать нашу функцию. То есть, мы можем запихнуть в аргументы практически что угодно. #функции

3,910 views

Publicado 26 dic

Аргументы командой строки При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле sys. Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы. #sys

4,010 views

Hashtags

Publicado 25 dic

Определение литеральных типов Когда нам может понадобится определить из полученной строки литеральный тип (строки, числа, списки, кортежи, словари, логические значения и None), мы можем воспользоваться функцией literal_eval() из модуля ast. Данная функция поможет безопасно определить литеральный тип, а в случае если был передан не литерал, то выбросит исключение. Это можно использовать для оценки выражений из внешних источников при парсинге файлов, либо пользовательского ввода. #ast#literal_eval

4,120 views

Publicado 24 dic

Сохранение документации функции при декорировании У декораторов существует ряд проблем, одна из которых заключается в том, что, после оборачивания функции в декоратор, на выходе мы не можем получить информацию атрибутов __name__ и __doc__, нужные для документации функции. Вместо значений данных атрибутов исходной функции мы будем получать значения функции обертки. Для решения этой проблемы можно воспользоваться декоратором functools.wraps, применяя его к обертке нашего декоратора. В результате имя и сигнатура функции, передаваемой в декоратор, будут копироваться в обертку. #декораторы#wraps

4,070 views

Publicado 23 dic

Нижнее подчеркивание В Python имя переменной может состоять из одного подчеркивания. Хотя такое имя не достаточно описательно и не должно использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл. Первое, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны — например, в циклах for. Второе, интерактивный режим использует _ для хранения результата последнего выполненного выражения. Третье, документация модуля gettext рекомендует псевдоним _() для функции gettext(), чтобы минимизировать загромождение вашего кода. #тонкости

3,840 views

Publicado 22 dic

Слоты в классах По умолчанию в Python в классах используется словарь __dict__ для хранения атрибутов, который создается по умолчанию при создании экземпляра класса. Данная особенность позволяет динамически в рантайме добавлять атрибуты, но от сюда появляются соответствующие проблемы с производительностью. В случаях, когда мы сразу точно знаем все атрибуты, используемые в классе, мы можем воспользоваться атрибутом __slots__, который позволяет задать ограниченный список аргументов для класса. В этом случае словарь __dict__ не будет создаваться, что позволит сэкономить память и поднять производительность. #class#slots

3,890 views

Hashtags

Publicado 21 dic

Работа с YAML-Файлами в Python с Помощью Библиотеки PyYAML PyYAML позволяет эффективно работать с файлами в формате YAML (YAML Ain't Markup Language), который широко используется для конфигураций, настроек и обмена данными в структурированной форме. import yaml data_to_write = {'name': 'John Doe', 'age': 30, 'city': 'Example City'} with open('example.yaml', 'w') as file: yaml.dump(data_to_write, file, default_flow_style=False) with open('example.yaml', 'r') as file: loaded_data = yaml.safe_load(file) print(f"Загруженные данные: {loaded_data}") Результат (файл example.yaml): age: 30 city: Example City name: John Doe В этом примере мы используем PyYAML для записи словаря data_to_write в файл example.yaml и затем загружаем данные из этого файла обратно в переменную loaded_data. Библиотека PyYAML предоставляет удобные средства для работы с данными в формате YAML в Python. Будь то сохранение конфигураций, обмен структурированными данными или другие сценарии, где YAML имеет преимущество, PyYAML обеспечивает легкость в использовании и читаемый код🐍 #python#yaml#pyyaml

4,070 views

Publicado 20 dic

Работа с PDF файлами используя PyPDF2 В этом посте, вы узнаете, как работать с PDF-файлами в Python. PyPDF2 предоставляет функциональность для работы с PDF-файлами в Python, позволяя автоматизировать процессы обработки и анализа документов в формате PDF. Пример кода: import PyPDF2 with open('example.pdf', 'rb') as file: pdf_reader = PyPDF2.PdfReader(file) num_pages = len(pdf_reader.pages) print(f"Количество страниц в PDF: {num_pages}") first_page_text = pdf_reader.pages[0].extract_text() print("Текст с первой страницы:") print(first_page_text) pdf_writer = PyPDF2.PdfWriter() pdf_writer.add_page(pdf_reader.pages[0]) with open('new_document.pdf', 'wb') as new_file: pdf_writer.write(new_file) print("Обработка PDF завершена.") В этом примере мы открываем PDF-файл, используя PyPDF2, извлекаем информацию о количестве страниц и тексте с первой страницы. Затем мы создаем новый PDF-файл, добавляем в него первую страницу и сохраняем его под именем "new_document.pdf". PyPDF2 - это мощный инструмент для работы с PDF-документами в Python. Он предоставляет возможности для чтения, создания и манипулирования PDF-файлами, что делает его отличным выбором для автоматизации задач, связанных с обработкой документов в этом формате. #python#pypdf2

3,830 views

Publicado 19 dic

Отправляем универсальные уведомления Наткнулся на интересный пакет notifiers, который позволяет отправлять уведомления на почту, через Телеграм бота, в Слэк и еще много куда. Всего доступно 16 провайдеров, подробнее про них в документации. В функцию get_notifier передаем название провайдера в виде строки и получаем объект, с которым можно работать. Отправить уведомление можно с помощью универсального метода notify. Если не уверены, какие аргументы нужно передать для отправки уведомления, то можете посмотреть их через атрибут required у созданного объекта. Например, для Телеграма нужно передать токен бота, айди чата и само сообщение. В случае с почтой необходимо указать логин, пароль, адресата и также сообщение. #уведомления#notifiers

3,790 views

Publicado 18 dic

Познакомьтесь с IceCream: Улучшенным выводом в Python Hедавно мы наткнулись на потрясающий инструмент для отладки и разработки в Python, и хотим поделиться им с вами! Представляем вам icecream - библиотеку, которая упрощает отладку, улучшая вывод ваших данных. Что такое icecream? icecream - это легковесная библиотека для Python, которая предоставляет простые, но мощные инструменты для отслеживания и вывода значений переменных и данных в процессе выполнения кода. Этот инструмент полезен при отладке, тестировании и разработке, помогая вам лучше понять, что происходит в вашей программе. Преимущества icecream перед стандартным print: 1. Читабельность и простота в использовании: icecream автоматически выводит имя переменной и ее значение, что делает вывод более понятным и читабельным. 2. Цветовая кодировка: icecream поддерживает цветовую кодировку вывода, что делает его более наглядным и удобным для анализа. Настройка icecream: icecream позволяет настраивать вывод, добавлять дополнительную информацию, и даже сохранять логи в файл. Вы можете настроить icecream в соответствии с вашими потребностями, делая вывод более информативным и удобным. from icecream import ic, install install(autodetect=True, includeContext=True) number = 42 ic(number) text = "Привет, мир!" ic(text) Это добавит контекст, такой как имя файла и номер строки, в вывод: ic| <ipython-input-1-5a0d5d83d2d3>:1 in <module> - number: 42 ic| <ipython-input-1-5a0d5d83d2d3>:4 in <module> - text: 'Привет, мир!' Автор идеи поста: @hexvel Если у вас есть предложения для следующего поста, делитесь в комментариях! #Python#logging#icecream

3,810 views

Publicado 17 dic

3 трюка с itertools Начнем с функции combinations: она позволяет составлять комбинации элементов из итерируемых объектов без повторений. Первый аргумент это сам объект, а второй — длина комбинации. Для того, чтобы составить комбинацию с повторениями, используют функцию combinations_with_replacement. Делает она абсолютно все то же самое что и предыдущая, с одним исключением – теперь в комбинации могут быть повторы. Ну и в заключение, рассмотрим функцию compress, применяющую "маску" из второго аргумента функции к первому. То есть, если в маске на этом месте стоит единица, то в исходном массиве элемент остается нетронутым, и наоборот. #itertools

3,870 views

Hashtags

12•••5•••10•••1213141516•••20•••25•••30•••35•••40•••45•••50•••55•••60•••65•••70•••75•••80•••8485