TGViewer
Channel Public Channel
Python академия

Python академия

@pythonofff

Учи Python быстро и легко.

Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам.

✔ Подходит для прокачки навыков кодирования.

По всем вопросам @evgenycarter
Subscribers
7.13K
Photos
2.6K
Videos
4
Links
461

Showing posts older than #2578 · Back to latest

Older Posts 20 shown
Post #2577 1.06K
Частичное применение

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 4
Post #2575 1.05K
Нелокальная переменная во вложенной функции

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

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

В Python нелокальные переменные по умолчанию доступны только для чтения. Если нам необходимо их модифицировать, то мы должны объявить их явно как нелокальные (используя ключевое слово nonlocal).

Подписывайтесь на канал 👉@pythonofff
  • 🔥 3
  • 👍 1
Post #2574 1.1K
Заглушка в коде

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

Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.

Или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе.

Подписывайтесь на канал 👉@pythonofff
  • 👍 6
Post #2572 1.08K
Коротко о том, что такое метаклассы

Предположим, что вы знаете разницу между классами и объектами. Тогда метаклассы не должны быть для вас слишком уж сложными. Если кратко, то они являются классами для классов (отсюда и «мета» в их названии).

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

На скрине, самая простая реализация метакласса, которая ничего не делает.

Подписывайтесь на канал 👉@pythonofff
Post #2571 1.06K
Подборка Telegram каналов для программистов

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

https://t.me/linux_odmin Linux: Системный администратор
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
  • 👏 3
Post #2570 1.04K
⁠Блок else в циклах for

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

В Python блок else может быть представлен не только в условных конструкциях после if, но и в циклах после for и while. В данном случае код внутри else выполняется, только если цикл не был прерван с помощью break.

Типичный пример использования – поиск чего-либо в цикле с использованием ключевого слова break при нахождении, как показано на картинке. Исходный код текстом можете найти в нашем чате.

Подписывайтесь на канал 👉@pythonofff
  • ❤ 4
  • 👍 1
Post #2568 1.08K
Метод items()

Метод items() используется для возврата списка кортежей с парами всех ключей и значений словаря.

Синтаксис:dictionary.items()

Данный метод не принимает никаких аргументов.

Приведем пример использования данной функции.

Объявлен словарь с именем products. Ключи содержат названия продуктов, а значения — их цены. Используем для нашего словаря метод items() и сохраним в другой переменной с именем itemlist, а затем выведем на экран.

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
Post #2567 1.08K
Делаем многоуровневый словарь плоским при помощи собственной рекурсивной функции

Быстрый поиск в Google приводит нас на StackOverflow. Первый же ответ предлагает рекурсивную функцию, которая перебирает словарь и возвращает «уплощенный» экземпляр. Вдохновившись этой функцией, давайте создадим немного более продвинутую версию.

Можем начать с type hinting (явного указания типов). Это улучшит читаемость и сделает код типобезопасным.

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
Post #2565 1.04K
Простая обрезка изображения в Pillow

Обозначим область обрезки изображения с помощью кортежа box=(left, upper, right, lower).

Верхней левой координате соответствует (x, y) = (left, upper), а нижней правой — (x, y) = (right, lower). Область, которую нужно обрезать — left <= x <right и upper <= y <lower, а пиксели x = right и y = lower не включаются.

Не забудьте, что box используется вместе со скобками ().

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
Post #2564 1.11K
Класс collections.deque

Класс deque реализует двухконечную очередь, которая поддерживает добавление и удаление элементов с обоих концов в течение О(1) времени.

Объекты deque представлены в виде двусвязных списков, что дает им превосходную производительность для входящих и выходящих элементов, но при этом у него плохая производительность O(n) при работе со случайно принимаемыми элементами в середине очереди.

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 2
Post #2562 1K
Функция itertools.cycle

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

