2013-02-28 12 views
6

Cerco di mantenere il mio codice entro 80 caratteri in modo che sia facile vedere l'uno accanto all'altro in una finestra standard che ho impostato. Nel fare questo, ho un v2.7 Python costruire in questo modo:Evitare lunghe code di codice in 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) 

Così ho rotto in questo modo:

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) 

Ma che ha causato errori

NameError: name 'subseq_id_to_intervals_dict' is not defined

Fino a quando ho barre rovesciate aggiunte:

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) 

Perché è che la virgola alla fine della riga non informa Python sufficientemente per capire la sintassi e non ottenere un errore? C'è un modo più pulito per fare questo senza backslash?

+2

Il modo preferito secondo PEP8 è di aggiungere parens e utilizzare la continuazione della linea implicita. – geoffspear

+0

Non dimenticare che 'foo,' è un'istruzione completa (è una tupla con un singolo elemento). Puoi mettere le parentesi intorno alla LHS come suggerito da @DavidRobinson. Per questo motivo, Python diventerebbe ambiguo se ti permettesse di dividere una riga usando le virgole in quel modo (intendevi una tupla di 1 elemento o dovrei elaborare di più?) – FatalError

risposta

12

si potrebbe mettere il lato sinistro della assegnazione in parentesi:

(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) 

Il lato sinistro è già un tuple- le parentesi solo implicano la continuazione di linea. La linea

subseq_id_to_intervals_dict, 

non implica una continuazione linea, perché è una statement- completa è una tupla con un solo elemento.