2619
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @it_dashka 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython
📧 Автоматизация отправки электронных писем
В этой статье будет описано, как можно автоматизировать процесс отправки электронных писем. Эта информация будет полезна всем, кто нуждается в рассылке информации или рекламных сообщений большому количеству адресатов.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
⬆️В примере выше первая и вторая строки похожи, но отличаются видами скобок. В списковом включении они используют квадратные скобки, а в генераторном выражении – круглые.
➡️Из вывода переменных видно, что l содержит список, а g – генератор. Таким образом, возникает вопрос, что использовать в данной ситуации.
Если нужен результат в виде списка немедленно для дальнейшей работы, то лучше использовать генераторы коллекций.
➡️А если значения могут потребоваться не скоро, или даже не факт, что они будут нужны, то более предпочтительно использовать генераторы, чтобы не занимать лишнюю память и не перегружать систему.
В данной статье мы рассмотрим использование Python для майнинга криптовалют и создания NFT (Non-Fungible Tokens).
Мы не будем обсуждать финансовые аспекты, но сосредоточимся исключительно на программировании.
Автор этой статьи использует робота для автоматизации процесса добычи криптовалют в игре RPG, используя Python и библиотеку PyAutoGUI.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Что может быть ключом в словаре
В Python ключом в словаре может быть любой неизменяемый объект, такой как число, строка или кортеж.
В этом примере ключами словаря являются число 1, строка ‘two’ и кортеж (3, 4). Однако, если вы попытаетесь использовать изменяемый объект, такой как список, как ключ словаря, вы получите TypeError.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Генераторные фунции (generator functions)
Если предикатов фильтрации или обработчиков элементов списка много, то удобнее использовать генераторы. Они могут не дать прироста скорости, но помогут сэкономить память.
Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Онлайн-урок «Создание простого калькулятора на Python: от основ к расширенным функциям».
22 мая в 19:00 Слёрм приглашает присоединиться к трансляции, где вы узнаете, как создать калькулятор на Python. Онлайн-урок будет полезен как новичкам, так и тем, кто уже знаком с программированием и хочет углубить свои знания.
Вы узнаете:
🔠Какие функции в Python нужны, чтобы организовать код калькулятора;
🔠Как получить и преобразовать ввод от пользователя;
🔠Какие принципы арифметики будут реализованы в калькуляторе;
🔠Как обрабатывать возможные ошибки;
🔠Как добавлять новые операции в калькулятор и многое другое.
Спикер: Александр Мещеряков, Senior Backend Dev (Python\C++ boots), 17 лет в разработке, CTO 2-ой в Европе криптобиржи.
Не упустите возможность расширить свои знания и навыки программирования!
➡️ Регистрация на веб через бот ⬅️
До встречи 😉
erid: LjN8K75gq
Как проверить, что один кортеж содержит все элементы другого кортежа
Для проверки того, содержит ли один кортеж все элементы другого кортежа в Python, можно воспользоваться встроенной функцией all(), передав ей выражение генератора списков, которое проверяет наличие каждого элемента из второго кортежа в первом кортеже.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Методы сравнения объектов между собой. Продолжение.
Метод le(self, other) позволяет определить поведение объекта вашего класса при сравнении с другим объектом с использованием оператора <=. Например, если необходимо устанавливать определенные критерии сравнения для объектов вашего класса (например, на основе их атрибутов), можно переопределить метод le(self, other) таким образом, чтобы он возвращал True, если объект self меньше или равен объекту other согласно этим критериям, и False в противном случае.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Выборка простых чисел в списке любого размера
Найти этому коду реальное применение непросто. Однако этот код легко адаптировать для поиска других типов чисел, таких как четные, нечетные или чисел, делящихся на определенное число.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 15-16 мая в 19:00 мск.
О перспективах направления Python и многом другом расскажет Грегори Салиба, старший разработчик ЭквантаЛаб с опытом в разработке более 3 лет.
На вебинаре вы:
☑️ Самостоятельно напишете Telegram-бота с карточными мини-играми.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Поймете как продолжить обучение, какие навыки потребуются, чтобы стать backend-разработчиком на Python.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.
🎁 Приятные бонусы: полезный гайд для начинающего Python-разработчика и гайд о сленге в IT всем участникам интенсива!
Создание и закрытие файла. Продолжение.
После окончания работы с архивом для его закрытия применяется метод close():
Но так как ZipFile также представляет менеджер контекста, то он поддерживает выражение with, которое определяет контекст и автоматически закрывает файл по завершению контекста:
🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Запись и чтение архивных zip-файлов. Продолжение.
Для работы с файлами этот класс предоставляет ряд методов:
🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Запись и чтение архивных zip-файлов
Zip представляет наиболее популярный формат архивации и сжатия файлов. И язык Python имеет встроенный модуль для работы с ними - zipfile. С помощью этого модуля можно создавать, считывать, записывать zip-файлы, получать их содержимое и добавлять в них файлы. Также поддерживается шифрование, но не поддерживается дешифрование.
Для представления zip-файла в этом модуле определен класс ZipFile. Он имеет следующий конструктор:
🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Удаление файла
Для удаления вызывается функция remove(), в которую передается путь к файлу:
🐍 Укус питона // 💬 Чат // #теория #модули #OS
Создание и удаление папки
Для создания папки применяется функция mkdir(), в которую передается путь к создаваемой папке:
Для удаления папки используется функция rmdir(), в которую передается путь к удаляемой папке:
🐍 Укус питона // 💬 Чат // #теория #модули #OS
👀 В Python, обработка исключений осуществляется при помощи конструкции try/except/else.
➡️ Конструкция try позволяет выполнить определенный блок кода, где могут произойти ошибки. В случае возникновения ошибки, выполнение программы переходит к блоку кода после except.
В блоке except можно указать тип исключения для обработки или оставить его пустым для обработки всех возможных исключений.
➡️ Блок else будет выполнен только в том случае, если исключения не произошло в блоке try. Это дает возможность выполнить определенный код в случае успешного выполнения блока try.
⬆️ Например, если программа пытается выполнить деление на ноль, то возникнет исключение ZeroDivisionError. В блоке except можно обработать это исключение и вывести соответствующее сообщение. Блок else не будет выполнен, так как исключение произошло в блоке try.
💡 Использование конструкции try/except/else в Python позволяет гибко обрабатывать исключения и управлять потоком выполнения программы.
🖥 Шпаргалка по Python, в которой собраны небольшие скрипты для решения повседневных задач
Вот, кстати, некоторые из них:
— добавить файл sample.txt к архиву .tar.gz:
import tarfile
with tarfile.open('sample.tar.gz', 'w:gz') as tar:
tar.add('sample.txt')
import difflibЧитать полностью…
diff = difflib.ndiff('one\ntwo\nthree\n'.splitlines(keepends=True),
'ore\ntree\nemu\n'.splitlines(keepends=True))
print(''.join(diff))
Библиотека igraph предназначена для работы с графами и сетями, обеспечивая возможность строить, анализировать и визуализировать их.
Igraph широко применяется в анализе социальных сетей, изучении структуры крупных сетей (например, веб-ссылок), в биоинформатике для исследования взаимодействий белков и других задач, связанных с теорией графов.
Основные функции igraph включают в себя генерацию случайных и классических графов, вычисление различных метрик (например, степень вершин, диаметр графа), а также поиск сообществ и кластеров.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Как начать отладку при утечке памяти в рабочем приложении
Для отладки утечек памяти в Python можно использовать инструменты, такие как Memory Profiler или objgraph.
Запустите вашу программу с помощью команды python -m memory_profiler my_script.py. Будет выведен подробный отчет о том, сколько памяти используется в каждой строке программы, а также общее использование памяти и любые утечки.
Этот код создаст изображение my_list.png, на котором будут показаны все объекты, на которые ссылается my_list, а также все объекты, которые ссылается на них. Это может помочь вам понять, какие объекты держат ссылки на ваши объекты и могут вызывать утечки памяти.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
🖥 Открытый учебник с основами Python
Здесь раскрываются не только базовые темы, но и более продвинутые — типа работы с datetime, itertools, os и другими модулями/библиотеками
Отличный источник информации, чтобы полистать перед собеседованием.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Декораторы в Python
В этой статье мы поговорим о декораторах в Python — мощном инструменте, который позволяет модифицировать или расширять поведение функций и классов, не изменяя их исходный код. Декораторы представляют собой функции высшего порядка, способные принимать другие функции или классы в качестве аргументов и возвращать новые функции или классы с расширенной функциональностью. Мы рассмотрим основы работы с декораторами, а также научимся создавать и применять их для улучшения кода.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Создание и удаление объектов
Любое описание объекта в объектно-ориентированном программировании начинается с создания объекта и его удаления.
Метод new(cls[, ...]) в Python используется для создания типа класса. Он принимает тип класса в качестве первого аргумента и, обычно, возвращает этот же тип. Этот метод часто применяется для настройки создания экземпляров классов, особенно тех, которые наследуются от неизменяемых типов, таких как int, str или tuple.
init(self[, ...]) — конструктор класса. Используется при определении объектов.
init_subclass(cls) — позволяет переопределить создание подклассов объекта.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Методы сравнения объектов между собой
Метод lt(self, other) в Python используется для определения порядка сортировки объектов при использовании встроенных функций сортировки, таких как sorted(). Реализация этого метода в классе позволяет указать атрибуты объекта, которые должны учитываться при сравнении с другими объектами для определения их относительного порядка.
Например, предположим, у нас есть класс Point, который представляет точку на плоскости с атрибутами x и y. Мы можем определить метод lt(self, other) в классе Point таким образом, чтобы при сравнении двух точек учитывался их порядок по оси x, а в случае равенства координат по оси x - по оси y.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Запись файлов в архив. Продолжение.
Стоит учитывать, что при открытии файла в режиме "w" при всех последующих записях текущее содержимое будет затираться, то есть фактически архивный файл будет создаваться заново. Если нам необходимо добавить, то необходимо определять zip-файл в режиме "a":
🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Запись файлов в архив.
Для записи файлов в архив применяется файл write():
Первый параметр представляет файл, который записиывается в архив. Второй параметр - arcname устанавливает произвольное имя для файла внутри архива (по умолчанию это само имя файла). Третий параметр - compress_type представляет тип сжатия, а параметр compresslevel - уровень сжатия.
Например, запишем в архив "metanit.zip" файл "hello.txt" (который, как предполагается, находится в той же папке, где и текущий скрипт python):
🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Создание и закрытие файла.
Для создания архивного файла в конструктор ZipFile передается режим "w" или "a":
После выполнения кода в текущей папке будет создаваться пустой архивный файл "metanit.zip".
🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Запись и чтение архивных zip-файлов. Продолжение.
Параметры:
• file: путь к zip-файлу
• mode: режим открытия файла. Может принимать следующие значения:
- r: применяется для чтения существующего файла
- w: применяется для записи нового файла
- a: применяется для добавления в файл
• compression: тип сжатия файла при записи. Может принимать значения:
- ZIP_STORED: архивация без сжатия (значение по умолчанию)
- ZIP_DEFLATED: стандартный тип сжатия при архивации в zip
- ZIP_BZIP2: сжатие с помощью способа BZIP2
- ZIP_LZMA: сжатие с помощью способа LZMA
🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Существование файла
Если мы попытаемся открыть файл, который не существует, то Python выбросит исключение FileNotFoundError. Для отлова исключения мы можем использовать конструкцию try...except. Однако можно уже до открытия файла проверить, существует ли он или нет с помощью метода os.path.exists(path). В этот метод передается путь, который необходимо проверить:
🐍 Укус питона // 💬 Чат // #теория #модули #OS
Переименование файла
Для переименования вызывается функция rename(source, target), первый параметр которой - путь к исходному файлу, а второй - новое имя файла. В качестве путей могут использоваться как абсолютные, так и относительные. Например, пусть в папке C://SomeDir/ располагается файл somefile.txt. Переименуем его в файл "hello.txt":
🐍 Укус питона // 💬 Чат // #теория #модули #OS
Модуль OS и работа с файловой системой
Ряд возможностей по работе с каталогами и файлами предоставляет встроенный модуль os. Хотя он содержит много функций, рассмотрим только основные из них:
🐍 Укус питона // 💬 Чат // #теория #модули #OS