Python Lounge: работа и стажировки для программистов
4.12K subscribers
93 photos
1.17K links
Здесь можно найти интересующую вас работу и стажировки для программистов, а так же полезные статьи про Python.

Размещение вакансии только - @perezvonyubot

Ссылка на канал: @python_lounge

Мы входим в сеть promopoisk.com

Реклама: @adtgassetsbot
Download Telegram
🐍Методы list в Python💻

Во время собеседования на вакансию
python-разработчика очень часто звучат вопросы про списки и их методы.
Мы собрали для вас эти методы в одной статье.
А прочитав эту статью до конца, вы будете знать как удовлетворительно отеветить на этот вопрос.

1. append() - добавляет элемент в конец списка.

2. clear() - удаляет все элементы из списка

3. copy() - делает поверхностную копию списка

4. count() - считает, сколько раз в списке встречается переданный аргумент.

5. extend() - добавляет в конец списка итерируемую последовательность.

6. index() - возвращает индекс указанного элемента. Если таких элементов несколько, вернет индекс только первого. Если таких элементов нет,генерируется исключение. Вторым и третьим аргументом можно указать срез для поиска.

7. insert() - вставляет элемент перед указанным индексом. Сначала передается индекс, затем элемент.

8. pop() - удаляет элемент по указанному индексу и возвращает его. Если индекс не указан, то удаляет и возвращает последний элемент. Метод генерирует исключения, если список пуст или указан индекс за пределами диапазона.

9. remove() - удаляет первый объект из списка, значение которого равно аргументу. Если такого элемента нет, то возникает ошибка.

10. reverse() - переворачивает список на месте.

11. sort() - сортировка списка на месте (список изменяется, а не возвращается новый).

Подробнее про эти методы в примерах🚀
Распознавание лиц и верификация пользователей по ним – будущее или уже существующая реальность? Даже больше, каждый уже может написать свою подобную программу. Это настолько просто, что требуется буквально двадцать строк кода и всего лишь полчаса времени для понимания.

Читать статью
📌🐍Функции map(), filter() и reduce() используют, чтобы привнести в Python немного функционального программирования.
Все три из них являются удобными функциями, которые можно заменить на списки или циклы, но они
обеспечивают более элегантный и краткий подход к некоторым задачам.

1. map() -Функция map перебираeт все элементы в данном итеративном объекте и выполняeт функцию, которую мы передали в качестве аргумента для каждого из них.

2. reduce() - reduce работает иначе, чем map () и filter(). Он не возвращает новый список, основанный на функции и итерации, которые мы передали.
Вместо этого он возвращает одно значение.

3. filter() - Подобно map (), filter () принимает объект функции и итерацию и создает новый список. Как следует из названия, filter () формирует новый список, содержащий только элементы, удовлетворяющие определенному условию.

Примеры сможете найти ниже.🚀
🐍Представляем вам 5 способов которыми можно развернуть строку в python.🚀

📌Способ 1: С помощью slicing().

📌Способ 2: С помощью while() цикла.

📌Способ 3: С помощью join() и reversed().

📌Способ 4: С помощью list.reverse().

📌Способ 5: С помощью рескурсии.

https://telegra.ph/5-Sposobov-razvernut-stroku-v-Python-02-10
📋Топ 10 популярных вопросов на собеседовании python-разработчика.🚀

1.Для чего используются ключевые слова Global и Nolocal?

2.В чём разница методов Classmethod и StaticMethod?

3.Что такое GIL?

4.Как и для чего используются Метаклассы.

5.Что такое Аннотации типов? Что такое Общие Аннотации типов?

6.Что такое Generator-функции?

7.Что такое Декораторы?

8.Что значит 'Pickling'? А 'Unpickling'?

9. Что значат *args и **kwargs в функциях python?

10.Для чего предназначены файлы с расширением '.pyc'?

Ответы на эти вопросы по сможете найти по ссылке ниже.
https://telegra.ph/Top-10-populyarnyh-voprosov-na-sobesedovanii-python-razrabotchika-02-15
#вакансия
Друзья, на связи автор канала. Помогаю знакомым найти человека, платят хорошо, команда - супер.
Если есть кто из знакомых - личная просьба репостнуть, очень поможете🤘

Ведущий проектный менеджер по интеграции в Boxberry

Чтобы стать частью команды, необходимо:
— Знать английский язык на уровне advanced (коммуникации и переписка с партнерами в 90% случаев на английском языке);
— Иметь опыт работы в технической поддержке веб-сервисов +опыт реализации проектов по интеграции ПО от 2 лет

