Как мне вызвать мою функцию

def press(clickLeft=False, *args):
    buttons = {'Enter': 0x0D, 'Ctrl': 0x11, 'a': 0x41,'c': 0x43, 'v': 0x56}
    codes = [buttons[b] for b in args]
    for b in codes:
        win32api.keybd_event(b, 0,0,0)
    if clickLeft:
        click()

Если я назову это так

press('Ctrl', clickLeft=True)

Выдает ошибку

TypeError: press() got multiple values for argument 'clickLeft'
0
pissing since 1984 14 Май 2021 в 01:55

1 ответ

Лучший ответ

По соглашению Python, аргументы должны идти перед аргументами ключевого слова (kwargs). Итак, если вы переместите args перед необязательными аргументами / ключевыми словами, это должно решить проблему:

def press(*args, clickLeft=False):
   pass

Затем вы называете это, как вы предложили:

press('Ctrl', clickLeft=True)
0
DHamrick 13 Май 2021 в 23:01