Python 什么';运行关键字/函数的最有效方法是什么?

Python 什么';运行关键字/函数的最有效方法是什么?,python,python-3.x,performance,optimization,Python,Python 3.x,Performance,Optimization,我正在开发一个用python 3.7编写的终端应用程序。当前,当输入命令时,它会通过如下函数传递: def执行(命令): 如果command为None或command.isspace()或command==“”: 终端() command=command.split(“”) 命令=列表(命令) 命令[0]=命令[0]。下限() var(命令) iftrue(指挥部) ... 等 每个函数如下所示: def func(命令): 如果命令[0]=“func”: 功能代码等等等等 我没有尝试过其他

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

def执行(命令):
如果command为None或command.isspace()或command==“”:
终端()
command=command.split(“”)
命令=列表(命令)
命令[0]=命令[0]。下限()
var(命令)
iftrue(指挥部)
... 等
每个函数如下所示:

def func(命令):
如果命令[0]=“func”:
功能代码等等等等
我没有尝试过其他方法,因为我不确定该使用什么-我使用这个方法是因为我很久以前看到过一段使用它的代码


做这件事的最佳方法是什么?这似乎非常浪费,速度也很慢,而且如果函数较多,列表下方的函数可能需要很长时间才能到达。

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

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

def myFunc1(args..):
    ...

def myFunc2(args..):
    ...
我们最终得到:

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

您可能应该为这些任务使用一个专用模块,比如
argparse
cmd
@DeepSpace。您能详细说明一下吗?对这些模块进行一些研究,您会发现比我在评论/回答中能找到的信息多得多,而且…我只是在@DeepSpace模块列表中添加了一些第三方模块:
单击
调用
docopt
为了发挥它的价值,我在工作中使用了
单击
。“字典将有一个日志(n)搜索时间”可能在非常罕见的大量哈希冲突的情况下。。。除此之外,字典有O(1)lookupI最终使用了这个方法。工作出色