Python академия @pythonofff Channel on Telegram

Python академия

@pythonofff


Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter

Python академия (Russian)

Python академия - это канал, который поможет вам быстро и легко освоить Python. Здесь вы найдете массу полезной информации, уроков, советов и рекомендаций по изучению этого мощного языка программирования. На канале вы сможете пообщаться с опытными специалистами, задать свои вопросы и получить качественные ответы. Подписывайтесь на Python академию прямо сейчас и станьте профессионалом в области программирования! Для всех дополнительных вопросов обращайтесь к @evgenycarter.

Python академия

23 Nov, 05:00


Switch-конструкция с помощью словаря

Привет, на связи Адриан. Начинающие программисты достаточно часто спрашивают меня про switch-конструкции, а в Python их вобщем-то нет.

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

В этом примере я использовал lambda-функции для упрощения кода, но вместо них можете подставить любые другие. Объясню немного подробнее, lambda – объявление анонимной функции, x и y - принимаемые аргументы, x + y – возвращаемый результат.

Подписывайтесь на канал 👉@pythonofff

Python академия

22 Nov, 14:00


Именование среза с использованием функции slice

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

Один из вариантов улучшения ситуации заключается в использовании констант для значений, задаваемых индексами. Но есть и более удачный способ написания качественного кода, как показано на картинке

Подписывайтесь на канал 👉@pythonofff

Python академия

22 Nov, 05:00


Частичное применение

Сегодня поговорим об одном интересном концепте из области функционального программирования. Использовать будем функцию partial из стандартной библиотеки functools.

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

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

Подписывайтесь на канал 👉@pythonofff

Python академия

20 Nov, 14:00


Ограничьте использование процессора и памяти

Если вы не хотите оптимизировать память вашей программы или корректировать работу процессора, то можно просто установить лимиты. К счастью, в Python для этого есть специальная библиотека

Подписывайтесь на канал 👉@pythonofff

Python академия

20 Nov, 12:03


💡Что стоит за великими открытиями и масштабными проектами? Конечно, импульс! 

Импульс Т1 — ИТ-конференция для тех, кто ценит точность, стремится к новым открытиям и жаждет творческого огня. 

🔥Вас ждут: 

🟣вдохновляющие лекции от ведущих специалистов
🟣интересные дискуссии экспертов рынка
🟣нетворкинг и вечеринка late night lab
🟣питчи идей и еще много интересного

О чем поговорим?

🔹Как создавать условия для развития бизнеса и выращивать высокотехнологичных лидеров рынка?
🔹Как новые технологии помогают решать актуальные проблемы в различных отраслях?
🔹Где находится точка рождения новых знаний и что служит генератором новаторских идей?
🔹Как новые идеи изменят самого человека – его тело, мозг и душу?

🎤Среди спикеров конференции: Максут Шадаев, Василий Шпак, Евгений Абакумов, Наталья Касперская, Алексей Паламарчук, Игорь Ашманов и другие.

Регистрируйтесь прямо сейчас!

#реклама
О рекламодателе

Python академия

20 Nov, 05:00


Методов списков list

Напоминаю, списки в Python – упорядоченные последовательности элементов различных типов данных. Списки можно изменять, например, добавлять новые элементы.

1. list.append(x) – добавляет элемент, переданный в качестве аргумента, в конец списка. Этот метод является самым простым и распространённым в коде.

2. list.insert(i, x) – вставляет элемент в переданную позицию. Первый аргумент означает индекс элемента, перед которым будет добавлено новое значения.

Таким образом, list.insert(0, x) вставит элемент в начало списка, а list.insert(len(list), x) эквивалентно записи list.append(x).

3. list.extend(iterable) – расширяет список, добавляя все элементы другой коллекции.

Подписывайтесь на канал 👉@pythonofff

Python академия

19 Nov, 14:00


Сила «однострочников» (One-Liners)

Вы устали пробираться между строк кода и теряться в условных конструкциях? Тогда, однострочники Python — это то, что вам нужно

Подписывайтесь на канал 👉@pythonofff

Python академия

19 Nov, 05:00


Как сделать запрос DELETE

