Python Lounge: работа и стажировки для программистов
Kanalga Telegram’da o‘tish
Здесь можно найти интересующую вас работу и стажировки для программистов, а так же полезные статьи про Python. Размещение вакансии только - @perezvonyubot Ссылка на канал: @python_lounge Мы входим в сеть promopoisk.com Реклама: @adtgassetsbot
Ko'proq ko'rsatish3 704
Obunachilar
Ma'lumot yo'q24 soatlar
-127 kun
-1530 kun
Postlar arxiv
Где будет быстрее поиск? При условии 1 млн записей.
Хочешь научиться работать с Python?
Ребята из ProductStar создали курс, который за 2 месяца позволит новичку освоить навыки анализа данных с помощью Python, научиться писать автоматические скрипты, а также работать с визуализацией данных и дашбордами.
Спикеры курса:
— Николай Пекальн, директор по аналитике Vezet group,
— Ришат Исхатов, Head of BA, СберМаркет.
Обучение состоит из 10 блоков и 10 домашек с проверкой от практиков рынка.
По ходу курса ребята помогают лучшим студентам с трудоустройством и подготовкой к собеседованиям.
Для первых 20 студентов действует скидка в 50% — курс можно приобрести всего за 14600 ₽
Подробная программа курса и регистрация по ссылке 👉 https://clck.ru/R78GX
В открытом море можно ориентироваться по звёздам, но лучше — иметь навигатор.
Бесплатный курс Нетологии «Data Science: будущее для каждого» — и есть такой навигатор в море Data Science. Вместе с преподавателями-энтузиастами вы на простых примерах разберёте, как алгоритмы принимают решения, и напишите первый код на языке SQL.
Всё, чтобы вы могли погрузиться в данные и вынырнуть с понимаем, куда плыть дальше. Регистрируйтесь ↓
http://netolo.gy/fRM
Реализация класса контекстного менеджера
Начнем с того, что в контекстном менеджере должны быть определены методы enter и exit. Давайте создадим наш собственный менеджер контекста для открытия файлов и поймем суть его работы.
class NewOpen(object):
def __init__(self, file_name, mode):
self.file = open(file_name, mode)
def __enter__(self):
return self.file
def __exit__(self, type, value, traceback):
self.file.close()
Просто определив методы enter и exit, мы можем использовать наш новый класс с оператором with. Давайте попробуем:
with NewOpen('test.txt', 'w') as file:
file.write('Hello, world!')
Наш метод exit принимает три аргумента. Они требуются для каждого метода exit, который является частью класса.
# testФункция exit создана для удобства работы в интерактивном режиме, однако не рекомендуется использовать её внутри скриптов. Она просто поднимает исключение, и при попытке вызова без скобок пишет подсказку о правильном способе выхода из интерпретатора:
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
nameless@pycoders:~$
Использовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.
import sys
try:
# code
except:
sys.exit()3 причины, почему стоит учить Python:
— простой и понятный язык, подойдет новичкам;
— востребованный (более 600 вакансий на HH.ru);
— универсальный: можно разрабатывать как игры и приложения, так и системы управления жизнеобеспечением.
Где учить? В SkillFactory, на курсе «Fullstack-разработчик на Python».
Почему там? Потому что на курсе есть:
— 7 онлайн-модулей, объединенных в единую специализацию, чтобы изучить Python максимально глубоко.
— 395 часов обучения на практике.
— 3 сквозных проекта и один итоговый — чтобы пополнить портфолио.
— Помощь менторов и круглосуточная поддержка в общем чате.
Для тех, кто хочет быстрее найти работу по новой профессии предусмотрен бонусный модуль по поиску проектов на фриланс-бирже и взаимодействию с заказчиком.
🚀Запишитесь на курс со скидкой 30%: https://clc.am/VPMhaw
Чему вы хотели бы научить искусственный интеллект? Например, создавать уникальные изображения или текст. А может, виртуозно играть в крестики-нолики?
Приходите на практический онлайн-курс «Deep Learning. Basic» и сделайте свои первые нейронные сети.
📌 За 5 месяцев вы:
- Освежите все необходимые области математики: теорию информации, теорию вероятности, линейную алгебру и основы анализа.
- Попробуете на практике различные направления Deep Learning: Компьютерное зрение, Обработка естественных языков, Обучение с подкреплением, Генеративные сети
- Освоите фреймворки PyTorch, Tensorflow, Keras
Знаний и практики, которые вы получите, будет достаточно, чтобы претендовать на начальные позиции специалиста по нейронным сетям и самостоятельно решать рядовые распространенные задачи.
Пройдите вступительный тест и успейте записаться на курс по спец.цене: https://otus.pw/OhfrR/
⚡ Как проджекту в IT оценивать задачи в зависимости от срочности, размера и сложности работ?
Присоединяйтесь 8 сентября к демо-уроку «Техники оценки Agile проектов для различных контекстов».
Преподаватель Юлия Белозерова за 8 лет в проектном управлении прошла путь от Scrum-master до Technical Program Manager. С ней вы научитесь выбирать нужный способ с зависимости от ситуации: «размеры футболок», человеко-часы, story points, PERT и др. А так же затронете классический инструмент critical path.
Демо-урок является частью программы онлайн-курса «Agile Project Manager», созданной специально для IT-специалистов, стремящихся к карьерному росту в управлении IT-проектами.
✔ Чтобы посетить занятие, регистрируйтесь по ссылке: https://otus.pw/fwUI/
Аннотации типов
Всем известно, что Python – язык с динамической типизацией. Аннотации типов нужны для того, чтобы повысить информативность исходного кода, но они никак не влияют на поведение программы.
Для примера потребуется импортировать типы
List (список) и Dict (словарь) из модуля typing:
from typing import List, Dict
Типы данных указывается через двоеточие после именно переменной после её создания. Создадим словарь с числами и сразу же список, состоящий из значений этого словаря:
numbers: Dict[str, int] = {'one': 1, 'two': 2}
values: List[int] = numbers.values()
Потом создадим функцию, возвращающую сумму переданных значений. В аргументах точно так же можно указывать их типы, а также через стрелочку можно указать типа возвращаемого значения:
def sum(a: int, b: int) -> int:
return a + b
Теперь используем эту функцию, передав туда распакованный список:
sum(*values)
# Output: 3
Однако помните, что аннотации типов не влияют на ход исполнения программы, поэтому в ранее написаную функцию мы с таким же успехом можем передать и строки, хотя указывали целочисленный типа данных:
sum('Python ', 'Lounge')
# Output: 'Python Lounge'Хочешь стать Python-разработчиком? Обучайся на практике! Пройди обучающий интенсив и создай программу для обмена быстрыми сообщениями всего за три дня!
Успей на бесплатную регистрацию: ▶ https://clc.am/jkDqZg.
Ты научишься:
✔ разбираться в различных типах данных, структурах, функциях и ООП;
✔ разрабатывать сервер для прослушивания подключений;
✔ программировать клиентскую часть для подключения и передачи сообщений;
✔ работать с библиотеками PyQT, Kivy, wxWidgets, Tkinter.
📣 Твоим преподавателем будет сооснователь и технический директор в Lia — Никита Левашов.
⭐ Если попадёшь в тройку лучших участников — получишь сертификат на 30 000 рублей для обучения в Skillbox.
Изменение списка во время итерации по нему
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
odd = lambda x: bool(x % 2) # функция проверки числа на нечетность
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(10):
if odd(numbers[i]):
del numbers[i] # удаление элемента из списка во время итерации по нему
# Output:
Traceback (most recent call last):
if odd(numbers[i]):
IndexError: list index out of range
Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.
К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода ниже:
odd = lambda x: bool(x % 2) # функция проверки числа на нечетность
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers = [n for n in numbers if not odd(n)] # генератор нового списка
print(numbers)
# Output:
[2, 4, 6, 8, 10]Набор учащихся на совместные образовательные программы Сбербанка
Совместные образовательные программы Сбербанка реализованы в 12 вузах страны от Москвы до Владивостока. Направления подготовки разные — от «Экономики» до «Software Engineering». Обучение доступно как для магистров, так и для бакалавров на конкурсной и коммерческой основе. Узнать подробнее о сроках приемной кампании и образовательных программах можно на онлайн-платформе SberGraduate.
Какие совместные образовательные программы есть?
Национальный исследовательский ядерный университет «МИФИ»: программа дополнительного образования «Информационные технологии в социальных системах»
Московский физико-технический университет: бакалаврская программа «Software Engineering»
Российская академия народного хозяйства и государственной службы при Президенте Российской Федерации: магистерская программа «Финансы и технологии»
Национальный исследовательский университет «Высшая школа экономики»: магистерская программа «Финансовые технологии и анализ данных»
Балтийский федеральный университет им. Канта: магистерская программа «Банковские информационные технологии»
Факультет вычислительной математики и кибернетики МГУ им. М.В. Ломоносова: магистерская программа «Программное обеспечение вычислительных сетей»
Университет ИТМО: магистерские программы «Цифровые технологии умного города», «Информационная безопасность», «Финансовые технологии больших данных», «Робототехника»
Дальневосточный федеральный университет: бакалаврская программа «Экономика» и магистерская программа «Искусственный интеллект и большие данные»
Южный Федеральный Университет: бакалаврская программа «Специализированный курс по обучению Java разработке»
Самарский НИУ академика С.П.Королева: магистерская программа «Data Science»
Уральский федеральный университет: программа дополнительного образования «Сбертех Start» и магистерская программа «Прикладной анализ данных»
Рязанский государственный радиотехнический университет: совместный учебный курс «Business Intelligence», «Архитектура промышленных автоматизированных систем» и «Промышленное программирование на Java»
Digital-выпускной SberGraduate 2020
В конце июля состоялся первый в истории digital-выпускной образовательных программ Сбербанка SberGraduate. Во время онлайн-трансляции новоиспеченные бакалавры и магистры получили напутствия от менеджеров Сбербанка и представителей университетов, прошли тест на уровень развития эмоционального интеллекта и разились за годовую подписку в онлайн-кинотеатре Окко в «Квиз, плиз».
Помимо дипломов выпускники получили именные сертификаты, подписанные Президентом, Председателем Правления Сбербанка Германом Грефом. Многие из выпускников уже получили предложение стать сотрудниками Сбербанка.
Огромное количество вакансий, множество резюме 😱
Бесплатное размещение до 1500 подписчиков! 😱
Успей залететь и найти сотрудника мечты или вакансию, абсолютно бесплатно! 😍
https://t.me/freelancepub
Паттерн проектирования 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Как одной математической формулой по номеру месяца посчитать количество дней в нем?
Попробуем написать функцию 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 днейSwitch-конструкция с помощью словаря
К сожалению, в Python не существует switch-конструкций, в отличие от большинства других языков программирования, и поэтому приходится строить башни из условных операторов в своём коде.
Однако есть одно хитрое решение — использовать словарь, где значениями будут функции. Например, напишем словарь, который будет использован для математических операторов.
switch = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y
}
В этом примере были использованы lambda-функции для простоты, но вместо них можете подставить любые другие. Для тех, кто не знает: lambda - объявление анонимной функции (можно косвенно сравнить с def); x, y - принимаемые аргументы; x + y - то, что функция возвращает.
result = switch['*'](4, 5)
print(result)
# Output: 20
Примерно вот так мы можем пользоваться подобной штукой. Думаю, что многие найдут полезное применение подобному использованию словарей.Создаем свой простенький локер - вирус, блокирующий компьютер; а также используем новый интересный модуль
Tkinter: часть 5
Использование списков в качестве стеков
Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).
Методы встроенного списка в Python позволяют очень легко использовать список в виде стека. Чтобы добавить элемент на вершину стека, используйте
append(). Чтобы извлечь элемент из верхней части стека, используйте pop() без явного индекса. Пример:
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack
[3, 4, 5]
>>> stack.pop()
523 июня в 20:00 мск OTUS приглашает на открытый вебинар «Тестирование вёрстки с помощью Selenium и Python».
Вебинар бесплатный, но пройдет в рамках набора на онлайн-курс «Python QA Engineer».
Пройдите вступительный тест - и вам напомнят о вебинаре заранее: https://otus.pw/v5js/
На занятии разработаем собственный фреймворк сверки изображений.
Подключайтесь 23 июня, будет интересно и профессионально.
18 июня пройдет открытый практический вебинар «Модульные монолиты и DDD». Присоединяйтесь, будет интересно и профессионально: https://otus.pw/TJoR/
На открытом уроке будут рассмотрены основные паттерны для построения и написания модульных монолитов. Особое внимание будет уделено паттернам DDD.
Вебинар ведет руководитель программы, преподаватель-практик Станислав Щетинников (программирует больше 10 лет. Архитектурой систем занимается уже больше 6 лет.)
На данный момент директор разработки в Домклик. До этого несколько лет работал руководителем разработки в myTarget. Любит Data Science, python, golang, DDD и микросервисную архитектуру.
Вебинар проходит в рамках набора на профессиональный онлайн-курс «Архитектор программного обеспечения». Чтобы попасть на этот курс с welcome-скидкой, пройдите вступительный тест: https://otus.pw/x5oO/