Задачи:
— Оценка требований к интеграции ключевых клиентов и партнеров компании (крупные зарубежные интернет-магазины, e-commerce площадки, логистические службы);
— Запуск новых интеграций API, предпусковые проверки, тестирование;
— Подготовка технических спецификаций с использованием партнерского API

Условия:
— Парт-тайм офис и удалёнка, ЗП от 150 000 р.

Вопросы и резюме @darriailyina или d_ilina@boxberry.ru
Работа в хорошем редакторе способствует созданию здорового проекта, хорошие редакторы всячески помагают разработчику, а плохие либо не помагают , либо вовсе препятствуют разработке.

Вот лучшие редакторы для python-разработчиков по мнению опытных питонистов...🚀
1. PyCharm

2. Spyder

3. SublimeText

4. Jupyter

5. Atom

6. Python IDLE

7. VSCode

8. Wing

9. Thonny

10. PyDev

Приятный глазу UI в соответствии с сильной функциональностью является несущим звеном каждого успешного проекта.
​​📌5 лучших библиотек Python для числовой статистики и структур данных.📊💡

Numpy - NumPy - это фундаментальный пакет для научных вычислений с использованием Python. Это первоклассная библиотека для программирования, которая широко используется в научных кругах, финансах и промышленности.
NumPy специализируется на операциях с базовыми массивами

SciPy - SciPy дополняет популярный числовой модуль Numpy. Это основанная на питоне экосистема программного обеспечения с открытым исходным кодом для математики, естественных наук и инженерии. Он также интенсивно используется для научных и финансовых вычислений на основе Python.

Pandas - Библиотека Pandas предоставляет высокопроизводительные простые в использовании структуры dara и инструменты анализа данных для языка программирования Python. Pandas фокусируется на основных типах данных и их методах, оставляя другие пакеты для добавления более сложных статистических функций.

Quand DSL - Quand DSL - это предметно-ориентированный язык для количественной аналитики в области финансов и торговли.
Quand DSL - функциональный язык программирования для моделирования производных инструментов.

Statistics - Это встроенная библиотека Python для всех основных статистических расчетов.
12 небольших фишек для улучшения твоего кода

1. Обмен значений
x, y = 1, 2
x, y = y, x

2. Получение строки из списка
a_list = [‘I’, ‘like’, ‘python’, ‘programming’]
a_string = “ “.join(a_list)

3. Разбиение строки на список
a_string = ‘I like python programming’
a_list = a_string.split()

4. Инициализация листа каким либо значением
[0]*1000 # лист, заполненный 1000 нулями
[1]*1000 # лист, заполненный 1000 единицами

5. Слияние словарей
x = {‘a’:1, ‘b’:2}
y = {‘c’:3, ‘d’:4}
z = {**x, **y}

6. Переворачивание строки
a = ‘My string’
a = a[::-1]

7. Возврат нескольких переменных из функции
def test(x,y):
return x,y
a,b = test(1,2)

8. Итерирование по словарю
a_dict = {‘a’:1, ‘b’:2, ’c’:3}
for k, v in a_dict.items():
print(‘{0}:{1}’.format(k, v))

9. Инициализация пустых контейнеров
a_list = list()
a_dict = dict()
a_set = set()
a_tuple = tuple()

10. Удаление символов в конце строки
my_string = ‘My string///‘
my_string.strip(‘/‘)

11. Проверка занимаемой объектом памяти
import sys
x = 1
print(sys.getsizeof(x))

12. Нахождение наиболее частого элемента в списке
a_list = [1, 2, 3, 1, 1, 4, 1, 4, 4, 1]
print(max(set(a_list), key=a_list.count))
​​👉Использование кортежей в Python🐍

Кортеж - это упорядоченная и неизменяемая коллекция. В python кортежи записываются в круглые скобки.
Пример:
this_tuple = ("apple", "banana", "cherry")
print (this_tuple)
#>>> ('apple', 'banana', 'cherry')

Доступ к элементам кортежа
Вы получаете доступ к элементам кортежа, ссылаясь на номер индекса в квадратных скобках
Пример:
this_tuple = ("apple", "banana", "cherry")
print (this_tuple[1])
print (this_tuple[0])
print (this_tuple[2])

#>>>banana
#>>>apple
#>>>cherry

Отрицательная индексация

