Ограничение стандартного Python - 52AnTIMateria812/Plyer GitHub Wiki
Стандартная библиотека (Standard Library) языка Python славится своим принципом «батарейки в комплекте». Однако эти «батарейки» заканчиваются там, где начинается низкоуровневое взаимодействие со специфичными или проприетарными интерфейсами операционных систем оборудования (Windows, macOS, Linux, Android, iOS).
Проблема кроссплатформенности
Представьте, что вам нужно реализовать простую задачу — отправить пользователю системное уведомление на рабочий стол. В стандартном Python нет функции send_notification(). Разработчику придется писать "лапшу" из условий:
import platform
def notify(title, message):
os_name = platform.system()
if os_name == 'Windows':
from win10toast import ToastNotifier
toaster = ToastNotifier()
toaster.show_toast(title, message)
elif os_name == 'Linux':
import subprocess
subprocess.Popen(['notify-send', title, message])
elif os_name == 'Darwin': # macOS
import os
os.system(f"""osascript -e 'display notification "{message}" with title "{title}"'""")
else:
print(f"[{title}] {message}")
Такой подход:
- Нарушает принцип DRY — заставляет дублировать логику.
- Размывает бизнес-логику платформозависимым кодом, увеличивая сложность рефакторинга.
- Требует знания Win32API, Bash или AppleScript, уводя разработчика от основной архитектурной задачи.