python - 遍历关键字/函数的最有效方法是什么?
问题描述
我正在开发一个用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
我没有尝试过其他方法,因为我不确定要使用什么 - 我正在使用这种方法,因为我看到一段很久以前使用它的代码。
最好(最有效/优化)的方法是什么?这似乎非常浪费和缓慢,并且具有更多功能,列表中较低的功能可能需要相当长的时间才能达到。
解决方案
我会使用一个字典,其中命令字符串是键,函数是值。字典将有一个 log(n) 搜索时间,并且应该保持树结构的平衡。因此,d
作为dict
,定义类似于:
d = {'func1': myFunc1, 'func2': MyFunc2...}
而且当然:
def myFunc1(args..):
...
def myFunc2(args..):
...
我们最终得到:
if cmd in d:
d[cmd](args...)
推荐阅读
- postgresql - 如何将 Docker 内部的 SpringBoot 应用程序连接到 PostgreSQL 外部
- java - Current location in MapFragment
- c - 为什么参数三等于“TERM_PROGRAM=Apple_Terminal”?
- python - keras utils normalize的目的是什么?
- javascript - 将 json 插入另一个 json
- javascript - 使用节点引入 javascript 页面
- php - 动态幻灯片 php 引导程序
- java - 使用 Jfilechooser 编辑仍然打开的文件副本,并在行尾附加 sum
- django - Django 视图 HttpResponseRedirect
- c++ - 我包括了std,但我仍然收到错误,这是为什么呢?