Как следует из названия, если вы хотите удалить ресурс из API, вы можете использовать запрос DELETE. Удалим товар с идентификатором, равным 21.

Подписывайтесь на канал 👉@pythonofff

Python академия

18 Nov, 14:00


Множественный вызов метода randint()

Для этого кода повторение метода random.randint() дает нам разные случайные целые числа для каждого вызова в пределах от 10 до 100.

Подписывайтесь на канал 👉@pythonofff

Python академия

18 Nov, 05:00


Модуль argparse

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

Подписывайтесь на канал 👉@pythonofff

Python академия

17 Nov, 14:00


Пример разделения строки CSV с вводом пользователем

Давайте посмотрим на реальный пример, где пользователь вводит данные CSV, а мы разбиваем их на список строк.

Подписывайтесь на канал 👉@pythonofff

Python академия

17 Nov, 05:00


Импорт as

Мы можем определить собственное имя для импортированного модуля, используя оператор import as.

Подписывайтесь на канал 👉@pythonofff

Python академия

16 Nov, 14:00


Красивые таблицы в терминале

PrettyTable – это простая библиотека, предназначенная для быстрого и легкого представления табличных данных в виде ASCII. Модуль можно установить привычным способом через pip.

Для создания таблиц и работы с ними используется класс PrettyTable из этого модуля. Задать название для столбцов можно с помощью атрибута fields_name. Строки в таблицу добавляются путем вызова метода add_row.

Более того, модуль prettytable позволяет регулировать различные параметры, сортировать данные, работать с html, а также взаимодействовать с csv и sql таблицами. Так что возможностей у этого модуля предостаточно.

Подписывайтесь на канал 👉@pythonofff

Python академия

16 Nov, 05:00


Одноразовый метод в классе

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

Последней строчкой метода call является переопределение самого этого метода на другой, а именно normal_call. Таким образом, изначальный код call будет исполнен только один раз.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

15 Nov, 14:00


Создание процессов

Класс Process из встроенного модуля multiprocessing позволяет создавать процессы без прямого вызова функции fork.

При создании экземпляра Proccess необходимо передать функцию, которую требуется исполнить в отдельном дочернем процессе и аргументы этой функции. Процесс будет создан после вызова метода start. Внутри метода start будет вызван fork и будет исполнена функция в отдельном процессе.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

15 Nov, 05:00


Легкий веб-фреймворк

Bottle – это быстрый, простой и легкий микро-веб-фреймворк WSGI для Python. Он распространяется как единый файловый модуль и не имеет никаких зависимостей, кроме стандартной библиотеки Python.

Несмотря на свою минималистичность, Bottle предоставляет довольно широкие возможности, которых на 100% хватает для мелких и средних проектов. Вот список основных возможностей: routing, templates, POST-routing, обработка форм, cookies и сервер.

После запуска подобного примера можете перейти в браузере по адресу localhost:5000/hello/world и посмотреть на результат, полученный из всего пяти строк кода.

Подписывайтесь на канал 👉@pythonofff

Python академия

14 Nov, 14:00


Пример: использование метод remove() для удаления элемента из списка

В этом списке есть строки и целые числа. Есть повторяющиеся элементы: строка «Mars» и число 12.

Подписывайтесь на канал 👉@pythonofff

Python академия

14 Nov, 05:00


Использование списков в качестве стеков

Стек – абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (last in – first out). В переводе с английского "последним пришёл – первым вышел".

Списки в Python имеют удобные встроенные методы, которых достаточно для реализации такой структуры данных. Для добавления элемента в конец стека используем метод append, для извлечения – pop.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

13 Nov, 14:00


Обход дочерних элементов

С помощью атрибута children мы можем получить дочерние элементы тега.

Подписывайтесь на канал 👉@pythonofff

Python академия

13 Nov, 05:00


Превью из длинного текста

Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк.

Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод shorten из модуля textwrap.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

12 Nov, 14:00


Как сократить ссылки?

Когда мы работаем с URL часто возникает необходимость сократить длинную ссылку. Мы можем использовать специальные онлайн-сервисы типа bit.ly, которые сокращают URL до 50 символов. Мы создадим собственный инструмент для сокращения ссылок при помощи библиотеки pyshorteners.

