当前位置: 首页 > 知识库问答 >
问题:

是否有一种优雅的方式通过一个大功能管理多个相关功能?[副本]

贺兴昌
2023-03-14

编辑:
一些人显然误解了这个问题。。我甚至没有仔细询问如何在python中进行切换/案例。请先读一遍,然后再投票结束

我有不同的函数,它们都高度相关,但参数略有不同。作为一个比喻,考虑它们代表不同的排序算法。现在,我想要一个大的参数化函数排序,它从外部调用,然后在内部调用正确的排序算法/正确的函数。
作为一个额外的要求,必须能够给所有这些子函数不同的输入信息(不同的参数数)。

我想出了一个解决办法,但我觉得这是一种糟糕的风格。。有更多经验的人能给出他/她的想法吗?

def function_one(*args):
    arg1, arg2 = args[0:2]
    # do something here
    
def function_two(*args):
    arg3, arg4 = args[2:4]
    # do something here

# imagine that here are more functions

def function_n(*args):
    arg1, arg3, arg5 = args[0], args[2], args[4]
    # do something here

switcher = {
    'one': function_one,
    'two': function_two,
    # ... imagine that here are more mappings
    'n': function_n
}

def some_super_function(arg0, arg1=None, arg2=None, arg3=None, arg4=None, arg5=None, ..., argN=None):
    return switcher.get(arg0)(arg1, arg2, arg3, arg4, arg5, ..., argN)

共有1个答案

阙佐
2023-03-14

我没有看到根据传递的参数选择函数的要求,因此您可以传递一些允许您选择函数的参数。

def function_one(*args):
    print(f'run function_one, args - {args}')
    # do something here


def function_two(*args):
    print(f'run function_two, args - {args}')
    # do something here


# imagine that here are more functions

def function_n(*args):
    print(f'run function_n, args - {args}')
    # do something here


switcher = {
    'one': function_one,
    'two': function_two,
    # ... imagine that here are more mappings
    'n': function_n
}


def some_super_function(func: str, *args):
    return switcher[func](args)

some_super_function('one', 1, 2, 3) # run function_one, args - ((1, 2, 3),)
some_super_function('two', '12', 'asdasda', 11) # run function_two, args - (('12', 'asdasda', 11),)
some_super_function('n', [1, 2, 3], {1: 2}, [123, 321]) # run function_n, args - (([1, 2, 3], {1: 2}, [123, 321]),)

 类似资料:
  • 我试图创建一个音频服务器,我可以上传各种音频文件,我有一个要求,我只能创建一个endpoint创建,我想出了这个,但它确实显示了输入数据的请求表单。

  • 我正在寻找一个更优雅的方法,将这个指令列表变成一个单一的合并指令,其中键'SKU'作为合并的键。这些列表实际上都是很容易被转化为指令的模型。我没有找到一个更优雅的解决方案使用Pydantic。 Dicts/PydanticInstances列表 所需输出: 当前解决方案:

  • 问题内容: 我有以下JavaScript代码: 我如何确保仅在完成后调用? 问题答案: 指定一个匿名回调,并使function1接受它:

  • 假设我有以下功能文件: 我ogin.feature 功能:登录网站 场景:现场登录验证 给定导航到站点登录页 家特色 功能:欢迎页面验证 场景:验证登录后出现的页面 已成功完成给定登录 登录成功后的页面出现时 然后测试完成 在Home.feature文件中,我需要先执行Login.feature,然后调用home.feature.所以当我从运行器测试中执行home时,它会依次执行login,然后是

  • 问题内容: 我是Swift的新手,我已经遍历了一些教程,其中许多教程使用同一个名称多次定义了一个函数。 我已经习惯了其他编程语言,否则将无法执行此操作。 因此,我检查了官方的Swift手册,还检查了override关键字,以了解可以得到的结果,但是仍然无法理解以下代码: 从我看到的函数tableView设置在第1行和第5行,我注意到的唯一区别是第一个tableView函数返回,而第二个函数返回(U

  • 我有0编码知识,但希望你们可以协助修改我在网上找到的代码,以创建多个按钮来执行不同的bat文件。我会将其保存为hta文件,以便在win shell环境中运行。谢谢!!!