处理自定义逻辑

时间:2018-01-31 08:32:30

标签: python python-2.7

我的理由是:

def main():
    generic_process_000()
    generic_process_001()
    customized_process_000()
    generic_process_002()

如上所示,我需要实现一个Python脚本,它为所有客户端提供一些通用逻辑,并为特定客户端提供一些自定义逻辑。

我想要做的是,当使用客户端代码作为命令行参数运行Python脚本时,客户端代码将确定应该在自定义逻辑上做什么&#34; customized_process_000()&#34; < / p>

我知道可以通过简单的if-then-else语句来实现。但只是想知道是否有更好的方法可以做到这一点。由于Admin不喜欢外部库,如果可能的话,请建议可以通过内置库完成的方法。但如果没有,外部库也可以。

非常感谢如果可以一起提供任何简单的代码示例。

1 个答案:

答案 0 :(得分:0)

您的建议:拥有callable_dict是可行的方法:

def main(client_code):
    setup_callable_dict()
    generic_process_000()
    generic_process_001()
    customized_process_000(client_code)
    generic_process_002()


callable_dict = {}
def setup_callable_dict():
    callable_dict['foo'] = foo
    callable_dict['bar'] = bar
    callable_dict['zoo'] = zoo

def customized_process_000(client_code): 
    if client_code in callable_dict: 
        callable_dict[client_code]() 
    else: 
        raise error

<强>更新

为了提供generic_process_001()的参数并避免全局变量,这些更改可能有所帮助:

def main(client_code):
    callable_dict = setup_callable_dict()
    generic_process_000()
    result = generic_process_001()
    customized_process_000(callable_dict, client_code, result)
    generic_process_002()


def setup_callable_dict():
    callable_dict = {}
    callable_dict['foo'] = foo
    callable_dict['bar'] = bar
    callable_dict['zoo'] = zoo
    return callable_dict 

def customized_process_000(callable_dict, client_code, result): 
    if client_code in callable_dict: 
        callable_dict[client_code](result) 
    else: 
        raise error

def foo(result):
    expand, params, from, res = result
    #  carry on with foo