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

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

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

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

Реклама: @adtgassetsbot
Download Telegram
Python packages

Предположим, вы разрабатываете большое приложение, которое включает в себя множество модулей. Очевидно, что складывать всё в одну папку не просто неудобно, а в некоторых случаях даже нерационально. Создадим для примера модуль main.py и рядом с ним пакет с модулями (папку с файлами) примерно в таком виде:

├── main.py
└── package
  ├── __init__.py
  ├── module1.py
  └── module2.py

Модуль __init__.py нужен для инициализации пакета, а также он вызывается при импорте пакета или модулей из него. Тем не менее, __init__.py может был пустым, достаточно его присутствия. Простыми словами, такой модуль нужен для того, работать с папкой как с Python-пакетом.

В main.py мы уже можем импортировать пакет и модули примерно такими способами:

import package
from package import module1
import package.module2 as m2

Предположим, что у нас есть уже какие-то функции в module1.py и module2.py. Теперь давайте напишем кое-что в __init__.py для примера:

from .module1 import function1
from . import module2 as m2

variable = 'hello from __init__.py'

Точка указывает на то, что мы импортируем модули из этого же пакета, а не откуда-то еще. Если указать без точки или просто import module2, то возникнет исключение.

Теперь в main.py мы можем выполнить следующие команды:

from package import function1
from package import m2
from package import variable

Возможности пакетов и модулей в Python этим не ограничиваются, но для вступления и ознакомления этой информации должно хватить.
​​🔥Must-Have Библиотеки для python разработчика.

👉PyGame - pygame - это бесплатная кросс-платформенная библиотека с открытым исходным кодом для разработки мультимедийных приложений, таких как видеоигры, с использованием Python.

👉Random - Этот модуль реализует генераторы псевдослучайных чисел для различных распределений.

👉Numpy - Фундаментальный пакет для научных вычислений с Python

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

👉Collections - Этот модуль реализует специализированные типы данных контейнеров, предоставляя альтернативы встроенным контейнерам общего назначения Python.

👉SubProcess - Модуль подпроцесса позволяет создавать новые процессы, подключаться к их каналам ввода / вывода / ошибок и получать их коды возврата. Этот модуль предназначен для замены нескольких старых модулей и функций:

👉Functools - Модуль functools предназначен для функций высшего порядка: функций, которые действуют или возвращают другие функции. В общем, любой вызываемый объект может рассматриваться как функция для целей этого модуля.

👉Itertools - Этот модуль реализует ряд строительных блоков итератора, вдохновленных конструкциями из APL, Haskell и SML. Каждый был переработан в форме, подходящей для Python.
​​📌Функция sum() в python3
Как бы вы решили задачу получения суммы элементов
списка без обхода элементов в цикле?

Это можно сделать с помощью стандартной функции sum():

Cинтакс функции sum().
sum(iterable, start)

Параметры sum():
iterable - итерируемые типы (list , dict , tuple, и.т.д.)
start - (необезательно) - значение этого параметра прибавляется к уже готовой сумме элементов iterable.По умолчанию значение этого парметра 0.

Возвращаемое значение из sum():
sum() возвращает сумму start и элементов iterable.

Пример:
numbers = [1,5,5]
#парметр start передается со значением по умолчанию(0).
numbers_sum = sum (numbers);
print (numbers_sum)
# парметр start передается со значением 7.
numbers_sum = sum (numbers, 7)
print (numbers_sum)

Результат:
11
18

🔴Примечания:

Если вам нужно использовать sum() с floating-point элементами iterable с правильной точностью после запятой , до использования
sum(iterable , start) , нужно вместе c import math добавить следующую строку. math.fsum(iterable).

Если вам нужно соединить(concatenate) элементы iterable (элементы должны быть string), тогда вы можете использовать метод join()

Пример:
myTuple = ("Python", "Lounge", "is", "the","best")
x = " ".join(myTuple)
print (x)

Результат:
Python Lounge is the best
​​📌ДИНАМИЧЕСКИЕ АТТРИБУТЫ ДЛЯ ОБЪЕКТОВ

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

