gpt4 book ai didi

python - 指示使用特定参数调用函数而不执行它

转载 作者:行者123 更新时间:2023-11-30 22:13:26 25 4
gpt4 key购买 nike

我正在尝试编码逻辑来过滤 Pandas 数据帧。我想将逻辑编码为字典,以子组名称作为键,以过滤子组的函数作为值:

analytics_table_mappings = {
"Jets Fans": BaseFilter.for_jets_fans,
"Patriots Fans": BaseFilter.for_patriots_fans,
...
}

我的 BaseFilter.for_jets_fansBaseFilter.for_patriots_fans 是静态方法,其中包含为每组粉丝过滤数据帧的逻辑。

但是,我想创建一个函数 BaseFilter.for_team_fans,它接受 team 字符串参数来指定要过滤的球队的粉丝。

我当前的尝试是编码这样的东西

analytics_table_mappings = {
"Jets Fans": {"func": BaseFilter.for_team_fans, "args": "Jets"},
"Patriots Fans": {"func": BaseFilter.for_team_fans, "args": "Patriots"},
...
}

我的问题:有没有一种更优雅、更简单、更易于维护的方法?就上下文而言,我是一名数据科学家,这是我最终构建的大型模型的一部分需要交给我的工程团队来维护和保养。他们要求我限制领域特定语言 (DSL) 的数量,以帮助缓和学习曲线并提高代码库的可维护性。我喜欢使用

"Jets Fans": {"func": BaseFilter.for_team_fans, "args": "Jets"},
"Patriots Fans": {"func": BaseFilter.for_team_fans, "args": "Patriots"},

有可能快速演变成​​非常复杂且难以管理的 DSL。我对过滤逻辑进行编码的原因是因为我们过滤的指标类型以及我们如何过滤它们 - 可能会经常演变,因此我没有将它们硬编码到我的代码库中,而是将过滤器逻辑分离为由字典组成的单独的 configurations.py 文件(即 analytics_table_mappings)。因此,我希望保持过滤器逻辑的灵 active ,同时仍使其可供工程师维护。

添加:

我还需要能够处理必须传递多个参数的实例。例如:

    "Jets Fans": {"func": BaseFilter.for_team_fans, "args": "Jets"},
"Patriots Fans": {"func": BaseFilter.for_team_fans, "args": "Patriots"},
"NFC Fans": {"func": BaseFilter.for_team_fans, "args": ["Bears", "Packers", ...]}

最佳答案

您可以考虑functools.partialmethod ,它允许您指定任意数量的 argskwargs:

from functools import partialmethod

mappings = {'Jets Fans': partialmethod(BaseFilter.for_jets_fans, 'Jets'),
'Patriots Fans': partialmethod(BaseFilter.for_patriots_fans, 'Patriots'),
'NFC Fans': partialmethod(BaseFilter.for_team_fans, 'Bears', 'Packers')}

关于python - 指示使用特定参数调用函数而不执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50779810/

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