2011-07-07 36 views
33

gì là cách tốt nhất để định dạng đoạn mã sau đây phù hợp để PEP8:Python danh sách chức năng lập luận định dạng

oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer, 
    token=token, verifier=verifier, http_url=ACCESS_TOKEN_URL) 

Vấn đề là nếu tôi đặt nhiều hơn một tham số trên dòng đầu tiên, dòng vượt quá 79 nhân vật. Nếu tôi đặt mỗi thông số trên một dòng riêng biệt với 4 chỗ thụt đầu dòng có vẻ khá xấu xí:

oauth_request = oauth.OAuthRequest.from_consumer_and_token(
    consumer, 
    token=token, 
    verifier=verifier, 
    http_url=ACCESS_TOKEN_URL) 

Các lựa chọn tốt nhất mà tôi đưa ra là để bổ sung thêm thụt đầu dòng cho phân biệt tốt hơn:

oauth_request = oauth.OAuthRequest.from_consumer_and_token(
         consumer, 
         token=token, 
         verifier=verifier, 
         http_url=ACCESS_TOKEN_URL) 

Tôi cố gắng đưa ra một quy tắc chung để tôi sử dụng nó cho các phương thức có lời gọi dài trên dòng đầu tiên và một vài tham số không thể phù hợp với một dòng.

Trả lời

24

Đọc của tôi về documentation gợi ý rằng 2 và 3 đều được chấp nhận, nhưng có vẻ như 2 được ưa thích (tôi nói điều này vì có vẻ như 2 so với 3 được xử lý theo cách này trong ví dụ, tôi không nghĩ rằng đặc tả phong cách rất cụ thể ở đây). 1 là ra ngoài (nhìn vào tài liệu dưới dòng Arguments on first line forbidden when not using vertical alignment)

+2

Tôi không đồng ý, tôi thích 3. Tôi thích làm cho indents tiếp tục lớn hơn đáng kể so với cấu trúc khối thông thường indents (4 khoảng trống) để phân biệt chúng. Thông thường tôi sẽ xếp hàng các đối số tiếp tục với đối số đầu tiên (sau dấu ngoặc mở). Nhưng trong trường hợp này (vì không có đủ không gian) các dòng tiếp tục nên xếp hàng dưới từ 'oauth' theo dấu bằng. –

+0

@Don Vâng, tôi đọc tài liệu là cả hai đều OK. Tôi chỉ nhận thấy rằng 2 là trong một loạt các ví dụ. Mặc dù, tôi nghĩ rằng nó là một khoảng cách khác nhau từ 4 không gian tiêu chuẩn. Sự thật được nói, tôi có một sở thích mạnh mẽ để sắp xếp tất cả các đối số với paren mở của phương thức được gọi, nhưng điều đó có liên quan nhiều hơn đến những gì tôi đã quen với cái mà tôi vốn đã sử dụng là "Pythonic". – cwallenpoole

+0

Tôi cũng không đồng ý. Trong tài liệu mà bạn đã liên kết, cả ví dụ đầu tiên và thứ hai được cung cấp trong bài đăng này được liệt kê rõ ràng trong phần "Không:", cho biết rằng chúng không nên được sử dụng. Để làm rõ, mỗi đối số không nhất thiết phải được cung cấp trên một dòng riêng. Tuy nhiên, khi bạn phải tiếp tục một tuyên bố trên nhiều dòng, mỗi dòng phải có thêm thụt đầu dòng (tức là gấp đôi) để phân biệt nó với các khối con hoặc anh chị em. Ví dụ cuối cùng được chấp nhận về mặt kỹ thuật vì có thêm thụt đầu dòng, nhưng sẽ ưu tiên sử dụng 8 tab khoảng trống cho mỗi dòng phụ. –

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