• Как перевести с Python на php?

    Vindicar
    @Vindicar
    RTFM!
    Ну например, curl для запросов и функции json для работы с форматом.
    Ответ написан
    Комментировать
  • Python как обновить вывод в консоли?

    Vindicar
    @Vindicar
    RTFM!
    Кури curses или аналоги. Но встроенный модуль curses работает только под линуксом, а под винду нужно поискать что-то другое, типа asciimatics или unicurses.
    Ответ написан
    Комментировать
  • Unittest в Python?

    Vindicar
    @Vindicar
    RTFM!
    Приведенный код - это и есть юнит-тест.
    Юнит-тест проверяет, что отдельный модуль (класс, функция и т.п.) реализует ожидаемое поведение, как наблюдаемое снаружи, так и реализуемое внутри. Иными словами, он проверяет соответствие модуля ожидаемому интерфейсу.
    Интеграционный тест проверяет способность разных модулей взаимодействовать в предполагаемых рамках, т.е. проверяет правильность проектирования самого интерфейса взаимодействия. Достаточно ли возможностей для взаимодействия? Не забыли ли мы какой-то метод?
    Ответ написан
  • Ошибка: mute_role = discord.utils.get(ctx.message.guild.roles, name = 'mute') AttributeError: 'NoneType' object has no attribute 'guild', что зделать?

    Vindicar
    @Vindicar
    RTFM!
    Наверно, слэш команды не связаны с сообщением, а потому ctx.message - это None.
    Но ты можешь получить ссылку на гильдию и через member.
    Ответ написан
    1 комментарий
  • Почему в методе класса TypeError: takes 1 positional argument but 2 were given?

    Vindicar
    @Vindicar
    RTFM!
    Потому что self.get_x().
    В питоне доступ к полям/методам self ВСЕГДА явный, в отличие от других языков (типа C++ или C#), где this можно опустить.
    Собственно, ошибка тебе и говорит, что питон не может именно НАЙТИ get_x().
    Ответ написан
    7 комментариев
  • Как создать проект в Visual Studio 2022 с двумя разными языками (Python и C++)?

    Vindicar
    @Vindicar
    RTFM!
    Так просто не получится.
    Интерпретатор питона можно встроить в своё приложение, но это задачка тем более не из простых.
    Какую задачу ты решаешь? Может, можно проще.
    Ответ написан
  • Активность в приложениях?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала определи понятие "активность".
    Время работы процесса приложения?
    Время, пока окно приложения активно, т.е. находится на переднем плане и/или имеет фокус?
    Время, пока пользователь манипулирует клавиатурой и мышью, пока окно приложения активно?
    Вот исходя из этого уже и гугли либо работу с процессами, либо работу с окнами (наверняка потербуется winapi), либо установку хуков на клавиатуру/мышь. Язык программирования выбираешь сам, так как тема не тривиальная, и бороться одновременно с инструментарием и с языком будет сложно вдвойне.
    Ответ написан
    Комментировать
  • Активность клана в игре на discord.py?

    Vindicar
    @Vindicar
    RTFM!
    Да, можно.
    Пишешь бота, который постоянно висит на сервере, периодически опрашивает список пользователей и смотрит их activity, после чего обновляет результаты в БД, например.

    Подробности зависят от предпочитаемого языка программирования и библиотеки для работы с дискордом.
    И да, сначала учишь язык программирования, потом пишешь бота. Попытаешься одновременно - наступишь на уйму элементарных грабель. Боты, всё же, не такая тривиальная вещь.
    Ответ написан
    Комментировать
  • Как правильно переносить параметры?

    Vindicar
    @Vindicar
    RTFM!
    Как тебе удобнее, лишь бы одинаково в одном блоке кода.
    Второй подход сильнее обкусывает длину строки, первый подход может вносить путаницу, если используется внутри заголовка if / while / with или при определении функции.
    Ответ написан
    Комментировать
  • Обязательно ли использовать класс в Python?

    Vindicar
    @Vindicar
    RTFM!
    Классы удобны, когда у тебя есть некая сущность, наделённая состоянием и поведением. Иными словами, если есть поведение (т.е. функции) и оно требует сохранения каких-то данных между вызовами. Да, можно хранить эти данные через возврат значений и передачу параметров. По-сути, так реализуется ООП в языках вроде C (не путать с C++). Если эта сущность соответствует какому-то предмету, с которым ты работаешь, так еще лучше.
    Ответ написан
  • Win32api | python | Как создать окно приложения, где взять wndProc?

    Vindicar
    @Vindicar
    RTFM!
    Тебе повезло, я недавно такое делал.
    Нельзя просто взять и передать питоновскую функцию в WinAPI, так как у них совершенно разные способы вызова. Тебе сначалу нужно описать тип данных - указатель на функцию. Примерно так.
    import ctypes
    import ctypes.wintypes as w
    LRESULT = w.LPARAM
    WNDPROC = ctypes.WINFUNCTYPE(LRESULT, w.HWND, w.UINT, w.WPARAM, w.LPARAM)

    Вот после этого ты можешь предоставить свою оконную функцию вида
    def wnd_proc(hwnd: w.HWND, message: w.UINT, wParam: w.WPARAM, lParam: w.LPARAM) -> LRESULT:


    А потом уже указываешь это в классе окна:
    wndСlass.lpfnWndProc = WNDPROC(wnd_proc)

    Но тут есть еще один подвох - оконных сообщений много, и их набор отличается для разных версий винды. Есть базовый, более-менее статичный набор, но помимо них может прийти много чего.
    Тут на помощь приходит DefWindowProc().
    def wnd_proc(hwnd, message, wParam, lParam):
        if message == SOME_MESSAGE_YOU_WANT:  # отлавливаешь интересующие тебя сообщения
            DoStuff()  # и обрабатываешь их
            return 0  # не забудь вернуть 0 как признак успеха!
        # а все остальное отдаёшь в DefWindowProc()
        return user32.DefWindowProcW(hwnd, message, wParam, lParam)

    Обрати внимание, что как многие функции WinAPI, DefWindowProc() существует в двух видах - с сууфиксом A (однобайтовая кодировка ANSI) и с суффиком W (wide char, двухбайтовый вариант юникода). Смешивать не рекомендую, выбери один суффикс и придерживайся его во всей программе.

    И ещё подвох, который меня чуть с ума не свёл - переменная с классом окна ДОЛЖНА существовать, пока существует окно. Иными словами, её не стоит делать локальной в методе - иначе сборщик мусора питона её потом соберёт, что будет неприятным сюрпризом для WinAPI. Поймаешь крэш приложения.
    Ответ написан
    7 комментариев
  • Что такое executor в aiogram?

    Vindicar
    @Vindicar
    RTFM!
    Аиограм умеет работать в двух режимах - polling и webhooks. Как я понял, executor позволяет остальным механизмам бота абстрагироваться от используемого режима.
    Например, start_polling() просто создаёт реактор (loop) asyncio и запускает в нём задачу self.dispatcher.start_polling(), а потом ждёт сигнала завершения. Ну и еще дергает обработчики on_startup и on_shutdown. Это можно сделать и вручную, при необходимости.
    webhooks использует aiohttp для реализации веб-сервера, который будет получать запросы от telegram.
    Ответ написан
    Комментировать
  • Как сменить пути поиска импорта?

    Vindicar
    @Vindicar
    RTFM!
    файлы с одинаковым именем

    Никак. Питон сначала ищет имя модуля в кэше, и импортирует только если такого модуля не найдено.
    Может, будет проще как-то импортировать по квалифицированному имени, типа пакетА.подпакетБ.модуль? Тогда имена будут разные.
    В общем, поясни, что ты пытаешься сделать.
    Ответ написан
  • Как написать написать функцию, которая принимает любое количество чисел и составляет из них максимальное?

    Vindicar
    @Vindicar
    RTFM!
    Если принимает любое количество именно чисел (т.е. типы данных int или float), то есть стандартная функция max().
    Если нужно её имитировать, то
    # функцию можно будет вызвать так: max(1,2,3,4) 
    # или так 
    # l = [1,2,3,4]
    # max(*l)
    
    # если нужно, чтобы функция принимала список чисел, а не числа по отдельности, исправь так
    # def my_max(args):
    # и вызывай так: max([1,2,3,4]) или max(l)
    
    def my_max(*args):   
      if not args:  # не передали ни одного числа?
        raise TypeError("Нет ни одного числа")  # ну или можно вернуть 0, если это требуется
      val = args[0]  # запоминаем первое переданное число
      for v in args[1:]:  # перебираем остальные
        if val < v:
          val = v
      return v

    А вот что касается ввода чисел с клавиатуры, то тут уже подумай сам.
    input() даст тебе одну введённую строку.
    Почитай про метод .split() у строк, он позволит разбить строку по пробелам в список строк.
    Затем сделай новый пустой список, пройдись по списку строк, каждый элемент обработай int() или float(), и добавь результат в этот новый список.
    Тогда у тебя будет список чисел, который можно скормить my_max().
    Ответ написан
    Комментировать
  • Почему этот код выкидывает ошибку "NameError: name 'BarCode' is not defined"?

    Vindicar
    @Vindicar
    RTFM!
    BarCode еще не определен на момент его упоминания в аннотации.
    Либо поставь BarCode выше чем Product, либо замени List[BarCode] на List['BarCode'] (опережающая ссылка), либо добавь в начало from __future__ import annotations (делает ссылки опережающими автоматически).
    Ответ написан
    1 комментарий
  • Как написать скрипт, который будет удалять сам себя, если в директории будут сторонние файлы?

    Vindicar
    @Vindicar
    RTFM!
    Храни в скрипте список не-сторонних файлов, а затем pathlib в помощь. Там тебе и перечисление файлов в каталоге, и извлечение путей, и манипуляции с файлами.
    Вот только зачем?
    Ответ написан
  • Зачем могут понадобиться else и finally в конструкции try-except?

    Vindicar
    @Vindicar
    RTFM!
    Рассмотрим два сценария:
    try:
      foo()
      bar()
    except:
      baz()

    try:
      foo()
    except:
      baz()
    else:
      bar()

    В первом случае baz() вызовется, если было выброшено исключение в foo() или в bar().
    Во втором случае baz() вызовется, если было выброшено исключение в foo(), а исключения в bar() останутся необработанными.
    В обоих случаях bar() вызовется только если foo() отработало без исключений.
    Какой из двух способов применять, зависит от нужного тебе поведения.

    Насчёт finally ответили выше. Обычно finally применяется в ситуациях, когда тебе обязательно нужно выполнить какое-то действие по окончании операции, независимо от её исхода. Например, если ты открыл файл, тебе обязательно нужно его закрыть, когда ты с ним больше не работаешь, и тому подобное.
    Ответ написан
  • Как вставить фотографию вместо белого фона?

    Vindicar
    @Vindicar
    RTFM!
    Используй PIL (пакет pillow), в частности, PIL.Image.composite() Только нужно будет разобраться, как сформировать правильную маску.
    Ответ написан
    1 комментарий
  • Как сделать вывод времени дискорд?

    Vindicar
    @Vindicar
    RTFM!
    Ответ написан
    Комментировать