#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Moscow Python (Valentin Dombrovsky)
На этой неделе мы будем выкладывать видео с Moscow Python Conf Online, которая прошла в марте этого года.

Первое видео: Mastering a data pipeline with Python / Robson Luis Monteiro Junior (Microsoft)

Building data pipelines are a consolidated task, there are a vast number of tools that automate and help developers to create data pipelines with few clicks on the cloud. It might solve non-complex or well-defined standard problems. This presentation is a demystification of years of experience and painful mistakes using Python as a core to create reliable data pipelines and manage insanely amount of valuable data. Let's cover how each piece fits into this puzzle: data acquisition, ingestion, transformation, storage, workflow management and serving. Also, we'll walk through best practices and possible issues. We'll cover PySpark vs Dask and Pandas, Airflow, and Apache Arrow as a new approach.

https://www.youtube.com/watch?v=25fUlUsmg38
​​Как одной математической формулой по номеру месяца посчитать количество дней в нем?

Попробуем написать функцию f(x), которая бы давала следующий список значений (таблица №1), то есть количество дней в месяцах. Помимо стандартных арифметических операций, мы будем использовать целочисленное деление и взятие остатка по модулю.

Обычно количество дней в месяце колеблется между 30 и 31. При этом, можно заметить зависимость этого числа от четности месяца — значит, воспользуемся операцией взятия остатка по модулю 2. Кажется, это должно быть нечто, вроде:

f₁(x) = 30 + x % 2
# таблица №2

Пока что не обращая внимания на февраль, нам нужно, чтобы +1 в делимом «активировалось» только при достижении аргументом значений, больших 8. При этом значения аргумента не могут превосходить 12. Значит, нам идеально подойдет целочисленное деление аргумента на 8:

