2013-02-28 85 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, 

並不意味着行延續,因爲它是一個完整的語句 - 它是一個元素的元組。