Подписывайтесь на канал 👉@pythonofff

Python академия

12 Nov, 05:00


Паттерн проектирования Singleton

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

Метод __new__ вызывается для создания экземпляра класса, перед вызовом __init__. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).

В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.

То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.

Подписывайтесь на канал 👉@pythonofff

Python академия

08 Nov, 14:00


Не используйте обработку исключений слишком часто

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

Не стоит злоупотреблять try-except конструкциями, так как в большинстве случаев можно справиться с задачей, применяя обычные условия. Используйте обработку исключений только в крайних случаях.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

08 Nov, 05:00


Использование цикла for для перебора списка или кортежа

Список и кортеж – повторяемые объекты. Мы можем использовать цикл для перебора их элементов.

Подписывайтесь на канал 👉@pythonofff

Python академия

07 Nov, 14:00


Дополнение про property

Важно отметить, что property – это класс, реализованный через протокол дескриптора. Его методы setter, getter, deleter и их использование в качестве декораторов – синтаксический сахар.

Конструктор property принимает на вход аргументы fget, fset, fdel, которые должны быть функциями. Они отвечают за получение, установку нового значения и удаление атрибута соответственно.

Простыми словами, в примере property прикрепляет функции get_age и set_age к атрибуту age. Также можно было реализовать условный delete_age, который отвечал бы за удаление атрибута.

Подписывайтесь на канал 👉@pythonofff

Python академия

07 Nov, 05:00


Геттеры и сеттеры

В объектно-ориентированных языках распространено использование геттеров и сеттеров для безопасной работы с приватными полями. Например, в C# для этого есть удобная конструкция { get; set; }.

В Python геттер реализуется через декоратор @ property, а сеттер в виде @ свойство.setter. В примере метод геттера называется age, поэтому декоратор сеттера – @ age.setter.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

06 Nov, 14:00


FastAPI

FastAPI – фреймворк, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.

Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).

Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.

FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.

Подписывайтесь на канал 👉@pythonofff

Python академия

06 Nov, 05:00


3 трюка с itertools

Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции – chain. Она позволяет "склеивать" несколько итерируемых элементов в один.

Далее, accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

05 Nov, 14:00


Конвертируем изображения в PDF

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

Подписывайтесь на канал 👉@pythonofff

Python академия

05 Nov, 05:00


Нижнее подчеркивание

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

Во-первых, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны – например, в циклах for.

Во-вторых, интерактивный режим использует _ для хранения результата последнего выполненного выражения.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

04 Nov, 14:00


Функция itertools.cycle

В пайтон есть классный модуль itertools для создания собственных итераторов. Функции данного модуля довольно эффективны в работе, поэтому их часто используют в реальных проектах.

Сегодня мы бы хотели показать вам функцию cycle() из itertools. Данная функция принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элементы.

К примеру, функция cycle() из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную. Но важно при проходе при итерации по такому итератору предусмотреть выход из цикла (а не как у нас в первом случае с colors:). Так как это итератор, то мы можем использовать его для получения значений через функцию next(colors).

Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.

Подписывайтесь на канал 👉@pythonofff

Python академия

04 Nov, 05:00


Красивый вывод таблиц

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

Итак, имена столбцов задается с помощью атрибута table.field_names. А добавлять строки с данными в таблицу можно методом table.add_row([]), передавая туда список элементов.

Но даже если вы не фанат командной строки, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. В таком случае можно сохранить саму таблицу, вызвав метод table.get_string().

Подписывайтесь на канал 👉@pythonofff

Python академия

03 Nov, 14:00


Работа с ip адресами

Если вам приходится писать на Python программы для работы с сетью — это значит, что вам может очень пригодиться модуль ipaddress.

Одним из вариантов его использования является генерация списка IP-адресов из диапазона адресов, заданных в формате CIDR (Classless Inter-Domain Routing, или бесклассовая адресация).

Подписывайтесь на канал 👉@pythonofff

Python академия

03 Nov, 05:00


Используем pathlib вместо os

Стандартная библиотека Python 3 содержит модуль pathlib, включающий в себя функцию Path(), достаточную для полноценной работы с файловыми путями.

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

