Mam funkcję Python, która ma kilka argumentów. Niektóre z tych argumentów można pominąć w niektórych scenariuszach.Jak utworzyć funkcję Python z opcjonalnymi argumentami?
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Argumenty d
przez h
są ciągi których każdy ma różne znaczenia. Ważne jest, abym mógł wybrać, które parametry opcjonalne należy przekazać w dowolnej kombinacji. Na przykład: (a, b, C, d, e)
lub (a, b, C, g, h)
lub (a, b, C, d, e, f
lub wszystkie (są to moje wybory).
Byłoby świetnie, gdybym mógł przeciążyć funkcję - ale czytałem, że Python nie obsługuje przeciążania. Próbowałem wstawić niektóre wymagane argumenty int na liście - i otrzymałem błąd niezgodności argumentu.
W tej chwili wysyłam puste ciągi w miejsce pierwszych kilku brakujących argumentów jako symboli zastępczych. Chciałbym móc wywołać funkcję tylko przy użyciu rzeczywistych wartości.
Czy jest jakiś sposób to zrobić? Czy mogę przekazać listę zamiast listy argumentów?
Teraz prototyp używając ctypes wyglądał:
_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]
Related: [Co robi ** (podwójna gwiazda/gwiazdka) i * (gwiazdka/gwiazdka) zrobić dla parametrów ?] (https://stackoverflow.com/q/36901/3357935) –