在Python中避免长代码行
我尽量把我的代码控制在每行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,
并不表示继续,因为它是一个完整的语句——它是一个只有一个元素的元组。