У меня есть функция 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]