Python RU
13.4K subscribers
871 photos
41 videos
36 files
1.12K links
Все для python разработчиков

админ - @haarrp

@python_job_interview - Python собеседования

@ai_machinelearning_big_data - машинное обучение

@itchannels_telegram - 🔥лучшие ит-каналы

@programming_books_it - it книги

@pythonl

РКН: clck.ru/3Fmy2j
加入频道
This media is not supported in your browser
VIEW IN TELEGRAM
📊 Alive-progress on Python

letters = [chr(ord('A') + x) for x in range(26)]
with alive_bar(26, dual_line=True, title='Alphabet') as bar:
for c in letters:
bar.text = f'-> Teaching the letter: {c}, please wait...'
if c in 'HKWZ':
print(f'fail "{c}", retry later')
time.sleep(0.3)
bar()


Alphabet |
███████████████████████████▊ | ▃▅▇ 18/26 [69%] in 6s (3.2/s, eta: 3s)
-> Teaching the letter: S, please wait...


Git: https://github.com/rsalmei/alive-progress
Выберите вариант ответа, где все методы есть методами словаря dict().
Anonymous Quiz
40%
get(), set(), keys(), items()
12%
setdefault(), popitem(), pop(), fromkeys()
8%
clear(), get(), push(), index()
20%
update(), remove(), values(), copy()
19%
Узнать ответ
​​Показываем уведомления на рабочем столе

На macOS это очень просто, даже не нужно ставить дополнительный софт и модули, а использовать встроенный osascript.

import os

def notify_macos(title, text):
os.system("""
osascript -e 'display notification "{}" with title "{}"'
""".format(text, title))


notify_macos("Поздравляю", "Ген супер-человека найден!")

На Linux можно пойти схожим путем, задействуя программу notify-send (если у вас Ubuntu, то она почти наверняка уже установлена):

import subprocess as s

def notify_linux(message, title):
subprocess.Popen(['notify-send', title, message])
return

Разработчики на Windows, и о вас я не забуду. Попробуйте win10toast.

# pip install win10toast
from win10toast import ToastNotifier

toaster = ToastNotifier()
toaster.show_toast("Заголовок",
"Текст",
duration=5)

Есть ли кросс-платформенное решение? Да, это библиотека plyer от создателей Kivy.

# pip install plyer
from plyer import notification

notification.notify(
title='Заголовок',
message='Сообщение',
app_icon=None, # e.g. 'C:\\icon_32x32.ico'
timeout=5, # секунд
)

plyer умеет не только уведомления, но и предоставляет унифицированный интерфейс к всевозможным API декстопных и мобильных ОС.
Однако, plyer потребует установки дополнительного софта или модулей для каждой платформы. Когда вы в первый раз запустите код, не удивляйтесь ошибкам. Например, на macOS мне потребовалось установить Cython и pyobjus. Библиотека plyer сам по себе не вытягивает эти зависимости, поэтому в вашем проекте не забудьте их добавить самостоятельно (например, в requirements.txt)
Декораторы Python | Разбираем Декораторы с примерами.

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

Смотреть это видео на youtube:
https://youtu.be/5BqtkdMGqlY
This media is not supported in your browser
VIEW IN TELEGRAM
🏓 Пинг-Понг, пишем классическую аркадную игру на Python.

https://uproger.com/pong-klassicheskaya-arkadnaya-igra-na-python/

@pro_python_code
translatepy - универсальная библиотека и CLI, написанная на Python, для перевода, транслитерации, проверки орфографии, озвучивания текста в речь и поиск слов в словарях, с использованием следующих API:

• Google Translate
• Yandex Translate
• Bing Translate
• DeepL Translate
• Reverso
• MyMemory
• LibreTranslate

Библиотека использует разные лазейки в API для того чтобы бесплатно делать запросы, соответственно не требуются API ключи для работы сервисов перевода. Также есть возможность написать свой API модуль перевода.

#GitHub | #Python #Translation

@pro_python_code
Что выведет код выше
Anonymous Quiz
16%
4
26%
5
29%
None
29%
RecursionError
🔟 Приложение на Python | Каждое в 10 строк кода + видео объяснение кода.


Запуск: git clone https://github.com/qxresearch/qxresearch-event-1

Список проектов

@pro_python_code
О наследовании атрибутов

