【发布时间】:2012-03-21 08:20:05
【问题描述】:
我有一个带有多个参数的 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]
【问题讨论】:
标签: python function arguments optional-arguments