在Python中避免使用长行代码

Wil*_*mKF 6 python newline backslash python-2.7

我尝试将代码保持在80个字符以内,因此很容易在我设置的标准窗口中并排查看.在这样做时,我有一个像这样的Python v2.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)
Run Code Online (Sandbox Code Playgroud)

所以我把它分解成这样:

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)
Run Code Online (Sandbox Code Playgroud)

但那导致了错误

NameError:未定义名称"subseq_id_to_intervals_dict"

直到我添加反斜杠:

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)
Run Code Online (Sandbox Code Playgroud)

为什么行尾的逗号不足以告诉Python理解语法而不会出错?有没有反斜杠的清洁方法吗?

Dav*_*son 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)
Run Code Online (Sandbox Code Playgroud)

左侧已经是一个元组 - 括号只是意味着线的延续.这条线

subseq_id_to_intervals_dict,
Run Code Online (Sandbox Code Playgroud)

并不意味着一个行继续,因为它是一个完整的语句 - 它是一个单元素的元组.