我有一个包含不同成员变量的类,其中一个是字典列表。我必须对该列表执行一些操作,例如:
最初,我执行不同的功能,其中每个功能在词典(Option1
)列表中执行特定任务。然后,我意识到在这些功能的每一个中,我都在相同的列表上执行相同的循环。我认为,如果我在循环中循环一次并完成所有需要在其中完成的任务,将会提高性能。因此,我创建了不同的函数来执行我想在元素级别而不是列表级别执行的操作,如Option2
所示。
调用函数也需要一定的开销,所以我的问题是:从性能的角度来看,使用Option1
或Option2
更好吗?编译器将更好地优化哪个选项?从代码可维护性和可读性的角度来看呢?
选项1
def add_status(self):
for element_dict in self.list_of_dicts:
element_dict["status"] = function_to_add_status()
def replace_id_with_name(self):
for element_dict in self.list_of_dicts:
element_dict["name"] = function_to_get_name()
element_dict.pop("id")
def remove_empty_elements(self):
for k, v in list(element_dict.items()):
if v == "null":
del element_dict[k]
def clean_up(self):
self.add_status()
self.replace_id_with_name()
self.remove_empty_elements()
选项2
def add_status(element_from_list_of_dicts):
element_from_list_of_dicts["status"] = function_to_add_status()
def replace_id_with_name(element_from_list_of_dicts):
element_from_list_of_dicts["name"] = function_to_get_name()
element_dict.pop("id")
def remove_empty_elements(element_from_list_of_dicts):
if element_from_list_of_dicts.item() == "null":
del element_from_list_of_dicts[k]
def clean_up(self):
for element_dict in self.list_of_dicts:
self.add_status(element_dict)
self.replace_id_with_name(element_dict)
self.remove_empty_elements(element_dict)