How do I create a Python function with optional arguments?
我有一个python函数,它接受几个参数。在某些场景中,可以忽略其中一些参数。
1 2 | def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None): #code |
从
如果我能重载这个函数,那就太好了——但是我读到python不支持重载。我试图在列表中插入一些必需的int参数,但得到了一个参数不匹配错误。
现在我发送空字符串来代替前几个缺少的参数作为占位符。我希望能够使用实际值调用函数。
有什么办法吗?我可以传递一个列表而不是参数列表吗?
现在,使用ctypes的原型看起来像:
1 | _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] |
只需使用*args参数,它允许您在
1 2 3 4 | def myfunc(a,b, *args, **kwargs): for ar in args: print ar myfunc(a,b,c,d,e,f) |
它将打印
同样,可以使用kwargs参数,然后命名参数。
1 2 3 4 5 | def myfunc(a,b, *args, **kwargs): c = kwargs.get('c', None) d = kwargs.get('d', None) #etc myfunc(a,b, c='nick', d='dog', ...) |
然后,Kwargs将拥有一个字典,其中包含在
试着这样称呼它: