#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Начинаю серию публикаций полезного материала по изучению DA/DS. Если вам нравится такой формат пишите в комментариях.

Основы Python

Книги:
- Книга «Python для детей», Джейсон Бриггс Машинное обучение, big data, веб-аналитика и создание роботов — всё это раньше звучало как фразы из фильмов про будущее, а теперь это наше настоящее. Современные дети много времени проводят за компьютером — дайте же им шанс научиться программировать Смотреть описание
- Книга «Код. Тайный язык информатики», Чарльз Петцольд Книга, не только объясняющая как и почему работают компьютеры, но и приучающая к инженерному мышлению. Смотреть описание
- Книги по изучению Python Смотреть подборку
- Книга «Python для сложных задач. Наука о данных и машинное обучение», Вандер Плас Дж. Подробное руководство по самым разным вычислительным и статистическим методам, без которых немыслима любая интенсивная обработка данных, научные исследования и передовые разработки. Смотреть описание
- Книга «Python. Карманный справочник», Лутц Марк В лаконичной форме здесь представлены все необходимые сведения о типах данных и операторах Python, специальных методах, встроенных функциях и исключениях, наиболее употребительных стандартных библиотечных модулях и других примечательных языковых средствах Python. Смотреть описание
- Книга «Automate the Boring Stuff with Python», Al Sweigart Книга про автоматизацию различной рабочей рутины Читать книгу

Полезные материалы:
- Курс «Python для начинающих» от Code Basics Первый модуль посвящен азам построения программ на Python. Он готовит плацдарм для написания осмысленных программ. Познакомиться с курсом
- Чтобы совершать меньше ошибок и разобраться в том, как ваш код работает, научитесь его дебажить и отлаживать. В этом помогут вот эти статьи:
- Отладка Python приложений с помощью pdb
- Профилирование и отладка Python
- Отладка (юнит с Хекслета)
- Python 3 Cheat Sheet (Шпаргалка по основам Python)

Дополнительные материалы:
- Основы Python — http://pythontutor.ru Отличная платформа, которая показывает, как вообще думает Python. И огромный плюс, что тут показывают чего от вас хотят, т.е. дают вопрос, набор данных и ответ, а вам нужно написать код.
- https://pythonworld.ru/samouchitel-python — очень хороший сайт, который дает не только основы, но и хорошо разобраны многие модули (например, Pandas).
- https://github.com/whitehorn/pyLearn — Python для начинающих. В своё время, когда я учился программировать на python, я понял, что лучший способ не забыть "как именно вызывать вот ту функцию, которая делает xyz" - это сесть и написать шпаргалку. Со временем их стало много, появился ipython notebook, который теперь jupyter notebook. В итоге я оформил небольшой вводный курс по python для студентов в виде серии jupyter notebook's (от install до библиотеки эффективных численных вычислений numpy). С курсом можно ознакомиться на моей страничке в GitHub
- Книга A Byte of Python: http://wombat.org.ua/AByteOfPython/
- Занятная статья с хаками для анализа данных http://proglib.io/p/analysis-hacks/
- Материал про форматирование текста через f-строки — https://shultais.education/blog/python-f-strings
- про словари есть тут http://pythontutor.ru/lessons/dicts/
- Lambda, map and filter https://medium.com/better-programming/lambda-map-and-filter-in-python-4935f248593
- https://www.codewars.com/ - выбираете питон и решаете различные задачки на нем. Гугля различные способы, читаете чужие решения, учитесь понимать чужой код, находите новые способы.
5 важных аспектов замыканий в Python

https://nuancesprog.ru/p/13907/

@machinelearning_ru
Forwarded from Python Academy
Работаем со временем без головной боли

При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:

— Их слишком много: datetime, time, calendar, dateutil, pytz и другие;
— В них слишком много типов: date, time, datetime, tzinfo, timedelta, relativedelta и т. д.

И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип Arrow.

Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал datetime в Arrow и обратно.

Еще из приятных бонусов: там есть функция humanize, которая конвертирует время в читаемый текст.

#время #arrow
Forwarded from Python Academy
Частичное применение

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

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

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

#functools
Forwarded from Python Academy
Порядок разрешения методов

В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.

Этот порядок можно получить при помощи атрибута __mro__. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value, Python будет искать сначала в классе A, далее в B, затем в C и в самом конце в object

Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.

#классы
Forwarded from Python Academy
Точка входа

В некоторых языках программирования есть функции main(), с которых начинается выполнение программы. Но в Python весь код исполняется построчно.

Как вариант, многие пишут основную логику программы в обычную функцию main(), а вызывают ее только в условии if __name__ == '__main__'. Здесь стоит объяснить отдельно про то, что такое __name__.

Переменная __name__ — это специальная переменная, которая будет равна '__main__', только если файл запускается как основная программа. А при импорте в качестве модуля выставляется равной имени модуля.

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

#main
Forwarded from Python Academy
Получаем календарь

В модуле calendar есть функция month(), которая вернет календарь указанного месяца в виде строки, как показано в примере. А функция calendar() выдаст целый год.

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

Кстати, модуль является встроенным, отдельно его устанавливать не нужно.

#calendar
Forwarded from Python Academy
Создаем контекстный менеджер с помощью декоратора

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

Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор @contextmanager из встроенного пакета contextlib.

Первая часть функции tag, которая идёт до yield, выполняется при входе в блок with. Затем исполняется сам этот блок, а после этого завершается оставшаяся часть, которая идет после yield.

 #contextlib
Forwarded from Python Academy
Редирект вывода программы

В contextlib есть еще один прикольный контекстный менеджер — redirect_stdout, позволяющий перенаправить стандартный вывод программы.

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

Таким образом, данные из print() в контекстом менеджере будут переправлены в открытый ранее файл, так как мы его передали в аргумент redirect_stdout.

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

#contextlib
Forwarded from Python Academy
ООП: композиция

Композиция — это отношение, при котором объекты одного класса связаны с объектами другого. Такой способ организации взаимодействия между классами также называется ассоциацией.

Как правило, в этом случае объект одного из классов (в примере выше это Salary) является полем другого (Employee). Сложного здесь, как вы видите, ничего нет.

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

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

#классы #ооп
Forwarded from Python Academy
Считаем ссылки на объект

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

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

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

В примере выше продемонстрирован простой способ, как можно посмотреть количество ссылок у объекта.

#ctypes
Forwarded from Python Academy
Пакетный менеджер pip

Для работы с пакетами в Python есть специальная утилита pip — устанавливается она сразу вместе с интерпретатором.

Установить или удалить пакет можно через команды install и uninstall. После них нужно перечислить необходимые пакеты через пробел.

Команды list и freeze покажут все пакеты в текущем окружении, а также их версии. Обратите внимание на то, как выглядит вывод каждой из них.

А с помощью show можно посмотреть информацию о конкретном пакете: название, версию, описание, автора, лицензию и другое.

#pip
Forwarded from Python Academy
Ключевое слово nonlocal

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

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

Основное различие с global в том, что с помощью nonlocal нельзя получить переменные из глобальной области видимости.

#переменные #nonlocal