簡體   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