Ограничение стандартного 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}")

Такой подход:

  1. Нарушает принцип DRY — заставляет дублировать логику.
  2. Размывает бизнес-логику платформозависимым кодом, увеличивая сложность рефакторинга.
  3. Требует знания Win32API, Bash или AppleScript, уводя разработчика от основной архитектурной задачи.