我正在使用 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
由于不确定使用什么方法,因此我没有尝试过其他方法-我之所以使用这种方法,是因为我看到一段很久以前使用它的代码。
什么是最好的(最有效/最优化)方式?这似乎非常浪费且缓慢,并且功能更多,列表下方的功能可能需要花费大量时间。
答案 0 :(得分:1)
我将使用字典,其中命令字符串是键,函数是值。字典将具有log(n)搜索时间,并且应使树结构保持平衡。因此,将d
作为dict
,定义与此类似:
d = {'func1': myFunc1, 'func2': MyFunc2...}
当然:
def myFunc1(args..):
...
def myFunc2(args..):
...
我们最终得到:
if cmd in d:
d[cmd](args...)