Birkaç argüman alan bir Python işlevi var. Bu argümanlardan bazıları bazı senaryolarda atlanabilir.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
d
Aracılığıyla yapılan argümanlar , h
her birinin farklı anlamları olan dizelerdir. Herhangi bir kombinasyonda hangi isteğe bağlı parametrelerin geçeceğini seçebilmem önemlidir. Örneğin (a, b, C, d, e)
,, veya (a, b, C, g, h)
, veya (a, b, C, d, e, f
, veya hepsi (bunlar benim seçimlerim).
İşlevi aşırı yükleyebilmem harika olurdu - ama Python'un aşırı yüklemeyi desteklemediğini okudum. Listeye gerekli int bağımsız değişkenlerini eklemeye çalıştım - ve bir argüman uyuşmazlığı hatası aldım.
Şu anda yer tutucu olarak ilk birkaç eksik argümanın yerine boş dizeler gönderiyorum. Sadece gerçek değerleri kullanarak bir fonksiyonu çağırabiliyorum.
Bunu yapmanın bir yolu var mı? Argüman listesi yerine bir liste iletebilir miyim?
Şu anda ctypes kullanan prototip şuna benziyor:
_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]