2013-02-28 14 views
6

Tôi cố gắng và giữ mã của mình trong phạm vi 80 ký tự để dễ dàng nhìn thấy cạnh nhau trong cửa sổ chuẩn mà tôi đã thiết lập. Bằng cách này, tôi có một v2.7 Python xây dựng như thế này:Tránh các dòng mã dài bằng 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) 

Vì vậy, tôi đã phá vỡ nó lên như thế này:

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) 

Nhưng điều đó gây ra lỗi

NameError: name 'subseq_id_to_intervals_dict' is not defined

Cho đến khi tôi thêm dấu gạch chéo ngược:

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) 

Tại sao có phải là dấu phẩy ở cuối dòng không thông báo cho Python đầy đủ để hiểu cú pháp và không nhận được lỗi không? Có cách nào sạch hơn để làm điều này mà không có dấu gạch chéo ngược?

+2

Cách ưa thích theo PEP8 là thêm dấu ngoặc đơn và sử dụng dòng tiếp tục ngụ ý. – geoffspear

+0

Đừng quên rằng 'foo,' là một câu lệnh hoàn chỉnh (nó là một bộ tuple với một phần tử đơn). Bạn có thể đặt dấu ngoặc đơn xung quanh LHS như @DavidRobinson đã gợi ý. Vì lý do đó, Python sẽ trở nên mơ hồ nếu nó cho phép bạn tách một đường bằng cách sử dụng dấu phẩy theo cách đó (bạn có nghĩa là một phần tử tuple hoặc tôi nên xử lý nhiều hơn?) – FatalError

Trả lời

12

Bạn có thể đặt phía bên trái của sự phân công vào ngoặc:

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

Phía bên trái đã là một tuple- ngoặc chỉ ngụ ý tiếp tục dòng. Dòng

subseq_id_to_intervals_dict, 

không bao hàm dòng tiếp tục vì nó là câu lệnh hoàn chỉnh - đó là một bộ dữ liệu với một phần tử duy nhất.