我试图改进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, d,e,f – 或所有这些(这些是我的选择)。
这将是巨大的,如果我可以重载的函数 – 但我读到Python不支持重载。我试图在列表中插入一些必需的int参数 – 并得到一个参数不匹配错误。
该函数一旦获得其所有信息,就会传递给C DLL。
现在我发送空字符串代替前几个缺少的参数,作为占位符。我想能够调用一个函数只是使用实际的值。
有什么办法做,也许使用列表?我可以传递一个列表而不是参数列表吗? (注意:在参数列表中有一个整数 – 虽然我可以很容易地改变它,并将char *转换为C在DLL中的int)。
如果可以使用列表而不是参数列表,我仍然能够将函数传递给DLL?
现在使用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]
如果觉得《python中可选参数_带可选参数的Python函数》对你有帮助,请点赞、收藏,并留下你的观点哦!