Python列表处理链式函数调用与分步调用哪种更符合PEP8规范
结论
两种写法没有绝对的对错,PEP8并没有强制禁止短层级的嵌套函数调用,选择哪种方式核心遵循可读性优先的原则即可,另外你给出的方案2示例存在多余前置缩进,这一点不符合PEP8规范。
两种方案的适用场景
- 方案1适合以下场景:
函数语义非常清晰、调用嵌套层级在3层及以内,且不需要复用中间处理结果。这种写法简洁紧凑,没有冗余的临时变量,符合PEP8的简洁性要求。
比如如果三个函数分别是filter_invalid、sort_by_id、distinct这种语义极明确的函数,写为output_list = distinct(sort_by_id(filter_invalid(input_list)))完全没有可读性问题。 - 方案2适合以下场景:
函数逻辑复杂、函数名表意模糊,或者后续需要用到f1、f2的中间输出做其他操作。这种写法可以通过给中间变量起语义化名字的方式降低理解成本,更符合PEP8的可读性优先原则。
注意方案2的示例代码每行开头有多余的前置空格,PEP8要求顶层代码不需要额外缩进,需要删除这部分缩进。同时不建议使用output_list1、output_list2这种无意义的临时变量名,可根据函数处理逻辑命名为filtered_list、sorted_list这类有明确含义的名称,进一步提升代码可维护性。
额外建议
如果后续函数处理链路变长,嵌套层级超过3层,不管什么场景都建议拆分为带语义化中间变量的写法,避免多层嵌套导致的可读性下降。
内容的提问来源于stack exchange,提问作者utengr
相关产品推荐
相关产品推荐

