2013-04-18 43 views
13

Tôi có một dòng mã trong python như thế này:Làm thế nào để phá vỡ một chặng đường dài với tuyên bố trong python

with long_name_function(p) as a, other_long_name_function(): 

và tôi muốn phá vỡ nó trong nhiều dòng, bởi vì quá dài, tôi có thể sử dụng gạch chéo ngược, nhưng chúng được coi là một thực hành tồi. Tôi cũng có thể sử dụng contextlib.nested, nhưng không được chấp nhận, có cách nào khác không?

+4

dấu gạch chéo ngược không được coi là thực hành không tốt, nó chỉ thích sử dụng dấu ngoặc đơn hoặc dấu phẩy để chia nhỏ mã thành các dòng khác nhau khi có thể. – jamylak

Trả lời

17

này không quan tâm đến tiền đề của câu hỏi nhưng tôi thực sự muốn giới thiệu sử dụng backslashes trong trường hợp này:

with really_really_long_name_function(p) as f1, \ 
     other_really_really_long_name_function() as f2: 
    pass 

Như @JonClements nói, bạn không thể sử dụng dấu ngoặc hoặc dấu phẩy trong trường hợp này, không có sự thay thế để dấu gạch chéo ngược là cách để đi và mã trông IMO khá sạch sẽ.

+0

Dường như bạn đã quên dấu ngoặc đơn ở phần cuối của 'other_really_really_long_name_function'. –

+3

Yup - Kể từ khi dấu ngoặc đơn không thể được sử dụng (không thể nghĩ ra lý do chính đáng tại sao), vâng, tôi nghĩ rằng nó có thể đọc được và thực tế nhất trong trường hợp này .... –

+0

@segfolt fixed. – jamylak

11

Nếu bạn muốn tránh gạch chéo ngược, bạn có thể bí danh tên dài:

lnf = long_name_function 
olnf = other_long_name_function 
with lnf(p) as a, olnf(): 
    # ... 

hoặc bạn có thể tổ báo cáo:

with long_name_function(p) as a: 
    with other_long_name_function(): 
     pass 

Bạn không muốn sử dụng contextlib.nested(); có một số vấn đề với nó trực tiếp dẫn đến sự phản đối của nó. Các trình quản lý ngữ cảnh trước đó không được đề cập đến các vấn đề với các trình quản lý ngữ cảnh sau này trong lồng nhau, ví dụ.

+2

Dấu ngoặc đơn quá xấu không hoạt động tốt ở đây. –

+0

@JaredGoguen: bạn có thể đặt biểu thức tạo hoặc đặt tên trình quản lý ngữ cảnh trong dấu ngoặc đơn, nhưng điều đó chỉ trở nên thực sự xấu xí. –

Các vấn đề liên quan