По сути эта библиотека заменяет ранее используемые для работы с путями функции из модуля os (например os.mkdir или os.path) на более удобные.

Подписывайтесь на канал 👉@pythonofff

Python академия

02 Nov, 19:43


Нахождение наиболее частых элементов списка

Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком Counter из библиотеки collections.

Метод Counter.most_common(x) возвращает x кортежей, в которых первое значение – элемент, а второе – количество его повторений.

Подписывайтесь на канал 👉@pythonofff

Python академия

01 Nov, 14:01


Random seed в Python

Генерация случайных чисел Python основана на предыдущем числе, поэтому использование системного времени – отличный способ гарантировать, что каждый раз, когда наша программа запускается, она генерирует разные числа. Мы можем использовать функцию random seed() для установки начального значения.

Подписывайтесь на канал 👉@pythonofff

Python академия

01 Nov, 05:00


Полезность модуля math

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

Его стоит импортировать тогда, когда вам необходимо работать с математикой, но не требуется избыточность модуля numpy. Например, можно импортировать число pi, как в примере.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

31 Oct, 14:01


Случайный список – choice(), shuffle(), sample()

Есть несколько функций для использования случайности в последовательности. Например, с помощью функции choice() вы можете получить случайный элемент из последовательности.

Подписывайтесь на канал 👉@pythonofff

Python академия

31 Oct, 05:00


Вычисление выражений Python

Вы наверняка знакомы с eval, но знаете ли вы о literal_eval? Вряд ли. Для безопасного исполнения выражений, содержащих исключительно литералы, вы можете делать так, как показано на картинке выше.

Между прочим, данная фича находится в языке уже очень давно.

Подписывайтесь на канал 👉@pythonofff

Python академия

30 Oct, 14:00


Копирование файлов с помощью метода shutil()

Мы можем использовать модуль shutil для копирования файлов в Python. Эта утилита позволяет нам выполнять операции копирования и перемещения для разных файлов.

Подписывайтесь на канал 👉@pythonofff

Python академия

30 Oct, 05:00


Прочитать произвольную строку из файла

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

И конечно же не обошлось без приветствия, вы специально заготовили несколько различных вариантов в файле text.txt:

Приветствую!
Здравствуйте!
Ку, здарова.
Добрый день!
Привет!

Чтобы вывести это на экран, может помочь функция getline из модуля linecache. В чем главное отличие этой функции от обычного метода чтения из файла? Функция getline кеширует все строчки файла в списке, так что следующие вызовы get_answer отработают моментально.

Подписывайтесь на канал 👉@pythonofff

Python академия

29 Oct, 14:00


Удаление файлов с помощью метода shutil.os.remove()

Модуль Python shutil предлагает метод remove() для удаления файлов из файловой системы.

Подписывайтесь на канал 👉@pythonofff

Python академия

29 Oct, 05:00


Ускоряем код с помощью векторизации

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

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

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

Подписывайтесь на канал 👉@pythonofff

Python академия

28 Oct, 14:00


Закрытие открытого файла с помощью метода close()

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

Подписывайтесь на канал 👉@pythonofff

Python академия

28 Oct, 05:00


Создание дочернего процесса

Метод os.fork() создаёт дочерний процесс в том же месте кода, вызывая системную функцию fork(), и возвращает PID (Process Identifier), который равен PID дочернего процесса в родительском процессе и нулю в новом.

Кстати, получается интересный случай, в коде примера выполняется и блок if, и else. Если не знать про os.fork() и посмотреть вывод подобного кода, то возникнет много вопросов.

Подписывайтесь на канал 👉@pythonofff

Python академия

27 Oct, 14:00


Функции str.split и rsplit() в Python

Функция split() в Python используется для разделения строки на список строк на основе разделителя.

В качестве разделителя используется аргумент sep. Если строка содержит последовательные разделители, возвращается пустая строка. Аргумент-разделитель также может состоять из нескольких символов

Подписывайтесь на канал 👉@pythonofff

Python академия

27 Oct, 05:00


Дескрипторы

Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор.

Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса __get__, __set__ или __delete__. После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор.

