【发布时间】:2020-06-23 17:59:00
【问题描述】:
我正在研究数据科学,我有一个相当大的脚本,其中包含许多帮助函数来对 pandas 数据帧进行分析,然后是一个利用我的函数来获得一些结果的主要函数。
问题是大多数或函数输入只是数据框中列的名称(因为它们被视为来自用户的输入),这导致许多函数具有部分相同的输入。
我想知道是否有可能有一个包含我所有参数的字典,并且只需将字典传递给每个函数而不修改字典?也就是说,每个函数都必须忽略 dict 中不是该特定函数输入的关键字。
举个例子说我有这个功能。
def func1(a, b, c):
return a + b * c
我有这个字典,其中包含我所有函数的输入。
input_dict = {'a': 1,
'b': 2,
'c': 3,
'd': 4}
如果我用这个字典作为输入调用这个函数:
value = func1(**input_dict)
由于意外的参数 d,我会得到一个错误。
这里有什么不涉及更改字典的解决方法吗?我的代码有效,但我希望避免到处都有如此多的重复输入参数。
提前谢谢:)
【问题讨论】:
-
将函数 def 更改为
def func1(a, b, c, **kwargs),所以它需要 any number of keyword args。或者更简单的def func1(**kwargs) -
如果您觉得需要将您的参数打包到
dict中以调用您的辅助函数,这是一个好兆头,您可能希望使用辅助函数作为方法来定义一个类。然后你的类的一个实例充当input_dict。你从func1(**input_dict)转到d = Foo(**input_dict); d.func1()。func1的定义然后使用它需要的那些实例属性。 -
IMO 这仍然是 How does one ignore unexpected keyword arguments passed to a function? 的副本。在这里发布是因为时间线不存储重复的链接。
标签: python dictionary data-science