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

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

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

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

Реклама: @adtgassetsbot
Download Telegram
🐍Python (+numba) быстрее Си🚀

Главным недостатком питона принято считать его скорость. Разгонять python с переменным успехом стали чуть ли не с первых дней его существования: shedskin, psyco, unladen shallow, parakeet, theano, nuitka, pythran, cython, pypy, numba.
https://telegra.ph/Python-numba-bystree-Si-03-04

Обсудить можно в нашем чате .
​​🖥️13 GUI-библиотек Python.🐍

📖Python поддерживает множество парадигм программирования, включая:
- объектно-ориентированную;
- императивную;
- функциональную;
- процедурную.

Графический интерфейс пользователя (GUI)
GUI это человеко-компьютерный интерфейс. Другими словами, это способ, с помощью которого люди могут взаимодействовать с компьютерами.
Он использует окна, значки, меню. Манипулировать GUI можно как с помощью мышки, так и с помощью клавиатуры.

1. Tkinter
Tkinter это набор инструментов, который может формировать GUI с помощью Python. Он позволяет вам запускать сценарии на Python в GUI-формате. Ссылка ведет на страницу с руководством по Tkinter.

2. Flexx
Многие GUI-библиотеки Python основаны на библиотеках, написанных на других языках, таких как C ++. Например, wxWidgets и libavg. Flexx создана на Python. Для отображения GUI использует веб-технологию.

3. CEF Python
Этот фреймворк нацелен на Windows, MAC OS и Linux. Основан на Google Chromium. Основное внимание в нем уделяется облегчению использования встроенного браузера в сторонних приложениях.

4. Dabo
Цель этого фреймворка – WxPython. Это трехуровневый фреймворк для разработки кросс-платформенных приложений.

5. Kivy
Kivy основан на OpenGL ES 2. У него есть собственный multi-touch для каждой отдельной платформы. Это событийно-ориентированный фреймворк, который прекрасно подходит для разработки игр.

6. Pyforms
Pyforms это фреймворк Python 2.7/3.x для разных окружений, используемый для разработки GUI приложения. В нем поощряется повторное использование кода.

7. PyGObject
С помощью PyGObject вы можете писать на Python приложения для проекта GNOME. Также можно писать приложения на Python, использующие GTK+.

8. PyQt
Qt это кросс-платформенный фреймворк. Он написан на С++. Это очень полная библиотека, включающая много инструментов и API. Широко используется во многих отраслях. Охватывает множество платформ.

9. PySide
Обёртка для Qt. PySide и PyQt отличаются тем, что последний является коммерчески доступным.

10. PyGUI
PyGUI предназначен для платформ Unix, Macintosh и Windows. Фокус этого MVC-фреймворка заключается в том, чтобы вписываться в экосистему Python с максимальной легкостью.

11. libavg
Это сторонняя библиотека, написанная на С++. Обладает следующими особенностями:
показ элементов в форме переменных Python;
система управления событиями;
таймеры;
поддержка логов.

12. PyGTK | PyGObject
«GTK+», широко используемая в Linux, является «GTK + «обёртка из» PyGTK». По сравнению с Kivy и PyQt, PyGTK очень легок для платформ Unix, Macintosh, Windows.
Этот MVC-фреймворк разработан Грегом Эвингом из университета Кентербери (Новая Зеландия). Его главный фокус – как можно более простая адаптация к экосистеме Python.

13. wxPython
Обертка кросс-платформенного GUI для Python на основе wxWidgets. Написана на С++.

🚀Обсудить тему можно в нашем <чате>.🚀
​​📄Модули🐍

Программы на Python содержат тысячи, десятки тысяч и сотни тысяч строк кода (есть проекты с миллионами). В таких условиях одним файлом с кодом не обойдёшься — его нужно разбивать на части. Для получения доступа к коду, который находится в других файлах, в Python реализован механизм модулей.

