我的理由是:
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不喜欢外部库,如果可能的话,请建议可以通过内置库完成的方法。但如果没有,外部库也可以。
非常感谢如果可以一起提供任何简单的代码示例。
答案 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