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)
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)
файлы с одинаковым именем
# функцию можно будет вызвать так: 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
try:
foo()
bar()
except:
baz()
try:
foo()
except:
baz()
else:
bar()
--nogui
, тогда он будет читать команды со стандартного входа, а лог консоли писать или на стандартный вывод или на stderr, нужно смотреть куда именно.# ': str' - это type hint. На выполнение не влияет, оно в первую очередь для читаемости. Можешь пока пропустить.
def command_plus(args: str): # функция получает аргумент как строку, вместо вызова input().
"Складывает указанные числа." # doc-string содержит человекочитаемое описание функции
print("Калькулятор на сложение")
parts = [int(part) for part in args.split()] # операции со строками, list comprehensions
if not parts: # какие значения в питоне истинные (truey), какие ложные (falsy)?
parts.append(int(input("1-е число: ")))
parts.append(int(input("2-е число: ")))
res = sum(parts)
print(f"Результат: {res}") # f-строки
# словарь, содержащий имя команды и её функцию
commands = {
'calc +': command_plus,
# тут будут другие команды
}
while True:
cmd = input('Введите команду: ') # например, "calc + 2 3 5"
for cmd_name, cmd_func in commands.items(): # цикл for, операции со словарями
if cmd.startswith(cmd_name): # операции со строками
cmd = cmd[len(cmd_name):] # срезы (slice)
try: # обработка исключений
cmd_func(cmd)
except Exception as err:
print(f"Произошла ошибка: {err}")
break # операторы передачи управления
else: # Как работает оператор else: совместно с циклами?
if cmd == 'exit':
print('До свиданья')
break # прерываем while
else:
print(f"Неизвестная команда: {cmd}")
file = open('Файл.txt', 'r', encoding = 'utf-8'), то есть работаю с файлом, который находится в папке с main.py,
class discord.ext.commands.Bot
Represents a discord bot.
This class is a subclass of discord.Client and as a result anything that you can do with a discord.Client you can do with this bot.
from discord.ext import commands
from discord.ext.commands import Bot