Модули и импортирование
Итак, файл с кодом на Python называется модулем. Имя модуля соответствует имени файла, поэтому файлы в Python принято называть в стиле "snake_case" (отметьте иронию: Python — питон — змея — snake — snake_case). Одни модули могут использовать содержимое других, если импортируют эти другие модули с помощью инструкции import.
Строго говоря, в Python импортировать модули можно несколькими способами:
импортировать сам модуль
импортировать отдельные определения из модуля
импортировать всё содержимое модуля сразу
Импортирование модуля
Рассмотрим применение первого способа — импортирование модуля целиком. Главное удобство упоминания модуля по имени: глядя на код, мы сразу видим, что используемая переменная или вызываемая функция — это часть конкретного модуля.
Синтаксис импорта: import <имя_модуля (без суффикса ".py")>
Всё просто: после ключевого слова import указываем имя модуля (файла). Но при этом суффикс .py в имени надо опустить. То есть, к примеру, для модуля с именем my_module.py в инструкции импорта достаточно прописать my_module, а полный вид инструкции будет таким: import my_module.
В модуле (файле) с именем greeting.py определим функцию say_hi и переменную name:
# file: greeting.py
def say_hi():
print('Hi!')

name = 'Bob'
А в модуле с именем main.py сделаем импорт содержимого модуля greeting.py:
# file: main.py
import greeting # заметьте, расширение ".py" не указывается!

print(greeting.name) # => Bob
greeting.say_hi() # => Hi!
Импортирование модуля в таком виде делает модуль доступным по имени — в данном случае это greeting. К содержимому же модуля можно обратиться, как говорят, "через точку". Причём можно как получать доступ к переменным (greeting.name), так и вызывать функции модуля (greeting.say_hi()).
Импортирование отдельных определений
Синтаксис импорта: from <имя_модуля (без суффикса ".py")> import <список определений>.
Иногда из всего модуля нужна пара функций или переменных, а имя модуля слишком длинное, чтобы писать его каждый раз. Здесь нам может пригодиться следующий вариант использования инструкции import:
# file: main.py
from greeting import say_hi, name
print(name) # используем переменную
say_hi() # вызываем функцию
Здесь после ключевого слова from указано имя модуля, а затем после ключевого слова import — имена определений из этого модуля, которые мы в дальнейшем хотим использовать напрямую (а не "через точку").
В следующем уроке мы рассмотрим третий вариант импортирования модуля ("импорт всего содержимого") и в целом немного углубим наши познания в этой теме.
​​Micro Python — эффективная реализация Python 3 для микроконтроллеров
Английский разработчик Дэмьен Джордж (Damien George) в 2014ом году объявил об эффективной реализация Python 3 для встроенных систем с малым объёмом оперативной памяти. Разработка этой версии началась в декабре, после удачной кампании по сбору средств на выпуск Pyboard — контроллера, работающего на Питоне.

Micro Python — новая реализация языка программирования Python 3, которая должна быть правильно совместима с CPython, в то же время используя минимальное количество ОЗУ, компактный компилятор и высокую производительность в среде выполнения.

Джордж объясняет, что добиться этого удалось за счёт нескольких трюков с указателями и оптимизацией кода. В результате, Micro Python поддерживает почти весь синтаксис Python 3.4 (работа ещё продолжается), а большинство скриптов занимают гораздо меньше ОЗУ и выполняются заметно быстрее, по сравнению с CPython.

Минимальный билд под ARM умещается в 80k, а со всеми функциями под Linux — в 200k. Базовая REPL-среда требует всего 2 килобайта ОЗУ.

Дополнительно, в Micro Python встроены два режима AOT-компиляции в нативный код, есть встроенный ассемблер для написания критичных ко времени приложений на микроконтроллере.

Реализация написана на C99 ANSI C и нормально компилируется под Unix (POSIX), Mac OS X, Windows и некоторых ARM-микроконтроллерах.

Вот документация Micro Python - https://micropython-ru.readthedocs.io/ru/latest/
Какой принцип ООП описывает следующее предложение? Этот принцип является способностью использовать общий интерфейс для нескольких форм (типов данных).
Anonymous Quiz
10%
Инкапсуляция
48%
Полиморфизм
14%
Абстракция
28%
Наследование
ООП на Python: концепции, принципы и примеры реализации
Программирование на Python допускает различные методологии, но в его основе лежит объектный подход, поэтому работать в стиле ООП на Python очень просто.
Подробно с примеры с теорией изложены ниже по ссылке.
https://telegra.ph/OOP-na-Python-koncepcii-principy-i-primery-realizacii-03-11

