在Python中避免长代码行

6 投票
1 回答
650 浏览
提问于 2025-04-17 17:28

我尽量把我的代码控制在每行80个字符以内,这样在我设置的标准窗口中可以方便地并排查看。为了做到这一点,我写了一个Python 2.7的代码结构,如下所示:

subseq_id_to_intervals_dict, subseq_id_to_ccid_formats_dict, subseq_id_to_min_max_count_dict = map_cases(opts,
                                            format_to_ccid_funcs,
                                            sys.stdin)

于是我把它分成了这样:

subseq_id_to_intervals_dict,
subseq_id_to_ccid_formats_dict,
subseq_id_to_min_max_count_dict = map_cases(opts,
                                            format_to_ccid_funcs,
                                            sys.stdin)

但这样做导致了错误

NameError: name 'subseq_id_to_intervals_dict' is not defined

直到我加上了反斜杠:

subseq_id_to_intervals_dict,        \
subseq_id_to_ccid_formats_dict,     \
subseq_id_to_min_max_count_dict = map_cases(opts,
                                            format_to_ccid_funcs,
                                            sys.stdin)

为什么行末的逗号没有足够地告诉Python理解语法,从而不出现错误呢?有没有更简洁的方法来做到这一点,而不需要反斜杠?

1 个回答

12

你可以把赋值语句的左边放在括号里:

(subseq_id_to_intervals_dict,
 subseq_id_to_ccid_formats_dict,
 subseq_id_to_min_max_count_dict) = map_cases(opts,
                                            format_to_ccid_funcs,
                                            sys.stdin)

左边已经是一个元组了,括号只是表示这行代码是继续的意思。那行代码

subseq_id_to_intervals_dict,

并不表示继续,因为它是一个完整的语句——它是一个只有一个元素的元组。

撰写回答