f₃(x) = 30 + (x + x // 8) % 2
# таблица №3

Все правильно, кроме февраля. Как неожиданно. В самой последней версии нашей формулы февралю достались целых 30 дней. А потому нам нужно отсечь у него пару дней. Естественно, от этого пострадают и еще какие-то месяцы, поэтому нам придется пожертвовать именно январем, затем подправив формулу и для него. Отсечь дни для первого и второго месяцев можно с помощью выражения 2 % x. Тогда наша формула принимает уже следующий вид:

f₄(x) = 28 + (x + x // 8) % 2 + 2 % x
# таблица №4

Остался последний шаг — подлатать январь. Это сделать не так сложно: просто добавим 2 дня только к нему, т.е. к такому месяцу, чей номер меньше либо равен единице. Как вам идея использовать для этой цели 1 // x? Проверяем:

f₅(x) = 28 + (x + x // 8) % 2 + 2 % x + 1 // x * 2
# таблица №5

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

f = lambda x: 28 + (x + x // 8) % 2 + 2 % x + 1 // x * 2
print(f'В июне {f(6)} дней')
# Out: В июне 30 дней
Паттерн проектирования Singleton

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

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

new__(cls, *args, **kwargs) –– вызывается для создания экземпляра класса, перед вызовом __init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).

class Singleton:
instance = None

def __new__(cls):
if cls.instance is None:
cls.instance = super().__new__(cls)

return cls.instance

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

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

a = Singleton()
b = Singleton()

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

print(a is b) # True
Python не поддерживает функциональное программирование.

– Так считают многие Python-программисты. А если явно писать типы, то Python перестанет быть самим собой.

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

💥На Russian Python Week 2020 теме типизации и функционального программирования будет посвящён отдельный мастер-класс от Pablo Aguilar, одного из основных разработчиков dry-python. Поговорим о том, как распределять ответственность, научимся решать проблемы с безопасностью и разберёмся, наконец, с типизацией.

Бронируйте билеты! С промокодом дешевле на 5% (действует до 6 сентября) mpc2020-online-conf_tg_36
🔥Чемпионат России по Python! Узнал сам — расскажи коллегам.

Cегодня анонсируем самый огонь — Чемпионат России по Python!

Каждый Python-разработчик может присоединиться к этой движухе: посостязаться в мастерстве, определить свой уровень и получить независимую оценку своих скиллов среди Python-разработчиков со всей страны. Главное и единственное требование ко всем участникам — знание стандартной библиотеки Python. Участие в Чемпионате бесплатно и доступно всем желающим.

❗️Как будет проходить Чемпионат?

В отборочном туре 30-35 вопросов в формате онлайн-квиза: 2 минуты на вопрос. Чем быстрее скорость ответа — тем больше очков возможно получить. Второй тур, он же финал: снова квиз на 15 вопросов по 2 минуты. Далее задачи, где нужно будет найти ошибку в коде. Ну и подведение итогов: определяем сильнейших питонистов России по итогам двух этапов конкурса и набранных очков. Ведущая Чемпионата — Злата Обуховская, тимлид в Nvidia.

Регистрируйся для участия в Чемпионате.
​​Хочешь изучить один из самых востребованных языков программирования Python?
Запишись на онлайн курс «Профессия Python-разработчик». Получи быстрый старт и практику кодинга. Освой востребованную, высокооплачиваемую профессию за двенадцать месяцев. Создай искусственный интеллект на дипломе!
👉 Все подробности по ссылке: https://clc.am/C9deFg

Чему научишься:
⚡️ создавать простые и сложные модульные программы: от консольных скриптов до чат-ботов;
⚡️ работать с базами данных;
⚡️ использовать промышленные средства разработки: Git, PyCharm;
⚡️ тестировать код;
⚡️ понимать место Django в семействе веб-фреймворков;
⚡️ оптимизировать старые и/или неудачные веб-приложения.

Центр карьеры Skillbox окажет индивидуальную поддержку на протяжении всего обучения — от помощи с выбором профессии до выхода на работу мечты.

Последний блок - Английский для IT-специалистов, благодаря чему создашь резюме на английском, подготовишься к интервью, подтянешь деловую переписку и специальную лексику.

Будь в числе первых двадцати и забери курс со скидкой 40%! 
Подробности по ссылке: https://clc.am/C9deFg.
Модуль - Wikipedia

Если модуля Howdoi было недостаточно, теперь мы можем импортировать всю Википедию! Да, теперь мы можем импортировать Википедию в Python с помощью модуля Wikipedia. Используйте непрерывный поток знаний с Python для повседневных нужд.

Установите его с помощью команды:
pip install wikipedia

И используйте его так:
import wikipedia
result = wikipedia.page("GeeksforGeeks")
print(result.summary)

#модули
Топ вопросов по ООП с собеседований

Объектно-ориентированное программирование является одной из основных концепций, поэтому вопросы по этой теме задают на каждом интервью. В этой статье мы собрали наиболее часто задаваемые новичкам вопросы по ООП (с ответами, конечно).

Читать статью

#топ
Tips & Tricks. Сравнение объектов: «is» vs «==»

Разбираемся на примерах, чем отличается сравнение объектов в Python при помощи операторов "==" и "is".

Читать статью

#ооп
🔁 Как писать «правильные» циклы на Python: разбираемся на примерах

Несколько соображений о том, как сделать код циклов Python более производительным и ясным с помощью функций встроенного модуля itertools: product, isslice, takewhile.

https://proglib.io/sh/QmYbLWSflt
Forwarded from Python задачки
Тест «Наследование в Python»

Составили совместно с @pythonist_ru для вас тест из 10 вопросов.

Пишите в комментариях, кто на сколько ответил.

Пройти тест
Forwarded from Python Academy
Упаковка параметров с помощью urlencode

Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:

url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)

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

#трюки #urllib
Forwarded from Python Academy
How Do I

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

Модуль просто парсит верхние ответы со StackOverflow, и всё. Устанавливается это чудо через pip, а для его использования, очевидно, нужен интернет.

#модули #howdoi
Forwarded from Python Academy
Немного про цифры и юникод

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.

Это влияет на такие функции, как int, unicode.isdecimal и даже re.match. Предупрежден – значит вооружен.

#числа #юникод
Forwarded from Python Academy
Сортировка словаря по значениям

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

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

#словари #сортировка
Forwarded from Python Academy
Нахождение наиболее частых элементов списка

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

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

#collections #counter
Forwarded from Python Academy
Python — самый популярный язык общего назначения. 
Авторский канал @pythonotes рассказывает о его тонкостях, интересных библиотеках и фактах из мира Python.
Хотите изучить Python или узнать его еще лучше
 
🔸 помощь начинающим
🔸 практические советы
🔸 интересные фишки языка
🔸 трики синтаксиса
🔸 комментарии к PEP
🔸 обзоры библиотек

Подписывайтесь, будет интересно!  
📌@pythonotes
Forwarded from Python Academy
Функция zip

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

#функции #zip