# msg_process.py
#
global g_msg_mapping = {}
def process_msg_a(msg):
global g_msg_mapping
# update g_msg_mapping based on msg_a
def process_msg_b(msg):
global g_msg_mapping
# update g_msg_mapping based on msg_b
def process_msg(msg_line, msg_type):
if msg_type == 'A':
process_msg_a(msg_line)
elif msg_type == 'B':
process_msg_b(msg_line)
# main.py
# for each line in a file call msg_process.process_msg
可变的全局变量在Python编程中不是好的实践。 如果用类成员函数替换上述函数,就可以避免使用全局变量。你知道吗
问:有没有什么优雅的方法可以避免在Python函数中使用全局变量而不将它们转换成class
成员函数?
您可以修改不带全局语句的可变对象。你知道吗
在进程\u msg \u a或进程\u msg \u b上尝试类似的操作:
这样,您就不会重新分配全局值(g\u msg\u映射仍然是Dict),而只是修改Dict中的值
您可以将要更新的
dict
作为附加参数传递(见下文)。这样做的好处是函数可以处理比它们自己的类实例更通用的数据结构,但缺点是调用函数时没有明显的副作用(更新)。这可以通过策略命名得到部分缓解。例如process_msg_a
可以是update_map_with_msg_a
相关问题 更多 >
编程相关推荐