Когда мы вызваем что-то вроде <myobject>.<myattribute>,Python будет искать <myattribute> в библиотеке объекта, вызвав __getattribute__
в нём.
Если ничего не найдено , то объект не имеет аттрибут с именем которую мы ищем, тогда extra метод __getattr__ вызывается , получая имя аттрибута (myattribute) как параметр.
Получая это значение мы можем котролировать значения которые будут возвращены к нашим объектам.
Мы даже можем создать новый аттрибут и вернуть объекту "ненайденный аттрибут".

Ниже показано определение метода __getattr__ .

class DynamicAttributes:
def __init__(self, attribute):
self.attribute = attribute
def __getattr__(self, attr):
if attr.startswith("fallback_"):
name = attr.replace("fallback_", "")
return f"[fallback resolved] {name}"
raise AttributeError(f"{self.__class__.__name__} has no attribute {attr}")

Примечание:
🔴Будьте осторожны при реализации такого динамического метода, как __getattr__,
и используйте его с осторожностью. При реализации __getattr__,
поднять AttributeError.
Паттерн проектирования 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
​​Dino Game с использованием Python.
Перед запуском игры убедитесь, что вы скачали модуль Pygame
code here

Обсудить можно в нашем чате
Tesseract OCR, выделение распознанного текста на изображении.

Прочитать картинку, сохранить текст, обработать текст, получить результат довольно просто. Хочу рассказать как отобразить результат для пользователя на ранее прочитанной картинке, например, выделить кусочек текста содержащий целевое предложение. Такая задача будет полезна при выделении важной части отчета и демонстрации её руководству.
[ Статья ]
​​📊 Туториал: визуализация данных в вебе с помощью Python и Dash

В этом руководстве мы рассмотрим, как с помощью Python и библиотеки Dash создать, оформить и опубликовать на хостинге интерактивное веб-приложение с результатами анализа данных.

статья
Игра Тетрис на PyQt5

[ Статья ]
---
Oбсудить пост и просто пообщаться можно в нашем чате .
​​🔍 🎥 Распознавание объектов с помощью YOLO v3 на Tensorflow 2.0

Статья описывает распознавание объектов в изображениях с помощью популярной модели YOLO. Приводится подробное описание архитектуры модели и код, реализующий YOLO v3 на Tensorflow 2.0
Статья
​​Functools – сила функций высшего порядка в Python

В стандартной библиотеке Python есть множество замечательных модулей, которые помогают делать ваш код чище и проще, и functools определенно является одним из них. В этом модуле есть множество полезных функций высшего порядка, которые можно использовать для кэширования, перегрузки, создания декораторов и в целом для того, чтобы делать код более функциональным, поэтому давайте отправимся на экскурсию по этому модулю и посмотрим, что он может нам предложить.
Статья
​​🤘На собеседованиях часто при проверке знаний теории алгоритмов требуют вывести на экран тот или иной паттерн.

➡️Вот например Е-паттерн.
(реализация на нашем любимом питоне)

for row in range(7):
for col in range (5):
if (row in {0,3,6}) or (col == 0):
print ("*", end = "")
else:
print ("", end = "")
​​Хотите проверить, насколько могуч Python? Мы собрали подборку проектов, созданных с помощью Python, которые докажут, что этот язык способен на многое.
Boт несколько крутых проектов-примеров написанных на python.

Canto − RSS-демон и Canto Curses клиент
Exaile − аудиоплеер, редактор тегов и органайзер библиотеки
Pitivi − видеоредактор для Linux, построенный на GStreamer
MakeHuman − программа для создания 3D-моделей гуманоидов
PyChess − продвинутый шахматный клиент
Attic − система резервного копирования с дополнительным шифрованием
Calibre − менеджер электронных книг, предназначенный для просмотра, конвертации, редактирования
CherryTree − личный блокнот, похожий на вики, с подсветкой текста и синтаксиса
Gramps − ПО для любителей генеалогии
Invenio − платформа для запуска доверенного цифрового хранилища
GlobaLeaks − веб-приложение для безопасной и анонимной рассылки оповещений
Mailman − веб-приложение и почтовый сервер для управления подписками и архивами
​​🤹 11 забавных пасхалок в Python

Python очень серьезный язык, но он полон «пасхальных яиц» и забавных отсылок. В этой статье мы собрали наиболее интересные скрытые функции одного из самых популярных языков программирования.
Статья