Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Новые бесплатные курсы в канале Selectel Newsfeed.
Подойдут всем: от новичков до продвинутых айтишников.
Вас ждут обзоры, инструкции и статьи, которые помогут разобраться в темах структурно и последовательно.
Вступайте в сообщество IT-специалистов в Telegram от Selectel.
Подписаться
#реклама 16+
О рекламодателе
Геттеры и сеттеры
В объектно-ориентированных языках распространено использование геттеров и сеттеров для безопасной работы с приватными полями. Например, в C# для этого есть удобная конструкция { get; set; }.
В Python геттер реализуется через декоратор @property
, а сеттер в виде @свойство.setter
. В примере метод геттера называется age, поэтому декоратор сеттера – @age.setter
.
Оба метода должны иметь одинаковое название, по которому можно будет обращаться как к обычному атрибуту.
Подписывайтесь на канал 👉@pythonofff
Работа с argparse
Модуль argparse в Python предоставляет удобный и гибкий способ анализа аргументов командной строки. Он позволяет определять как позиционные, так и именованные аргументы, указывать значения по умолчанию, добавлять справочные сообщения для пользователей и многое другое. Этот модуль является предпочтительным выбором для работы с аргументами командной строки в Python благодаря своей простоте и мощности.
Для использования модуля argparse сначала необходимо импортировать его в свой скрипт. Далее, можно определить парсер аргументов и добавить к нему необходимые аргументы. Например, чтобы создать парсер с одним позиционным аргументом и одним именованным аргументом, можно написать следующий код:
import argparse
parser = argparse.ArgumentParser(description='Описание программы')
parser.add_argument('позиционный_аргумент', type=int, help='Справка для позиционного аргумента')
parser.add_argument('--именованный_аргумент', default='значение_по_умолчанию', help='Справка для именованного аргумента')
args = parser.parse_args()
print(args.позиционный_аргумент)
print(args.именованный_аргумент)
Используем lambda, sum() и map()
Лямбда-функция в Python — это просто функция Python. Но это некий особенный тип с ограниченными возможностями.
Лямбда-функции вместе с sum() и map() также могут решить конкретно эту задачу подсчета общего числа вхождений определенного элемента в строку. Этот метод использует sum() для суммирования всех вхождений, полученных с помощью map().
Подписывайтесь на канал 👉@pythonofff
Что делают OrderedDict и fromkeys()?
OrderedDict это словарь, который запоминает порядок вставки ключей. Если новое вхождение перезаписывает существующее вхождение, исходная позиция вставки остается неизменной.
fromkeys() создает новый словарь и возвращает список ключей. Ключи для нового словаря берутся из seq, а значения — из value (если заданы). Синтаксис метода fromkeys() — fromkeys(seq[, value]).
Параметры:
seq: Это список значений, которые будут использоваться при подготовке ключей для словаря.
value: Опционально; если задать, значение будет установлено в качестве value.
Подписывайтесь на канал 👉@pythonofff
Ведем набор учеников 3-10 классов на новый учебный год!
Московская школа программистов - это не курсы, а школа с государственной лицензией, которая обучает детей IT с 2001 года. Мы сотрудничаем с МФТИ, НИУ ВШЭ, Яндекс и Физтехпарк
Что получит ребенок, в результате обучения:
- Участие и победы в олимпиадах всероссийского и международного уровня
- Поступление в престижные технические вузы России и работу в известных IT-компаниях: Apple, Google, Yandex, Nvidia и других
- Практику на реальных IT-проектах
- Усидчивость, целеустремленность и умение работать в команде
- Сдача ЕГЭ/ОГЭ на высокие баллы
Сейчас идет набор в виртуальный класс. В этом формате, дети в небольших группах обучаются с преподавателем онлайн в реальном времени.
Эффективно как очно.
Позаботьтесь о том, чтобы ребенок стал востребованным IT-специалистом!
Зарегистрироваться
#реклама 16+
vc.informatics.ru
О рекламодателе
Заглушка в коде
В ходе исполнения оператора pass ничего не происходит, поэтому он может использоваться в качестве некой заглушки в тех местах, где это синтаксически необходимо.
Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.
Или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе.
Подписывайтесь на канал 👉@pythonofff
Коротко о том, что такое метаклассы
Предположим, что вы знаете разницу между классами и объектами. Тогда метаклассы не должны быть для вас слишком уж сложными. Если кратко, то они являются классами для классов (отсюда и «мета» в их названии).
Проще говоря, в то время как классы являются чертежами для объектов, метаклассы являются чертежами для классов. Класс является описанием, когда мы создаем его экземпляр, тогда как метакласс является описанием класса, и существует только когда определен класс.
На скрине, самая простая реализация метакласса, которая ничего не делает.
Подписывайтесь на канал 👉@pythonofff
Блок else в циклах for
Хауди хо, друзья. Практически все новички теряются при виде блока else после циклов, поэтому сейчас немного проясним ситуацию.
В Python блок else может быть представлен не только в условных конструкциях после if, но и в циклах после for и while. В данном случае код внутри else выполняется, только если цикл не был прерван с помощью break.
Типичный пример использования – поиск чего-либо в цикле с использованием ключевого слова break при нахождении, как показано на картинке. Исходный код текстом можете найти в нашем чате.
Подписывайтесь на канал 👉@pythonofff
Делаем многоуровневый словарь плоским при помощи собственной рекурсивной функции
Быстрый поиск в Google приводит нас на StackOverflow. Первый же ответ предлагает рекурсивную функцию, которая перебирает словарь и возвращает «уплощенный» экземпляр. Вдохновившись этой функцией, давайте создадим немного более продвинутую версию.
Можем начать с type hinting (явного указания типов). Это улучшит читаемость и сделает код типобезопасным.
Подписывайтесь на канал 👉@pythonofff
Класс collections.deque
Класс deque реализует двухконечную очередь, которая поддерживает добавление и удаление элементов с обоих концов в течение О(1) времени.
Объекты deque представлены в виде двусвязных списков, что дает им превосходную производительность для входящих и выходящих элементов, но при этом у него плохая производительность O(n) при работе со случайно принимаемыми элементами в середине очереди.
В связи с тем, что deque поддерживает вставку и удаление элементов одинаково хорошо, они могут поддерживать и очереди и стеки collections.deque это отличное решение, если вы ищите структуру данных очереди в Python в стандартной библиотеке.
Подписывайтесь на канал 👉@pythonofff
Как обрабатывать исключения?
Обработка исключений в Пайтон – это очень просто. Потратим немного времени и напишем несколько примеров, которые их вызовут. Мы начнем с одной из самых элементарных проблем: деление на ноль.
Если мы обратимся к урокам элементарной математики, то вспомним, что на ноль делить нельзя. В Пайтоне данная операция вызовет ошибку, как мы можем видеть в примере выше. Чтобы поймать ошибку, мы завернем операцию в оператор try/except.
Подписывайтесь на канал 👉@pythonofff
Примеры использования модуля os в Python
os.chdir() и os.getcwd()
Функция os.chdir позволяет нам вносить изменения в каталоге, который мы в данный момент используем в сессии.
Если вам нужно знать, какой путь вы в данный момент используете, для этой нужно вызвать os.getcwd(). Указанный код демонстрирует нам, что мы открыли директорию по умолчанию в Пайтоне, после запуска данного кода в IDLE.
После этого мы изменили папки, при помощи os.chdir().
Подписывайтесь на канал 👉@pythonofff
Продвинутая работа со списками
При работе со списками крайне полезно знать как правильно формировать срезы списка. В приложениях, активно использующих группы данных - срезы незаменимый инструмент.
В общей форме формирования среза выглядит следующим образом:
list[start:end:step]
Комбинации параметров помогут достичь необходимого результата.
Подписывайтесь на канал 👉@pythonofff
Как удалить пустые строки в списке на 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
Регулярные выражения (REGEX)
Регулярные выражения — более гибкий способ нахождения подстрок в строках. В Python есть встроенный модуль, позволяющий работать с регулярными выражениями, — re. Модуль re содержит функцию search, которая позволит вам найти подстроку
Если вам нужны сложные сопоставления, например, учет регистра — этот метод подойдет вам лучше всего. Но у него есть и недостатки: сложность и скорость работы. То есть, в простеньких задачах его лучше не использовать.
Подписывайтесь на канал 👉@pythonofff
Настройка вывода NumPy
Библиотека NumPy (Numerical Python) является одной из наиболее популярных библиотек для работы с массивами данных в Python. Она предоставляет множество удобных функций для работы с многомерными массивами, линейной алгеброй, случайными числами и многим другим. Однако, при выводе данных из массивов NumPy, форматирование может быть не самым удобным и красивым. Часто вывод выглядит не очень читабельно, особенно при большом количестве элементов.
Для управления выводом данных из массивов NumPy существует метод set_printoptions()
. Этот метод позволяет настроить различные параметры вывода данных, такие как количество отображаемых цифр после запятой, количество обрезаемых элементов в массиве, количество элементов в начале и в конце каждой размерности массива и другие.
import numpy as np
# Установка параметров вывода данных
np.set_printoptions(precision=4, threshold=5, edgeitems=2, linewidth=80, suppress=True, nanstr='NaN', infstr='inf')
# Пример массива NumPy
arr = np.array([1.23456789, 2.3456789, 3.456789, 4.56789, 5.6789, 6.789])
# Вывод массива с установленными параметрами
print(arr)
set_printoptions()
вы можете легко настроить вывод данных из массивов NumPy так, чтобы он соответствовал вашим потребностям и был более читабельным. Это особенно полезно при работе с большими массивами данных, когда важно иметь четкое представление о содержимом массива.Используем collection.Counter ()
Это менее известный метод для получения количества вхождений элемента в любой контейнер в Python. Он также выполняет задачу, аналогичную описанным выше двум методам, просто является функцией другой библиотеки, т.е. collections.
Класс Counter() модуля collections - это подкласс словаря dict для подсчета хеш-объектов (неизменяемых, таких как строки, числа, кортежи и т.д.). Это коллекция, в которой элементы хранятся в виде словарных ключей, а их счетчики хранятся в виде значений словаря.
Счетчик может быть любым целочисленным значением, включая ноль или отрицательное число. Класс collections.Counter() похож на мультимножества в других языках программирования.
Подписывайтесь на канал 👉@pythonofff
Получи грант на обучение в Центральном университете
Прояви себя, получи грант до 2,8 млн на обучение ИТ и бизнесу в вузе.
Для школьников 10-х и 11-х классов, СПО.
Подать заявку
#реклама
apply.centraluniversity.ru
О рекламодателе
Частичное применение
Сегодня поговорим об одном интересном концепте из области функционального программирования. Использовать будем функцию partial из стандартной библиотеки functools.
Предоставление функции меньшего количества аргументов, чем она ожидает, называется частичным применением функций.
Другими словами, это такая функция, которая принимает другую функцию с несколькими параметрами и возвращает функцию, но уже с меньшим количеством параметров.
Подписывайтесь на канал 👉@pythonofff
Нелокальная переменная во вложенной функции
Прежде чем перейти к тому, что такое замыкание, мы должны сначала понять, что такое вложенная функция и нелокальная (nonlocal) переменная.
Функция, определенная внутри другой функции, называется вложенной функцией. Вложенные функции могут получать доступ к переменным из локальной области видимости объемлющих функций (enclosing scope).
В Python нелокальные переменные по умолчанию доступны только для чтения. Если нам необходимо их модифицировать, то мы должны объявить их явно как нелокальные (используя ключевое слово nonlocal).
Подписывайтесь на канал 👉@pythonofff
Курс «Разработчик 1С» от Яндекса.
За 6 месяцев освоите один из самых простых языков программирования и пройдёте стажировку
Зарегистрироваться
#реклама 16+
practicum.yandex.ru
О рекламодателе
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/sysadmin_girl Девочка Сисадмин
/channel/srv_admin_linux Админские угодья
/channel/linux_srv Типичный Сисадмин
/channel/linux_odmin Linux: Системный администратор
/channel/devops_star DevOps Star (Звезда Девопса)
/channel/i_linux Системный администратор
/channel/linuxchmod Linux
/channel/sys_adminos Системный Администратор
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
/channel/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
/channel/Excel_lifehack
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Метод items()
Метод items() используется для возврата списка кортежей с парами всех ключей и значений словаря.
Синтаксис:dictionary.items()
Данный метод не принимает никаких аргументов.
Приведем пример использования данной функции.
Объявлен словарь с именем products. Ключи содержат названия продуктов, а значения — их цены. Используем для нашего словаря метод items() и сохраним в другой переменной с именем itemlist, а затем выведем на экран.
Подписывайтесь на канал 👉@pythonofff
Простая обрезка изображения в 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
Функция itertools.cycle
Напоминаю, что у нас всё ещё идёт набор на курс, который начинается уже в этот понедельник. А сейчас покажу вам кое-что интересное из курса.
В лекции, посвященной итераторам и генераторам, мы также показываем полезные функции из пакета itertools. К примеру, метод cycle из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную.
А далее, например, можно воспользоваться islice. Он возвращает конечный итератор из любой большой или даже бесконечной последовательности.
Подписывайтесь на канал 👉@pythonofff
Создание функций на основе других с "замороженными" параметрами
Привет, сегодня поговорим про очень важную функцию partial из пакета functools. Более подробно мы рассказываем про это в курсе, но сейчас дадим краткое описание работы.
Данная функция принимает в качестве первого аргумента любую другую функцию, а дальше параметры, которые будут автоматически переданы в эту функцию при вызове уже новой функции, которую вернёт partial.
Например, можем создать функцию, которая умножает два числа, а потом "заморозить" один аргумент, как на картинке.
Подписывайтесь на канал 👉@pythonofff
all и any
Полезные функции, которые помогут узнать есть ли определенные значения в объекте.
all возвращает True, если все объекты равны True или удовлетворяют условию.
any в свою очередь делает то же самое, но возвращает True, если хотя бы один равен True.
Теперь нет необходимости перебирать списки, достаточно использовать данные функции.
Подписывайтесь на канал 👉@pythonofff
Получи грант на обучение в Центральном университете
Прояви себя, получи грант до 2,8 млн на обучение ИТ и бизнесу в вузе.
Для школьников 10-х и 11-х классов, СПО.
Подать заявку
#реклама
apply.centraluniversity.ru
О рекламодателе
😎 Хотите стать Python-разработчиком и начать успешную карьеру в IT? Время действовать!
🐍 Python — самый востребованный язык. На курсе вы изучите синтаксис, фреймворки Django и FastAPI, научитесь работать с базами данных и создадите портфолио, которое привлекает топовые команды.
🚀 Программа составлена практикующими экспертами, а выпускники OTUS высоко ценятся среди ведущих компаний. Обучение с нуля до Junior-разработчика за 6 месяцев!
➡️ Старт уже близко — успейте занять место в группе! Узнать больше и получить скидку до 15% по промокоду PythonBasic_5 : https://vk.cc/cHTGufРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Срок действия промокода до 30.01.2025