首页 > 解决方案 > 我可以只在 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)

标签: python

解决方案


**kwargs只是 dicts str: object,因此您可以让包装器获取一个键 name,从中创建一个 dict ,并使用它来调用包装函数:

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


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

推荐阅读