В лекции, посвященной итераторам и генераторам, мы также показываем полезные функции из пакета itertools. К примеру, метод cycle из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную.

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 2
Post #2561 1.08K
Как обрабатывать исключения?

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

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 2
Post #2559 1.05K
Создание функций на основе других с "замороженными" параметрами

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
Post #2558 1.11K
Примеры использования модуля os в Python

os.chdir() и os.getcwd()

Функция os.chdir позволяет нам вносить изменения в каталоге, который мы в данный момент используем в сессии.

Если вам нужно знать, какой путь вы в данный момент используете, для этой нужно вызвать os.getcwd(). Указанный код демонстрирует нам, что мы открыли директорию по умолчанию в Пайтоне, после запуска данного кода в IDLE.

После этого мы изменили папки, при помощи os.chdir().

Подписывайтесь на канал 👉@pythonofff
Post #2551 1.03K
all и any

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

all возвращает True, если все объекты равны True или удовлетворяют условию.

any в свою очередь делает то же самое, но возвращает True, если хотя бы один равен True.

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 4
  • ❤ 2
Post #2550 990
Продвинутая работа со списками

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

В общей форме формирования среза выглядит следующим образом:

list[start:end:step]

Комбинации параметров помогут достичь необходимого результата.

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
  • ❤ 1
  • 🎉 1
Post #2548 1K
Как удалить пустые строки в списке на python?

array = ['Stephen King', '', 'J. K. Rowling', '', 'Oliver Bowden']
filtred_array = list(filter(None, array))
print(filtred_array)
# Вывод : ['Stephen King', 'J. K. Rowling', 'Oliver Bowden']

Подписывайтесь на канал 👉@pythonofff
  • 👍 4
Post #2546 898
Блок else в циклах.

Блок else в циклах for и while — это конструкция, которая позволяет выполнить определенный блок кода только в случае, если цикл завершился без использования оператора break. В цикле while условие проверяется перед каждой итерацией, и если оно истинно, то выполняется тело цикла. Цикл выполняется до тех пор, пока условие не станет ложным. В случае цикла for, он проходит по элементам последовательности (например, списку) и выполняет указанный блок кода для каждого элемента.

Давайте рассмотрим пример использования блока else в цикле for. Предположим, у нас есть функция find_needle, которая принимает на вход список haystack и элемент needle, и ищет needle в haystack. Мы хотим вывести сообщение, если элемент needle не найден в haystack. Для этого мы можем использовать цикл for для прохода по элементам haystack и проверки на равенство с needle. Если элемент найден, мы выводим сообщение и прерываем цикл с помощью оператора break. Если цикл завершается без прерывания, то выполняется блок else.


def find_needle(haystack, needle):
for item in haystack:
if item == needle:
print("Needle found!")
break
else:
print("Needle not found in haystack.")


В данном примере, если элемент needle найден в haystack, то будет выведено сообщение «Needle found!». Если же элемент needle не найден, то будет выполнен блок else и выведено сообщение «Needle not found in haystack.». Это позволяет нам выполнить определенные действия в зависимости от результата поиска элемента в списке.

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


Подписывайтесь на канал 👉@pythonofff
  • 👍 4
Post #2545 891
Библиотека Numpy

При создании массивом мы получаем тип ndarray.

Рассмотрим наиболее часты атрибуты (не методы!) применимые к массивам:

ndim - число измерений (чаще их называют "оси") массива.

shape - размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно ndim.

size - количество элементов массива. Очевидно, равно произведению всех элементов атрибута shape.

dtype - объект, описывающий тип элементов массива

itemsize - размер каждого элемента массива в байтах.

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
Post #2543 941
⁠Кэширование функций

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

Давайте реализуем калькулятор чисел Фибоначчи с использованием кэша. Советую попробовать запустить любую рекурсивную функцию с кэшированием и без него, прирост в скорости замечается сразу.

Подписывайтесь на канал 👉@pythonofff
  • 👍 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →