gpt4 book ai didi

python - 将它们作为变量传递时,我可以更改函数参数吗?

转载 作者:行者123 更新时间:2023-11-28 21:57:39 26 4
gpt4 key购买 nike

请原谅我在标题中的措辞不佳,但这里有一个更长的解释:

我有一个函数作为参数接受一些函数,这些函数用于确定从数据库中检索哪些数据,例如:

def customer_data(customer_name, *args):
# initialize dictionary with ids
codata = dict([(data.__name__, []) for data in args])
codata['customer_observer_id'] = _customer_observer_ids(customer_name)

# add values to dictionary using function name as key
for data in args:
for coid in codata['customer_observer_id']:
codata[data.__name__].append(data(coid))
return codata

这使得对函数的调用看起来像这样:

customer_data('customername', target_parts, source_group, ...)

其中一个函数是用一个额外的参数定义的:

def polarization_value(customer_observer_id, timespan='day')

我想要的是一种巧妙地更改时间跨度变量的方法。一种明显的方法是在 customer_observer 中包含一个关键字参数,并在被调用的函数名称为“polarization_value”时添加一个异常,但我觉得有更好的方法可以做到这一点。

最佳答案

您可以使用 functools.partial并将 polarization_value 传递为:

functools.partial(polarization_value, timespan='day')

例子:

>>> import functools
def func(x, y=1):
print x, y
...
>>> new_func = functools.partial(func, y=20)
>>> new_func(100)
100 20

您可能还会发现这有帮助:Python: Why is functools.partial necessary?

关于python - 将它们作为变量传递时,我可以更改函数参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19606267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com