У мене є функція Python, яка бере декілька аргументів. Деякі з цих аргументів можуть бути опущені в деяких сценаріях.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Аргументи d
- h
це рядки, які мають різні значення. Важливо, щоб я міг вибрати, які необов'язкові параметри передавати в будь-якій комбінації. Наприклад, (a, b, C, d, e)
або (a, b, C, g, h)
, або (a, b, C, d, e, f
, або всі вони (це мій вибір).
Було б чудово, якби я міг перевантажити функцію - але я прочитав, що Python не підтримує перевантаження. Я спробував вставити деякі необхідні аргументи int у список - і отримав помилку невідповідності аргументів.
Зараз я надсилаю порожні рядки замість перших пропущених аргументів як заповнювачів. Я хотів би мати можливість викликати функцію просто за допомогою фактичних значень.
Чи можна це зробити? Чи можу я передати список замість списку аргументів?
Зараз прототип з використанням ctypes виглядає приблизно так:
_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]