遍历函数参数
Iterate over function parameters
目的是构建一个函数,以便在机器学习项目中构建训练集。我有几组我想尝试的功能(分别,2 x 2,组合..)所以我把它们作为函数参数。
我还添加了字典以调用所选特征集的"import functions"。
例如,如果我选择导入集合 "features1",我将调用 import_features1()
。
我无法遍历函数参数。我尝试使用 **kwargs
,但它没有像我预期的那样工作。
这是我的函数:
def construct_XY(features1=False, features2=False, features3=False, **kwargs):
# -- function dict
features_function = {features1: import_features1,
features2: import_features2,
features3: import_features3}
# -- import target
t_target = import_target()
# -- (trying to) iterate over parameters
for key, value in kwargs.items():
if value is True:
t_features = features_function(key)()
# -- Concat chosen set of features with the target table
t_target = pd.concat([t_target, t_features], axis=1)
return t_target
我应该按照建议使用 locals()
here 吗?
我错过了什么?
你可能想使用这样的东西
# Only accepts keyword attributes
def kw_only(**arguments):
# defaults
arguments['features1'] = arguments.get('features1', False)
arguments['features2'] = arguments.get('features2', False)
arguments['features3'] = arguments.get('features3', False)
for k, v in arguments.items():
print (k, v)
print(kw_only(one=1, two=2))
使用此构造,您需要在函数中定义默认值。您将只能传递关键字参数,并且能够遍历所有这些参数。
目的是构建一个函数,以便在机器学习项目中构建训练集。我有几组我想尝试的功能(分别,2 x 2,组合..)所以我把它们作为函数参数。
我还添加了字典以调用所选特征集的"import functions"。
例如,如果我选择导入集合 "features1",我将调用 import_features1()
。
我无法遍历函数参数。我尝试使用 **kwargs
,但它没有像我预期的那样工作。
这是我的函数:
def construct_XY(features1=False, features2=False, features3=False, **kwargs):
# -- function dict
features_function = {features1: import_features1,
features2: import_features2,
features3: import_features3}
# -- import target
t_target = import_target()
# -- (trying to) iterate over parameters
for key, value in kwargs.items():
if value is True:
t_features = features_function(key)()
# -- Concat chosen set of features with the target table
t_target = pd.concat([t_target, t_features], axis=1)
return t_target
我应该按照建议使用 locals()
here 吗?
我错过了什么?
你可能想使用这样的东西
# Only accepts keyword attributes
def kw_only(**arguments):
# defaults
arguments['features1'] = arguments.get('features1', False)
arguments['features2'] = arguments.get('features2', False)
arguments['features3'] = arguments.get('features3', False)
for k, v in arguments.items():
print (k, v)
print(kw_only(one=1, two=2))
使用此构造,您需要在函数中定义默认值。您将只能传递关键字参数,并且能够遍历所有这些参数。