最佳/建议的Pythonic方式(Ver: 2.7)处理自定义逻辑是什么?

2024-04-20 02:42:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我的情况是:

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

如上所示,我需要实现一个Python脚本,该脚本对所有客户机都有一些通用逻辑,对特定客户机有一些定制逻辑

我想做的是,在运行Python脚本时,使用客户机代码作为命令行参数,客户机代码将决定在定制逻辑“customized\u process\u 000()”中应该做什么

我知道它可以通过简单的if-then-else语句来实现。但我只是想知道有没有更好的方法。由于管理员不喜欢外部libs,如果可能的话,请建议使用内置libs的方法。但如果不是,外部lib也可以

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


Tags: 方法代码命令行脚本参数客户机ifmain
1条回答
网友
1楼 · 发布于 2024-04-20 02:42:32

你的建议是:拥有一个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

相关问题 更多 >