



在实践中,列表推导式往往过长,难以用单行表示。并且,列表推导式通常由多个独立的逻辑部分组成,这些逻辑在编码过程中会独立变化。这会带来不便,但可以通过一个小技巧解决问题:在方括号内,Python的空白字符不起作用。开发者可以利用这一点,通过换行使列表推导式更易读且更易于维护:
还有另一种变体:
以上代码将推导式拆分为多行。对于复杂的推导式,建议读者也拆分为多行。这么做有几个好处,最显著的是可读性大幅提升。在方括号内,推导式完成了三项工作:表达式(word+word);序列(for word in words);以及过滤条件(if len(word)<5)。三项工作的逻辑相互独立,拆分成多行比单行更容易阅读和理解。阅读代码时,多行拆分其实是做了预先解析。
多行拆分推导式还有另一个好处,可使版本控制和代码审查中的差异更加精准。假如笔者和读者在同一个开发团队,分别在不同的功能分支上对这段代码进行修改。在笔者的分支中,将表达式改为word * 2;而在读者的分支中,将条件改为len(word)<7。如果推导式是单行的,版本控制工具会将其视为合并冲突,最后合并的人需要手动解决冲突问题
。但是,由于将列表推导式拆分成了三行,代码控制工具可以自动合并两个分支。而且,如果进行代码审查,审查者能立即识别出具体的更改,无须逐行阅读并思考。