Python:引用稍后将声明的函数的优雅方式

时间:2016-01-26 12:41:16

标签: python

我在Python中编写了一个简单的命令行工具。为了简化逻辑,我使用dict来存储命令和处理程序,如下所示:

#!/usr/bin/env python

# some code here

DISPACHERS = {
    "run": func_run
    "list": func_list
}

# other code

问题是,我必须在函数声明之后放置这段代码,这不是我在其他语言中看到的标准做法(即一个块中的常量,变量之后,然后是函数)。

我可以使用字符串来存储函数,并使用像getattr(__main__, "func_run")这样的东西来检索它,所以我可以坚持我的偏好,但我想知道这是不是正确的"方式。

有什么想法吗?

===更新===

因为它是一个处理另一个项目的一些自动化任务的简单python脚本,所以如果可能的话,最好将它保存在一个文件中(没有其他模块)。

1 个答案:

答案 0 :(得分:2)

使用装饰器枚举函数。

dispatchmap = {}

def dispatcher(name):
  def add_dispatcher(func):
    dispatchmap[name] = func
    return func
  return add_dispatcher

 ...

@dispatcher('run')
def func_run(...):
   ...