Отрицательная индексация означает начало с конца, -1 относится к последнему элементу, -2 относится ко второму последнему элементу и т. д.
Пример:
this_tuple = ("apple", "banana", "cherry")
print (this_tuple[-1])
print (this_tuple[-2])
print (this_tuple[-3])

#>>>cherry
#>>>banana
#>>>apple

Диапазон индексов

Вы можете указать диапазон индексов, указав, где начать и где закончить диапазон.
При указании диапазона возвращаемое значение будет новым кортежем с указанными элементами.
Пример:
this_tuple = ("apple", "banana", "cherry", "mango")
print (this_tuple[1:3])
print (this_tuple[0:2])
print (this_tuple[0:1])

#>>('banana', 'cherry')
#>>>('apple', banana')
#>>>('apple')

Изменить значения кортежа

Как только кортеж создан, он не может изменить свои значения. Кортежи неизменяемы или являются immutable как это еще называется.
Но есть обходной путь. Вы можете преобразовать указатель в список, изменить список и преобразовать список обратно в кортеж.
Пример:
x = ("apple", "banana", "cherry")
y = list(x)
y[1] = "kiwi"
x = tuple(y)
print (x)

#>>>('apple', 'kiwi', 'cherry')
​​📄Mодуль cmath в python🚀

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

📌Функция polar ():
Эта функция возвращает полярное представление декартовой записи комплексного числа. Возвращаемое значение - это кортеж, состоящий из модуля и фазы.
import cmath
a = 2+4j
print (cmath.polar(a))
#>>>(4.47213595499958, 1.1071487177940904)

📌Функция phase ()
Эта функция возвращает угол против часовой стрелки между осью x и сегментом, соединяющим точку с исходной точкой. Угол представлен в радианах и находится между π и -π.
import cmath
a = 2 + 4j
print (cmath.phase(a))
#>>>1.10714871779

📌Функция rect ()
Эта функция возвращает декартово представление комплексного числа, представленного в полярной форме, то есть по модулю и фазе.
import cmath
a = 2+4j
print (cmath.rect(4.47213595499958, 1.1071487177940904))
#>>>(2+4j)

📌Функция sin ()
Эта функция возвращает тригонометрическое соотношение синуса для фазового угла, представленного в радианах.
import cmath
a = 2+4j
p = cmath.phase(a)
print (cmath.sin(p))
#>>>(0.894427191+0j)
​​🧐Почему Python хорош для веб-разработки?💡

Несмотря на то что в современном Вебе можно фактически без бэкенда — чисто на фронтенд-технологиях, на JavaScript — собрать себе single page application или progressive web application, все равно это слишком сложно, плохо индексируется и требует крутых разработчиков.Если мы хотим сделать сайт или сервис, мы используем комбинированный подход: у нас какой-то бэкенд осуществляет логику и создает веб-страницы и какой-то фронтенд рисует эти веб-страницы в браузере. И когда нам надо быстро это все на чем-то собрать, то выбора особо нет.

🤔Возможные варианты.

C#. Microsoft действительно молодцы, они сделали .NET Core и всячески ее продвигают. Но, во-первых, это новая кроссплатформенная технология, и там еще не все гладко. Во-вторых, это действительно дорого, разработчиков C# мало — просто потому, что она непопулярна.

Java. Это сложно. Сделать нормальный сайт на Java — это не 10 строчек кода, как на Python. Это много кода, это фреймворки, и нужно знать специфику настройки Java-серверов. В общем, сплошные боль и страдания.

PHP. В последних версиях он замечательный, но нельзя просто так взять и использовать PHP 7.2. Если обычный, не топовый разработчик делает сайт на PHP, он не будет писать только на 7.2: все равно придется читать какие-то учебники, туториалы, везде куча legacy-кода, и это не очень хорошо.

JavaScript и Node.js. Это замечательно и очень современно, когда один язык и на фронтенде, и на бэкенде. Только не очень стабильно. Node.js — хорошая штука, но проблематично развернуть ее в продакшене так, чтобы она не падала и работала устойчиво. Плюс, если мы хотим писать качественный код на JavaScript, нам нужен не JavaScript, а TypeScript. А вот TypeScript неожиданно сложный, при виде него у рядового разработчика вскипают мозги.

А вот преимущества python в веб разработке перед главным конкурентом PHP.

