gpt4 book ai didi

python - 如何创建带有可选参数的 Python 函数?

转载 作者:行者123 更新时间:2023-12-03 11:47:00 26 4
gpt4 key购买 nike

我有一个 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 的原型(prototype)看起来像:
_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参数,它允许您在 a,b,c 之后传递任意数量的参数.您必须添加一些逻辑来映射 args -> c,d,e,f但它是一种重载的“方式”。

def myfunc(a,b, *args, **kwargs):
for ar in args:
print ar
myfunc(a,b,c,d,e,f)

它将打印 c,d,e,f 的值

同样,您可以使用 kwargs参数,然后你可以命名你的参数。
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将有一个字典,其中包含 a,b 之后的所有键值参数

关于python - 如何创建带有可选参数的 Python 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65451005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com