Обсудить можно в нашем чате.
​​Heap Sort (Сортировка кучей)

Сортировка кучей, пирамидальная сортировка — алгоритм сортировки, использующий структуру данных двоичная куча. Это неустойчивый алгоритм сортировки с временем работы O(nlogn)
, где n
— количество элементов для сортировки, и использующий O(1)
дополнительной памяти.

Реализация на Python
# Программа Python для реализации сортировки кучи
# Чтобы скопировать поддерево с корневым индексом i.
#@python_lounge

# n - размер кучи  
def heapify(arr, n, i):
    largest = i # Инициализировать largest как root
    l = 2 * i + 1    # left = 2*i + 1
    r = 2 * i + 2    # right = 2*i + 2
  
    # Проверить, существует ли левый дочерний элемент root и есть ли
    # больше, чем корень

    if l < n and arr[i] < arr[l]:
        largest = l
  
# Проверить, существует ли правый дочерний элемент root и есть ли он
    # больше, чем корень

    if r < n and arr[largest] < arr[r]:
        largest = r
  
  # Сменить корень, если нужно
    if largest != i:
        arr[i],arr[largest] = arr[largest],arr[i] # swap
  
        # Заполнить корень.
        heapify(arr, n, largest)
  
# Основная функция для сортировки массива заданного размера
def heapSort(arr):
    n = len(arr)
  
    # Создание maxheap.
    # Поскольку последний родитель будет в ((n // 2) -1), мы можем начать с этого места.

    for i in range(n // 2 - 1, -1, -1):
        heapify(arr, n, i)
  
  # Один за другим извлечь элементы
    for i in range(n-1, 0, -1):
        arr[i], arr[0] = arr[0], arr[i]  # swap
        heapify(arr, i, 0)
  
# Код драйвера для тестирования выше
arr = [ 12, 11, 13, 5, 6, 7]
heapSort(arr)
n = len(arr)
print ("Sorted array is")
for i in range(n):
    print ("%d" %arr[i]),
​​🚀Библиотека OpenCV :-֊ Установка, основные понятия, и сферы применения.🐍

- Что такое OpenCV?
OpenSource Библиотека компьютерного зрения и машинного обучения с открытым исходным кодом. В неё входят более 2500 алгоритмов, в которых есть как классические, так и современные алгоритмы для компьютерного зрения и машинного обучения. Эта библиотека имеет интерфейсы на различных языках, среди которых есть наш любимый Python.

- Установка OpenCV
Инструкцию по установке на Windows можно посмотреть здесь, а на Linuxздесь
.
- Для решении каких проблем была создана библиотека?

OpenCV позволяет достаточно быстро и эффективно реализовывать сложные алгоритмы
машинного зрения. Библиотека содержит более 500 функций, которые позволяют реализовывать приложения работающие во многих областях, в том числе:
- контроль качества выпускаемой продукции;
- обработке изображений в медицине;
- обеспечении безопасности;
- интерфейсе пользователя;
- робототехнике.

-----------------------------------
Исходный код примеров можете найти по ссылке ниже.
[ --code-- ]

Объяснение каждой строки в коде найдите здесь.
[ --explaining-- ]
​​⏱️Создание временных файлов и  каталогов🐍

⚠️Задача
Вам нужно создать временный файл или каталог, которые будут использоваться
во время выполнения вашей программы. После, возможно, вы захотите, чтобы
они были удалены.

Решение
В модуле tempfile есть различные функции, которые помогут решить эту задачу.
Чтобы создать безымянный временный файл, используйте tempfile.TemporaryFile:

from tempfile import TemporaryFile
with TemporaryFile('w+t') as f:
# Чтение/запись в файл
f.write('Hello World\n')
f.write('Testing\n')
# Перейти в начало и прочесть данные
f.seek(0)
data = f.read()
# Временный файл уничтожен
Также вы можете использовать файл таким образом:
f = TemporaryFile('w+t')
# Использовать временный файл
...
f.close()
# Файл уничтожен

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

Объяснение кода по ссылке ниже
https://teletype.in/@tyom/DD1R_X2U5
​​📄Объединяем словари
с помощью функции update()📖.

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

Определим словарь pythons , содержащий имена юмористов:

>>> pythons = {
...'Chapman': 'Graham',
...'Cleese': 'John',
...'Gilliam': 'Terry',
...'Idle': 'Eric',
...'Jones': 'Terry',
...'Palin': 'Michael'}
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Gilliam': 'Terry',
'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael'}
Кроме того, у нас есть еще один словарь — others , содержащий имена других
юмористов:
>>> others = { 'Marx': 'Groucho', 'Howard': 'Moe' }

Теперь появляется еще один программист, который решил, что члены второго словаря
others должны быть членами первого:
>>> pythons.update(others)
>>> pythons
{'Chapman': 'Graham', 'Cleese': 'John', 'Gilliam': 'Terry',
'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael',
'Marx': 'Groucho', 'Howard': 'Moe'}

- А что произойдет, если во втором словаре будут находиться такие же ключи, что
и в первом?
- Победит значение из второго словаря:

>>> first = {'a': 1, 'b': 2}
>>> second = {'b': 'platypus'}
>>> first.update(second)
>>> first
{'a': 1, 'b': 'platypus'}
Программируете на Python или хотите начать? Тогда заходите в авторский телеграм-канал о Python!
В нём:

🔺 топ ошибок новичков,
🔺 лайфхаки и трюки,
🔺 красивый код,
🔺 разбор вопросов с собеседований.

Тем, кто хочет понимать, что пишет: @python_in_depth
Сделать пост в Инстаграм с помощю python написав 4 строчки кода
Перед запуском скрипта нужно убедиться, что на машине установлен модуль instabot,
в противном случае нужно её установить написав в терминале следующую команду.
pip install instabot


from instabot import bot
bot = Bot()
bot.login(username = "user_name", password = "user_password")
bot upload_photo("Post.jpg", caption = "Posted via Python Bot")

Обсудить пост и пообщатся можно в нашем чате.
​​ - "Я тебя по IP вычислю". 👶🏻

Думаю все наши подписчики так или иначе сталкивались с подобной ситуацией.

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

Для этого нам понадобится модуль названный ip2geotools и еще модуль socket

;Установить их можно соответственно командами :
> pip install ip2geotools
> pip install socket

;Сам скрипт :

import socket
from ip2geotools.databases.noncommercial import DbIpCity

IP = input("Введите IP")
response = DbIpCity.get(IP,api_key = "free")
print ("IP : ", IP)
print ("City : ", response.city)
print ("Region:", response.region)
print ("Country:", response.country)


-------------------------------------------------
Обсудить пост и пообщаться можно в нашем чате.
Эхо Бот для телеграма на python
используемые модули logging . telegram

"""
Простой бот для ответа на сообщения Telegram.
Сначала определяется несколько функций-обработчиков. Затем эти функции передаются в
Диспетчер и зарегистрированы по месту.
Затем бот запускается и работает, пока мы не нажмем Ctrl-C в командной строке.
Использование:
Базовый пример Echobot, повторяет сообщения.
Нажмите Ctrl-C в командной строке или отправьте сигнал процессу, чтобы остановить
бот.
"""
__________________________________________
Код можете найти по этой ссылке.
A oбсудить пост и пообщаться можно в нашем чате
​​Как объединить видео и аудио файлы в ffmpeg-python
Вот код python после того, как у вас есть pip install ffmpeg-python в вашей среде:

import ffmpeg
input_video = ffmpeg.input('./test/test_video.webm')
input_audio = ffmpeg.input('./test/test_audio.webm')
ffmpeg.concat(input_video, input_audio, v=1, a=1).output('./processed_folder/finished_video.mp4').run()

После обработки ваш файл будет лежать в файле ./processed_folder/finished_video.mp4

v=1 : Установите количество выходных видеопотоков, то есть также количество видеопотоков в каждом сегменте. Значение по умолчанию-1.
a=1 : установите количество выходных аудиопотоков, то есть также количество аудиопотоков в каждом сегменте. Значение по умолчанию-0.
Для получения подробной информации о ffmpeg.concat , проверьте: https://ffmpeg.org/ffmpeg-filters.html#concat .
Вы можете проверить больше примеров здесь: https://github.com/kkroening/ffmpeg-python/issues/281
PS. Если вы используете MacOS и у вас есть ошибка: FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg' во время выполнения кода, просто brew install ffmpeg в вашем terminal.