Видел тут на одном из каналов задачку про поле класса и наследование. Загадывать вам ее не буду, но объяснение приведу. Пусть:

class Abram:
foo = 10

class Barak(Abram):
pass

class Clara(Barak):
pass

print(Abram.foo, Barak.foo, Clara.foo) # 10 10 10


Тут понятно и новичку, что поле foo вроде как "наследуется" классами Barak и Clara у класса Abram. Однако, давайте попробуем его поменять:

Abram.foo = 20
print(Abram.foo, Barak.foo, Clara.foo) # 20 20 20

Barak.foo = 30
print(Abram.foo, Barak.foo, Clara.foo) # 20 30 30

Abram.foo = 40
print(Abram.foo, Barak.foo, Clara.foo) # 40 30 30


Видим, что у класса Barak и Clara значение стало 30, а Abram.foo живет своей жизнью после Barak.foo = 30 и не перестало влиять на прочие классы.

Работает это так. При поиске атрибута класса сначала спрашивается у самого класса, есть ли у него этот атрибут, если да, то он вернется, если нет, то идут к следующему классу, который старше по иерархии наследования (ClaraBarakAbramobject). Если у него тоже нет, то идут еще дальше, пока не найдут, иначе возникнет исключение AttributeError.

В нашем примере будем рассуждать с конца. Чему равно Clara.foo? Есть ли атрибут foo у Clara? Вообще говоря, его нет, ведь мы ни разу не присваивали ничего к Clara.foo:

>>> 'foo' in Clara.__dict__
False

Предок класса Clara – класс Barak. Как только мы написали Barak.foo = 30 в классе Barak появился свой собственный foo:

>>> Barak.foo = 20
>>> 'foo' in Barak.__dict__
True

А до этого атрибут foo был изначально только у Abram. Если теперь написать Clara.foo = 50, то у каждого из классов будет свой foo.

Clara.foo = 50
print(Abram.foo, Barak.foo, Clara.foo) # 40 30 50

Вывод: как только мы присвоим атрибут, то атрибуты классов-предков перестают на него влиять. Будьте внимательны, ведь такая же логика действует и для методов класса.

@pro_python_code
Что выведет код выше?
Anonymous Quiz
37%
True
17%
False
23%
Error
23%
Узнать ответ
💻 Karbon tracks background mouse events and turns them into artistic values!

pip install karbon

Code: https://github.com/furkanonder/karbon

@pythonl
🐍🚀 Django с нуля. Часть 2: регистрация, авторизация, ограничение доступа

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

https://proglib.io/p/django-s-nulya-chast-2-registraciya-avtorizaciya-ogranichenie-dostupa-2022-06-08

Первая часть :🐍🚀 Django с нуля. Часть 1: пишем многопользовательский блог для клуба любителей задач Python

@pro_python_code
SkinDeepнейронная сеть, что позволяет убирать татуировки с любой части тела на фотографиях

Ограничения:
Дизайн каждой татуировки уникален, он отличается от человека к человеку, поэтому модель может не работать в некоторых случаях.

Не работает с цветными татуировками, в наборе данных их нету

Требуется минимум 3,7 ГБ свободной памяти графического процессора
Flask-boostГенератор приложений на Flask, что помогает ускорить процесс разработки

Особенности:
• Используйте шаблоны для создания приложения Flask.
• Возможность разделять контроллеры, модели, формы, утилиты, активы, страницы Jinja2, макросы Jinja2 на разные каталоги
• Возможность организовывать ресурсы страницы Jinja2 (HTML, JavaScript, CSS) в один и тот же каталог

#Flask #Generator #Python

@pro_python_code
✔️ Пакетная обработка 22 ГБ данных о транзакциях с помощью Pandas.

https://nuancesprog.ru/p/15805/

@pro_python_code
Как легко и быстро создать веб-приложение на базе МО с помощью Python

Независимо от того, сколько моделей вы создали, оффлайн их смогут увидеть лишь несколько человек. Поэтому необходимо их развертывать, чтобы любой смог поработать с ними посредством UI.

В этой статье мы с нуля развернем модель линейной регрессии с помощью Flask, фреймворка Python для разработки веб-приложений. По результатам этого гайда вы сможете поэкспериментировать с простой моделью машинного обучения в браузере, как показано ниже.

Читать дальше