繁体   English   中英

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

[英]Can I pass just the keyword name of a keyword argument in a Python wrapper function?

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

基本上,我想将一个可选关键字传递给“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字典,因此您可以让包装器采用一个键 name ,从中创建一个字典,并使用它来调用包装函数:

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM