我有一个Python函数,它接受几个参数.在某些情况下,可以忽略其中一些参数.

def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
    #code

参数dh是字符串,每个字符串都有不同的含义.重要的是,我可以 Select 在任何组合中传递哪些可选参数.例如,(a, b, C, d, e)(a, b, C, g, h)(a, b, C, d, e, f或全部(这些是我的 Select ).

如果我能重载函数就太好了——但我读到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]

推荐答案

试着把它叫做:obj.some_function( '1', 2, '3', g="foo", h="bar" ).在所需的位置参数之后,可以按名称指定特定的可选参数.

Python相关问答推荐

customtkinter中使用的这个小部件的名称是什么

如何从格式为note:{neighbor:weight}的字典中构建networkx图?

从今天起的future 12个月内使用Python迭代

在函数内部使用eval(),将函数的输入作为字符串的一部分

使用Keras的线性回归参数估计

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

大Pandas 胚胎中产生组合

Odoo 14 hr. emergency.public内的二进制字段

海运图:调整行和列标签

运行终端命令时出现问题:pip start anonymous"

如何使用数组的最小条目拆分数组

django禁止直接分配到多对多集合的前端.使用user.set()

Asyncio:如何从子进程中读取stdout?

Django RawSQL注释字段

使用Python从URL下载Excel文件

Tkinter菜单自发添加额外项目

如何在TensorFlow中分类多个类

我对这个简单的异步者的例子有什么错误的理解吗?

Django Table—如果项目是唯一的,则单行

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?