1. Продуманный дизайн
2. В простоте обучения Python выигрывает
3. Улучшенная структура
4. Python более читабельный стек
5. Синтаксис намного проще, чем PHP
6. Более простые и легкодоступные инструменты Инструменты отладки
7. Явный победитель в управлении пакетами
8. Лямбды, предоставляемые Python, дают преимущество перед PHР
9. Python более универсален, чем PHP
10. Огромная поддержка и сообщество

Что входит в базис для веб-разработки на Python
📄Веб-фреймворки Django, Flask, aiohttp, Tornado и т. д. (и знать о существовании остальных).

📄Протоколы и API: в первую очередь http, JSON-RPC, Protocol Buffers, gRPC.

📄ORM и миграции, реляционные базы данных, SQLAlchemy, SQL, PostgreSQL, MySQL.

📄Основы HTML, CSS, Bootstrap, а также JS-фреймворки и JQuery.

📄Принципы работы приложений на продакшене, тестирование, юнит-тесты, автотесты, системы контроля версий, git.
​​📄Топ проектов которые украсят и добавят ценности в ваше портфолио python-разработчика.🚀

1. Aгрегатор контента - Агрегатор контента - это физическое лицо или организация, которые собирают веб-контент (и / или иногда приложения) из различных онлайн-источников для повторного использования или перепродажи. Есть два типа агрегаторов контента: (1) те, которые просто собирают материалы из различных источников для своих веб-сайтов, и (2) те, которые собирают и распространяют контент в соответствии с потребностями своих клиентов.

2. Сокращатель URL - Сокращение URL-адресов - это метод во всемирной паутине, в котором унифицированный указатель ресурса (URL) может быть существенно короче и по-прежнему направлен на требуемую страницу. Это достигается с помощью перенаправления, которое ведет на веб-страницу с длинным URL-адресом.

3. Решатель Судоку - Стандартный судоку содержит 81 ячейку в сетке 9 × 9 и 9 прямоугольников, каждое из которых является пересечением первых, средних или последних 3 строк, а также первых, средних или последних 3 столбцов.
Существует несколько компьютерных алгоритмов, которые решают большинство головоломок 9 × 9 (n = 9) за доли секунды, но комбинаторный взрыв происходит при увеличении n, ограничивая свойства судоку, которые можно построить, проанализировать и решить как n увеличивается.

4. Приложение для уведомлений на рабочем столе - Уведомление на рабочем столе - это простое приложение, которое выдает уведомление в форме всплывающего сообщения на рабочем столе.

5. Файловый менеджер - компьютерная программа, предоставляющая интерфейс пользователя для работы с файловой системой и файлами. Файловый менеджер позволяет выполнять наиболее частые операции удаления над файлами - создание, открытие / воспроизведение / просмотр, редактирование, изменение, переименование, копирование, изменение атрибутов и свойств, файлов и назначение прав.

⚠️Именно проекты таких типов работодатели ценят в портфолио разработчиков, а наличие этих проектов в списке реализованных, даст вам весомые преимущества перед другими кандидатами.
​​🚀Для чего нужна библиотека Pytest?!.💡
- Pytest: помогает писать лучшие программы

Инфраструктура pytest упрощает написание небольших тестов, но при этом масштабируется для поддержки сложного функционального тестирования приложений и библиотек.


📊Функции.
    - Подробная информация о неудачных утверждениях assert (не нужно запоминать имена self.assert *)

   -  Автоматическое обнаружение тестовых модулей и функций

   - Модульные приспособления для управления небольшими или параметризованными долгоживущими тестовыми ресурсами

   -  Может запускать модульные тесты (включая пробные) и тесты носа из коробки

  -   Python 3.6+ и PyPy 3

  -  Богатая архитектура плагинов, более 315+ внешних плагинов и процветающее сообщество

📖Документация
Полную документацию, включая установку, руководства и PDF-документы, см. В разделе «Содержание».

Ошибки / запросы
Используйте трекер проблем GitHub, чтобы отправлять сообщения об ошибках или запрашивать функции.

🕔Журнал изменений
Обратитесь к странице журнала изменений для исправлений и улучшений каждой версии.

Поддержка pytest
Open Collective - это онлайн-платформа для финансирования открытых и прозрачных сообществ. Он предоставляет инструменты для сбора денег и полной прозрачности делиться своими финансами.

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

Подробности смотрите в коллективе pytest.
pytest для предприятия

Доступно как часть подписки Tidelift.

