我可以在Python包装函数中只传递关键字参数的关键字名称吗



我对这些问题进行了深入研究,似乎无法解决。

基本上,我想把一个可选的关键字传递给";wrapperfunc";以便我从";load_ data";函数。我希望参数wrapperfunc指定对数据执行的方法。

我确信这是一个以正确的方式解开争论的案例?

import numpy as np
def load_data(remove_smallest = None, remove_largest = None):
data = np.arange(0,100,1)
if remove_smallest != None:
data = data[remove_smallest::]
elif remove_largest != None:
data = data[0:(100-remove_largest)]
else:
data = data
return print(data)

def wrapperfunc(**args):
val = [10, 20, 30]
for v in val:
load_data(args = v)

wrapperfunc(remove_smallest)
wrapperfunc(remove_largest)

**kwargs只是str: object的dict,所以你可以让包装器取一个键名,用它创建一个dict,并用它来调用包装函数:

def wrapperfunc(key):
val = [10, 20, 30]
for v in val:
load_data(**{key: v})

wrapperfunc('remove_smallest')
wrapperfunc('remove_largest')

否,关键字参数纯粹是语法,但如果名称与命名参数不对应,则名称和值会收集在dict中。

最接近的方法是传递一个str值,然后将一个未封装的dict传递给load_data

def wrapper(arg):
val = [10, 20, 30]
for v in val:
load_data(**{arg: v})
wrapper('remove_smallest')

最新更新