我正在编写一个处理程序来处理不同类型的数据。这是我目前的解决方案:
def get_handler_by_type(type):
def handler_for_type_A:
...
#code for processing data type A
def handler_for_type_B:
...
#code for processing data type B
def handler_for_type_C:
...
#code for processing data type C
handler_map = {type_A: handler_for_type_A,
type_B: handler_for_type_B,
type_C: handler_for_type_C,
}
return handler_map(type)
但是,这似乎非常低效,因为我会经常调用 get_handler_by_type 并且每次调用它时,都会再次构造字典。
我知道我可以这样做:
def handler_for_type_A:
...
#code for processing data type A
def handler_for_type_B:
...
#code for processing data type B
def handler_for_type_C:
...
#code for processing data type C
handler_map = {type_A: handler_for_type_A,
type_B: handler_for_type_B,
type_C: handler_for_type_C,
}
def get_handler_by_type(type, handler_map = handler_map):
return handler_map(type)
但在我看来,这很丑陋。因为我有 handler_for_type_Xs 和 handler_map 正在污染全局空间。有没有办法既高效又优雅地做到这一点?
感谢您的任何意见。