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