Как мне создать функцию Python с необязательными аргументами?

У меня есть функция 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]
161
задан Stevoisiak supports Monica 26 October 2017 в 18:39
поделиться