[英]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.