У данного объекта будет переопределено поведение при доступе к атрибуту (__get__), при присваивании значений (__set__) или при удалении (__delete__).

Подписывайтесь на канал 👉@pythonofff

Python академия

26 Oct, 14:00


Что можно делать в оболочке Python?

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

Символы >>> — это приглашение оболочки, тут вы можете вводить свои команды. Если ваши команды занимают несколько строк, например, при определении цикла, оболочка выводит троеточие …, которое сигнализирует о продолжении строки.

Подписывайтесь на канал 👉@pythonofff

Python академия

26 Oct, 11:37


Подборка Telegram каналов для программистов

Системное администрирование 📌
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин

https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Английский 📌
https://t.me/UchuEnglish Английский с нуля

Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак📌
https://t.me/Excel_lifehack

https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT

Python академия

26 Oct, 05:00


Разница между __str__ и __repr__

Оба магических метода __str__ и __repr__ используются для получения строкового представления объекта. Давайте разберемся, в чем же собственно разница между ними.

Метод __str__ используется для создания вывода для конечного пользователя, а __repr__ в основном используется для отладки и разработки. Другими словами, цель __repr__ – быть однозначным, а __str__ – читабельным.

Функция print() и встроенная функция str() используют метод __str__ для отображения строкового представления объекта, а вот встроенная функция repr() использует для этого метод __repr__.

Подписывайтесь на канал 👉@pythonofff

Python академия

25 Oct, 14:00


Как удалить элемент из списка с помощью индекса в Python

Для удаления элемента по индексу используйте pop(). Для этого также подойдет ключевое слово del.

Подписывайтесь на канал 👉@pythonofff

Python академия

25 Oct, 05:00


Наследование

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

В данном случае класс Person является родительским классом, также его называют базовым классом или суперклассом. А класс Employee называется дочерним классом или подклассом.

Наследование классов нужно для изменения поведения конкретного класса, а также для расширения его функционала.

Подписывайтесь на канал 👉@pythonofff

Python академия

24 Oct, 14:00


Непрерывная проверка

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

Иногда это может пригодиться, когда вы хотите, чтобы ваша программа ждала ввода и продолжала непрерывно проверять.

Подписывайтесь на канал 👉@pythonofff

Python академия

24 Oct, 05:00


Дробные числа

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

Можно использовать тип данных Decimal, который предоставит намного большую точность, но и его может не хватить в некоторых случаях.

Поэтому для идеальных вычислений лучше использовать Fraction, который представляет и хранит число в виде рациональной дроби.

Подписывайтесь на канал 👉@pythonofff

Python академия

23 Oct, 14:00


Оператор break

Оператор break используется для преждевременного выхода из цикла for. Он используется для прерывания цикла при выполнении определенного условия.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

23 Oct, 05:00


Инкремент с помощью __pos__

В Python нет операции инкремента ++ как в си-подобных языках, поэтому используется x += 1. Однако запись ++x является валидным кодом (но не x++), так как это просто два унарных оператора сложения.

При применении унарного плюса у объекта вызывается магический метод __pos__, то есть запись ++x можно понять как x.__pos__().__pos__(). Зная это, можно реализовать класс, который будет представлять число и поддерживать поведение инкремента.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

22 Oct, 14:00


Поиск всех HTML-элементов по названию

С помощью метода find_all мы можем найти все элементы, которые соответствуют некоторым критериям.

Подписывайтесь на канал 👉@pythonofff

Python академия

22 Oct, 05:00


Лимит рекурсии

В Python не поддерживается хвостовая рекурсия, из-за чего зачастую возникает RecursionError во время создания рекурсивных алгоритмов. Но с помощью модуля sys можно посмотреть и даже изменить максимальную глубину рекурсии.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

21 Oct, 14:00


Открываем сайт для парсинга через Requests + BeautifulSoup

Requests — это простая HTTP библиотека для Python. Она предоставляет методы для доступа к веб-ресурсам через HTTP запросы.

Подписывайтесь на канал 👉@pythonofff

Python академия

21 Oct, 05:00


Символы Юникода

Добавлять юникод-символы в строковые литералы можно не только с помощью их номеров, но и по их названиям.

Более того, такая запись символов юникода совместима и с f-строками, а это очень удобно.

Подписывайтесь на канал 👉@pythonofff

Python академия

20 Oct, 14:00


Удаление ключа из словаря при помощи ключевого слова del

Python также позволяет использовать ключевое слово del для удаления определенного ключа из словаря. Использование ключевого слова del является менее безопасным подходом, так как нет способа просто указать значение по умолчанию, как это можно сделать при использовании метода .pop().

Подписывайтесь на канал 👉@pythonofff

Python академия

20 Oct, 05:00


Создание словаря из набора ключей

Для создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions).

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

Подписывайтесь на канал 👉@pythonofff

Python академия

19 Oct, 14:01


Как переименовать файлы в Python

Чтобы переименовать файлы, мы воспользуемся методом rename() и применим его к каждому файлу. Предположим, мы хотим добавить к файлам префиксы «Odd» (нечетный) и «Even» (четный), основываясь на индексах.

Подписывайтесь на канал 👉@pythonofff

Python академия

19 Oct, 05:00


Функция reduce

Модуль functools позволяет хорошо раскрыть функциональные возможности Python. Например, в functools есть интересная функция reduce, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.

Таким образом, в примере выше reduce умножает 1 на 2, затем результат этого умножения на 3 и так далее.

Подписывайтесь на канал 👉@pythonofff

Python академия

18 Oct, 14:01


Чтение файлов и запись в них

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

Открыть файл
Выполнить операцию
Закрыть файл
Мы можем проделывать эти шаги, используя два паттерна. Объяснить их на словах сложно, но мы сделаем это при помощи кода.

Подписывайтесь на канал 👉@pythonofff

Python академия

18 Oct, 05:00


Функция zip

Функция zip создаёт итератор, который комбинирует элементы нескольких списков. Это позволяет осуществлять параллельный обход списков в циклах for или, например, выполнять параллельную сортировку.

Подписывайтесь на канал 👉@pythonofff

Python академия

17 Oct, 14:00


Распространенные команды pdb

Отладчик pdb — это интерактивная консольная утилита. Не познакомившись с его командами, вы не сможете использовать весь его потенциал.

Как и любой console log, pdb скажет вам, на какой строчке ваш код сломался.

Подписывайтесь на канал 👉@pythonofff

Python академия

17 Oct, 10:15


Скачивание постов и изображений профиля из Instagram

Всем нам часто попадаются хорошие посты в Instagram, которые хотелось бы сохранить на своем устройстве, чтобы иметь офлайн-доступ. Это можно сделать при помощи библиотеки instaloader.

Подписывайтесь на канал 👉@pythonofff

Python академия

14 Oct, 14:00


Сортировка словаря по значениям

Сортировка данных словаря по значениям ключей, а не по самим ключам, нередко ставит в тупик.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

14 Oct, 05:00


Как извлечь аудио из видеофайлов

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

Подписывайтесь на канал 👉@pythonofff

Python академия

13 Oct, 14:00


Дизассемблирование

Встроенный модуль dis позволяет декомпилировать написанную вами программу в байт-код Python.

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

Подписывайтесь на канал 👉@pythonofff

Python академия

13 Oct, 08:52


Подборка Telegram каналов для программистов

Системное администрирование 📌
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин

https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Английский 📌
https://t.me/UchuEnglish Английский с нуля

Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак📌
https://t.me/Excel_lifehack

https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT

Python академия

13 Oct, 05:00


Обнаружение плагиата

Один из важнейших факторов работы с текстовым контентом — плагиат. Не всегда возможно проверить каждый файл вручную, особенно, если у вас целый пакет файлов. Тут пригодится инструмент для выявления плагиата. Мы можем создать собственный детектор при помощи библиотеки difflib. Ее можно использовать для поиска сходства между двумя или несколькими файлами на одном устройстве.

Подписывайтесь на канал 👉@pythonofff

Python академия

12 Oct, 14:00


Wikipedia в Python

В случае, если вам не хватает прошлого howdoi, можете взглянуть на модуль, который обращается к API Википедии.

