Python для инженеров и разработчиков: расширенное издание, 2022 г.
Слёрм подготовил онлайн-интенсив для специалистов со знанием Python, которые хотят за 3 дня выйти на новый уровень владения языком.
Мы научим тебя создавать скелет веб-сервиса с фреймворком FastAPI, разбираться в видах тестирования и писать под Ansible.
Стартуем3 июня: https://slurm.club/3M1P5Sg
За 3 дня ты:
▪️Научишься интегрироваться с СУБД, запускать и отслеживать выполнение отложенных задач.
▪️Разберешься с тем, как стандартные конструкции (декораторы, датаклассы) могут использоваться во фреймворках.
▪️Станешь использовать Python как API к другим системам.
Вкладываешься в свои знания сегодня — растешь в стоимости как специалист и экономишь 10000₽ при регистрации до 1 июня: https://slurm.club/3M1P5Sg
List comprehensions may contain more than one for and if clauses:
In : [(x, y) for x in range(3) for y in range(3)]
Out: [
(0, 0), (0, 1), (0, 2),
(1, 0), (1, 1), (1, 2),
(2, 0), (2, 1), (2, 2)
]In : [
(x, y)
for x in range(3)
for y in range(3)
if x != 0
if y != 0
]
Out: [(1, 1), (1, 2), (2, 1), (2, 2)]
Also, any expression with for and if may use all the variables that are defined before:
In : [
(x, y)
for x in range(3)
for y in range(x + 2)
if x != y
]
Out: [
(0, 1),
(1, 0), (1, 2),
(2, 0), (2, 1), (2, 3)
]
You can mix ifs and fors however you want:
In : [
(x, y)
for x in range(5)
if x % 2
for y in range(x + 2)
if x != y
]
Out: [
(1, 0), (1, 2),
(3, 0), (3, 1), (3, 2), (3, 4)
]
🚀 Готовы сделать первый шаг к карьере дата-инженера?
23 и 24 мая в 20:00 пройдет открытый интенсив «Extract - Load с помощью SaaS-сервиса vs. Cобственное решение. Поиск баланса и дзен». Мероприятия проведет Артемий Козырь, Analytics Engineer в компании Wheely.
✅ На интенсиве мы рассмотрим следующие темы:
✔️ Extract-Load через SaaS решения. Возможности готовых сервисов, их надежность и ограничения.
✔️ Extract-Load через API-вызовы, обращения к СУБД и CDC — оптимальные способы реализации.
✔️ Автоматизация выгрузки, повторные попытки (retries), получение уведомлений в Slack (notifications) с помощью Airflow.
✔️ Накопление истории выгрузок и организация Data Lake в S3 перед DWH.
👉 Проходите вступительный тест и регистрируйтесь на вебинар
A lot of system calls can be interrupted by an incoming signal. If a programmer wants the call to be completed anyway, they have to issue it again.
The notable example is sleep(x) function that is expected to freeze the program for x seconds, but in reality, it can return earlier if a signal appears.
However, since Python 3.5, thanks to PEP 475, Python cares about all such calls for you. The following program ends on the first SIGINT it receives in any Python before 3.5. But it sleeps for exactly five seconds regardless of the signals in Python 3.5+.
import signal
import time
def signal_handler(signal, frame):
print('Caught')a
signal.signal(signal.SIGINT, signal_handler)
time.sleep(5)
translatepy - универсальная библиотека и CLI, написанная на Python, для перевода, транслитерации, проверки орфографии, озвучивания текста в речь и поиск слов в словарях, с использованием следующих API:
• Google Translate
• Yandex Translate
• Bing Translate
• DeepL Translate
• Reverso
• MyMemory
• LibreTranslate
Библиотека использует разные лазейки в API для того чтобы бесплатно делать запросы, соответственно не требуются API ключи для работы сервисов перевода. Также есть возможность написать свой API модуль перевода.
#GitHub | #Python #Translation
👉 @Githublib
📊Хочешь создавать красивые аналитические отчеты и использовать Python для работы с аналитикой?
🚀 Начинаем знакомство с Python и средой разработки Jupyter Notebook 18 мая в 20:00. На открытом уроке в OTUS вы узнаете, какие бывают типы данных и виды арифметических операций.
📚Открытый урок — часть онлайн-курса «Python для аналитики». Программа ориентирована на маркетологов, аналитиков, продакт-менеджеров и начинающих Python-разработчиков.
📌Регистрируйтесь на бесплатное занятие: https://otus.pw/DCeK/
Примеры использования модуля os в Python os.chdir() и os.getcwd()
Функция os.chdir позволяет нам вносить изменения в каталоге, который мы в данный момент используем в сессии.
Если вам нужно знать, какой путь вы в данный момент используете, для этой нужно вызвать os.getcwd(). Указанный код демонстрирует нам, что мы открыли директорию по умолчанию в Пайтоне, после запуска данного кода в IDLE.
После этого мы изменили папки, при помощи os.chdir().
Подписывайтесь на канал 👉@pythonofff
python supports several forms of starting a script. The usual one is python foo.py; in that case, foo.py would be simply executed.
However, you can also do python -m foo. If foo is not a package, then foo.py is found in sys.path and executed. If it is, then Python executes foo/__init__.py, and foo/__main__.py after that. Note, that __name__ is equal to foo during __init__.py execution, but it's __main__ during __main__.py execution.
You also can do python dir/ or even python dir.zip. In that case, dir/__main__.py is looked for and executed if found.
$ ls foo
__init__.py __main__.py
$ cat foo/__init__.py
print(__name__)
$ cat foo/__main__.py
print(__name__)
$ python -m foo
foo
__main__
$ python foo/
__main__
$ python foo/__init__.py
__main__
Прими участие в масштабном онлайн-хакатоне «Moscow City Hack 2022» от Агентства инноваций Москвы!
Тебя ждут:
🏆 Призовой фонд 3 400 000 ₽;
💻 Задачи по разработке сервисов для мотивации студентов, привлечения волонтеров, цифрового маркетинга, импортозамещения и разоблачения fake news;
🧐 Эксперты от крупного бизнеса и Правительства Москвы;
🎓 Образовательная программа с мастер-классами и интенсивами;
🎁 Красочный мерч, подарки от партнеров и много крутых активностей 🔥
📅 Хакатон пройдет 10-13 июня 2022 года
Регистрируйся уже сейчас!
https://bit.ly/3Fog8od – индивидуальная ссылка с utm-меткой
Узнать подробности и найти команду можно в нашем Telegram-чате
t.me/MoscowCityHack
The io module provides two types of in-memory file-like objects. Such objects may be helpful for interacting with interfaces that only support files without the need of creating one. The obvious example is unit-testing.
These two types are BytesIO and StringIO that works with bytes and string respectively.
In : f = StringIO()
In : f.write('first\n')
Out: 6
In : f.write('second\n')
Out: 7
In : f.seek(0)
Out: 0
In : f.readline()
Out: 'first\n'
In : f.readline()
Out: 'second\n'
Как не просто выучить Python, а разобраться в алгоритмах и структурах данных, автоматических тестах, освоить Django и всё необходимое для качественной разработки в команде?
Например, освоить профессию на Хекслете. Курс невозможно просто «отсидеть» или «прослушать», на нём дают только самое необходимое для условий реального продакшена — доступ к Open Source проектам, базе тестовых задач для подготовки к собеседованиям, кейсы для портфолио.
Так что многие студенты получают оффер ещё во время обучения. Работодатели указывают курсы Хекслета как преимущество при найме.
Узнайте подробнее о профессии «Python-разработчик» и оцените формат школы: https://clck.ru/gmXGE
Аудио-графическое шифрование или как звук в картинку спрятать
Под покровом вечера пятницы, поглощая хмельные запасы нашей необъятной я наткнулся на плеяды статей о шифровании. Что только куда не зашифровывали, от совсем уж банального шифра Цезаря до менее банального шифрования изображений в аудиофайл. Наслаждаясь достойным вечера чтивом, в голову зашел не разувшись интересный вопрос: "-А кто-нибудь звук в картинку прятал?". Зудящая жажда знаний заставила меня смахнуть с живота остатки кальмаровых колец и сесть за свою рабочую лошадку. Далее
Продвинутая работа со списками
При работе со списками крайне полезно знать как правильно формировать срезы списка. В приложениях, активно использующих группы данных - срезы незаменимый инструмент.
В общей форме формирования среза выглядит следующим образом:
list[start:end:step]
Комбинации параметров помогут достичь необходимого результата.
Подписывайтесь на канал 👉@pythonofff
If you want to iterate over several iterables at once, the zip function may be a good choice. It returns a generator that yields tuples containing one element from every original iterables:
In : eng = ['one', 'two', 'three']
In : ger = ['eins', 'zwei', 'drei']
In : for e, g in zip(eng, ger):
...: print('{e} = {g}'.format(e=e, g=g))
...:
one = eins
two = zwei
three = drei
Notice, that zip accepts iterables as separate arguments, not a list of arguments. To unzip values, you can use the * operator:
In : list(zip(*zip(eng, ger)))
Out: [('one', 'two', 'three'), ('eins', 'zwei', 'drei')]
list allows you to store an array of any objects. This is quite helpful but may be inefficient. The array module can be used to represent arrays of base values compactly. The supported values include various C types including char, int, long, double and so on. The actual representation is determined by the C implementation.
In : a = array.array('B')
In : a.append(240)
In : a.append(159)
In : a.append(144)
In : a.append(180)
In : a.tobytes().decode('utf8')
Out: '🐴'