2013-02-28 82 views
6

我尝试将代码保留在80个字符以内,以便在设置的标准窗口中轻松地看到它们。在这一过程中,我有一个Python V2.7构建这样的:在Python中避免冗长的代码行

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充分理解语法并且不会出错?有没有反斜杠干净的方法?

+2

根据PEP8的首选方法是添加parens并使用隐含的行延续。 – geoffspear 2013-02-28 16:42:57

+0

不要忘记'foo,'是一个完整的语句(它是一个具有单个元素的元组)。像@DavidRobinson所建议的那样,你可以在LHS周围加上括号。出于这个原因,Python会变得模糊,如果它允许你用这种方式使用逗号分割一条线(你的意思是一个元素的元组,还是应该处理更多?) – FatalError 2013-02-28 16:43:54

回答

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) 

左侧已经是tuple-括号只是暗示行延续。该行

subseq_id_to_intervals_dict, 

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