Устанавливается этот модуль через пакетный менеджер pip. А использовать его можно без всяких трудностей – всё самое важное показано на картинке.

Подписывайтесь на канал 👉@pythonofff

Python академия

12 Oct, 05:00


Перевод текста

Мы живем в многоязычном мире. А поскольку каждый человек может выучить не так уж много языков, то, чтобы понимать друг друга, нам нужны переводчики. Переводчиком может быть и программа. Для создания таких программ в Python есть специальная библиотека — Translator.

Подписывайтесь на канал 👉@pythonofff

Python академия

11 Oct, 15:01


Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥

Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате

Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.

Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!

Python академия

11 Oct, 14:00


Получаем и задаем лимит рекурсии

В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает RecursionError во время создания рекурсивных алгоритмов.

Но с помощью модуля sys можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти.

И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.

Подписывайтесь на канал 👉@pythonofff

Python академия

11 Oct, 05:00


Каждая функция должна выполнять какое-то одно действие и делать это хорошо

Пишите короткие и простые функции, выполняющие одну задачу. Полезный прием: если в имени вашей функции появляется союз «и», лучше разделить такую функцию на две разных.

Подписывайтесь на канал 👉@pythonofff

Python академия

10 Oct, 14:00


Получаем метаданные из аудиофайла

Для извлечения метаданных из аудиофайлов, а также их редактирования есть очень удобный модуль mutagen. Модуль позволяет получить всю основную информацию об аудиофайле: длину, битрейт, исполнителя и так далее.

Модуль поддерживает форматы метаданных APEv2 и ID3v2, анализируя все кадры ID3v2.4.

Подписывайтесь на канал 👉@pythonofff

Python академия

10 Oct, 05:00


Имя функции не определено

В этом примере мы добавили лишнюю букву o при вызове функции — sayHelloo() вместо sayHello(). Это просто опечатка, однако она вызовет ошибку, потому что функции с таким именем не существует.

Итак, мы получили ошибку: NameError: name 'sayHelloo' is not defined. Подобные орфографические ошибки очень легко пропустить. Сообщение об ошибке обычно помогает исправить это.

Подписывайтесь на канал 👉@pythonofff

Python академия

09 Oct, 14:00


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

Исключения — это тип данных, который нужен для того, что бы сообщать нам об ошибках.

Существует базовое исключение BaseException от которого наследуются все остальные исключения.

В блоке try мы выполняем инструкцию, которая может породить исключение, а в блоке except мы ловим ошибки и делаем свои операции.

Стоит учесть, что мы можем делать бесконечное количество вложенных блоков.

Грамотным способом является вылавливать только те исключения, которые мы ожидаем.

Подписывайтесь на канал 👉@pythonofff

Python академия

09 Oct, 05:00


Генераторные выражения (generator expressions)

Попробуем использовать генераторные выражения (для получения среза будем использовать функцию islice из itertools, которая возвращает итератор по срезу)

Подписывайтесь на канал 👉@pythonofff

Python академия

08 Oct, 14:00


Управление версиями Python

Инструмент pyenv позволяет легко переключаться между несколькими версиями Python. Он прост в использовании и следует лучшим традициям UNIX, где каждая утилита хорошо выполняет одну свою задачу.

Вкратце, основной функционал pyenv выглядит так:

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

Подписывайтесь на канал 👉@pythonofff

Python академия

08 Oct, 05:00


Генераторные фунции (generator functions)

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

Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield

Подписывайтесь на канал 👉@pythonofff

Python академия

07 Oct, 14:00


Аннотации типов

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

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

Подписывайтесь на канал 👉@pythonofff

Python академия

07 Oct, 05:00


Профилирование

Профилирование — это процесс, который помогает при работе с данными и их обработке. Пожалуй, одна из самых известных Python-библиотек для этого – Pandas. Данная библиотека является довольно понятной в использовании и благодаря ей можно быстро выполнять анализ данных. Кроме того, Pandas имеет встроенную функцию .plot() как часть класса DataFrame, что позволяет демонстрировать на графиках обрабатываемые данные.

Подписывайтесь на канал 👉@pythonofff