J'ai une fonction Python qui prend plusieurs arguments. Certains de ces arguments pourraient être omis dans certains scénarios.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Les arguments à dtravers hsont des chaînes qui ont chacune des significations différentes. Il est important que je puisse choisir les paramètres facultatifs à passer dans n'importe quelle combinaison. Par exemple,, (a, b, C, d, e)ou (a, b, C, g, h), ou (a, b, C, d, e, f, ou tous (ce sont mes choix).
Ce serait formidable si je pouvais surcharger la fonction - mais j'ai lu que Python ne prend pas en charge la surcharge. J'ai essayé d'insérer certains des arguments int requis dans la liste - et j'ai obtenu une erreur de discordance d'argument.
En ce moment, j'envoie des chaînes vides à la place des premiers arguments manquants en tant qu'espaces réservés. Je voudrais pouvoir appeler une fonction en utilisant simplement des valeurs réelles.
Y a-t-il un moyen de faire ça? Puis-je transmettre une liste au lieu de la liste d'arguments?
En ce moment, le prototype utilisant des ctypes ressemble à ceci:
_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]