Сопровождающие pytest и тысячи других пакетов работают с Tidelift, чтобы обеспечить коммерческую поддержку и обслуживание зависимостей с открытым исходным кодом, которые вы используете для создания своих приложений. Экономьте время, снижайте риски и улучшайте работоспособность кода, оплачивая при этом те, кто поддерживает именно те зависимости, которые вы используете.

🔓Безопасность
pytest никогда не был связан с уязвимостью безопасности, но в любом случае, чтобы сообщить об уязвимости безопасности, используйте контактное лицо по безопасности Tidelift. Tidelift будет координировать исправление и раскрытие информации.
Лицензия

Авторское право Holger Krekel и др., 2004-2020.

Распространяемый по условиям лицензии MIT, pytest является бесплатным программным обеспечением с открытым исходным кодом.
📊PieChart (Круговая диаграмма)💡

Демонстрация базовой круговой диаграммы с использованием библиотеки matplotlib.

В дополнение к базовой круговой диаграмме эта демонстрация показывает несколько дополнительных функций:

-        этикетки для срезов

 -       автоматическая маркировка процента

  -      смещение среза с помощью "разнесения"
        тень

   -     настраиваемый начальный угол

Примечание о настраиваемом начальном угле:

По умолчанию начальный угол равен 0, что означает начало среза «лягушки» на положительной оси x. В этом примере задается startangle = 90, так что все вращается против часовой стрелки на 90 градусов, а срез лягушки начинается на положительной оси y.

import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)

fig1, ax1 = plt.subplots()

ax1.pie(sizes, explode=explode,
labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
ax1.axis('equal')
plt.show()
​​Про ООП и 3 кита в мире объектов и классов🐳.

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

Классы и объекты — в чем отличие?

ООП внес в программирование никогда не существовавшие определения: класс и объект. Класс можно назвать типом данных, или — проще говоря — куском кода, имеющим характеристики, называемые полями класса и возможные действия — методы класса. Объект — это сущность, имеющая определенные свойства, принадлежит некоторому классу.


Три главных принципа ООП:

Существуют три главных понятия, называемых также «тремя китами ООП», без которых сама его концепция невозможна - инкапсуляция, наследование и полиморфизм. Без понимания работы этих основных принципов продвигаться дальше в изучении ООП сложно. Давайте коротко рассмотрим каждое из них.

👉 Инкапсуляция — принцип, позволяющий скрыть от пользователя реализацию некоторых методов и значения полей. В языке программирования C# для этого используются так называемые модификаторы доступа (public, private и т.д.).


👉 Наследование — принцип, позволяющий создать один класс на основе другого. Первый класс называется наследником, а второй – родителем. В классе-наследнике реализуются все методы и поля класса-родителя.


👉 Полиморфизм — принцип, позволяющий объектам с идентичным интерфейсом иметь различную реализацию. Полиморфизм добавляет несколько новых понятий: абстрактный/виртуальный метод и переопределение метода.
****

Абстрактный метод — метод, который должен быть реализован в классе-наследнике и не должен — в классе-родителе.

Виртуальный метод — метод, который может быть переопределен в классе-наследнике и может иметь (а может и не иметь) реализацию в классе-родителе.

Переопределение метода — изменение реализации виртуального метода.
#вакансия

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

Senior Python Developer (Django) в OSLA


Растущий стартап, строим единорога! Компания OSLA занимается разработкой одноименной SaaS платформы.

Обязанности:
- Анализ функциональных требований;
- Проектирование архитектуры и разработка серверной части приложения;
- Интеграция с API внешних сервисов;
- Участие в формировании команды разработчиков;
- Участие в формировании workflow и средств взаимодейтсвия.

Требования:
- Опыт коммерческой разработки от 5 лет;
- Продвинутые знания Django, Django Rest Framework;
- Экспертный уровень знание SQL (Postgres)
- Опыт проектирования архитектуры бэкенда;
- Умение профилировать и оптимизировать код на Python, работа с репозиторием кода Git, опыт написания тестов;
- Опыт работы с распределенными очередями сообщений (Celery, RabbitMQ / Redis);
- Опыт настройки, оптимизации и мониторинга серверов.
- Умение разбираться в чужом коде, производить рефакторинг и оптимизацию, делать code-review;

Условия:
- З/П по итогам собеседования (от 150 000 рублей);
- Гибкий график с возможностью частично-удалённой работы;
- Офис в центре Санкт-Петербурга;

Отклик: @Stisaak
​​Dino Game с использованием Python.
Перед запуском игры убедитесь, что вы скачали модуль Pygame
code here

Обсудить можно в нашем чате