首页 > 解决方案 > 遍历关键字/函数的最有效方法是什么?

问题描述

我正在开发一个用python 3.7编写的终端应用程序。目前,当输入命令时,它通过如下所示的函数传递:

def execute(command):
    if command is None or command.isspace() or command == "":
        terminal()

    command = command.split(" ")
    command = list(command)
    command[0] = command[0].lower()

    var(command)
    iftrue(command)
    ... etc

每个函数看起来像这样:

def func(command):
    if command[0] == "func":
        function code blah blah blah

我没有尝试过其他方法,因为我不确定要使用什么 - 我正在使用这种方法,因为我看到一段很久以前使用它的代码。

最好(最有效/优化)的方法是什么?这似乎非常浪费和缓慢,并且具有更多功能,列表中较低的功能可能需要相当长的时间才能达到。

标签: pythonpython-3.xperformanceoptimization

解决方案


我会使用一个字典,其中命令字符串是键,函数是值。字典将有一个 log(n) 搜索时间,并且应该保持树结构的平衡。因此,d作为dict,定义类似于:

d = {'func1': myFunc1, 'func2': MyFunc2...}

而且当然:

def myFunc1(args..):
    ...

def myFunc2(args..):
    ...

我们最终得到:

if cmd in d:
    d[cmd](args...)

推荐阅读