Làm cách nào để tôi định dạng một url dài trong một nhận xét python và vẫn tuân thủ PEP8


82

Trong một nhận xét khối, tôi muốn tham chiếu đến một URL dài hơn 80 ký tự.

Quy ước ưa thích để hiển thị URL này là gì?

Tôi biết bit.ly là một tùy chọn, nhưng bản thân URL là mô tả. Việc rút ngắn nó và sau đó có một nhận xét lồng nhau mô tả URL được rút ngắn có vẻ như là một giải pháp tồi tệ.

Câu trả lời:


76

Đừng phá vỡ url:

# A Foolish Consistency is the Hobgoblin of Little Minds [1]
# [1]: http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds

5
Tôi đồng ý; tuy nhiên, PyCharm không làm cho bạn dễ dàng bỏ qua (mà không viết mã của bạn bằng các tham chiếu xấu xí '# noinspection LongLine' (và tương tự) ở khắp nơi. Tôi nghĩ vấn đề lớn hơn là định dạng RST có hạn chế là không thể có một ngắt dòng (không được hiển thị) trong URL.

4
Câu trả lời không trả lời làm thế nào để tuân thủ, vì vậy nếu bạn có người nói dối, nó vẫn có cảnh báo.
Efren

4
@jfs vì vậy câu trả lời thực sự nên là: "một dòng dài là tuân thủ PEP8 trong trường hợp này"
Efren

2
@Efren, đó chính xác là câu trả lời của tôi: * "tôi nên định dạng như thế nào .. và tuân thủ pep-8" * -> "không phá vỡ url"
jfs

2
Tôi vừa khám phá ra điều khiển nhấp chuột !! Đó là lý do tại sao bạn không muốn ngắt một URL trong một bình luận.
Bob Stein

68

Từ PEP8

Nhưng quan trọng nhất: biết khi nào cần nhất quán - đôi khi hướng dẫn phong cách không áp dụng. Khi nghi ngờ, hãy sử dụng phán đoán tốt nhất của bạn. Xem các ví dụ khác và quyết định xem điều gì trông đẹp nhất. Và đừng ngần ngại hỏi!

Hai lý do chính đáng để phá vỡ một quy tắc cụ thể:

  • Khi áp dụng quy tắc sẽ làm cho mã khó đọc hơn, ngay cả đối với một người quen đọc mã tuân theo quy tắc.

Cá nhân tôi sẽ sử dụng lời khuyên đó và thay vì để lại URL mô tả đầy đủ trong nhận xét của bạn cho mọi người.


45

Bạn có thể sử dụng # noqaở cuối dòng để ngăn PEP8 / Flake8 chạy kiểm tra đó. Điều này được PEP8 cho phép thông qua:

Các trường hợp đặc biệt không đủ đặc biệt để phá vỡ các quy tắc.


3
Thanh lịch. Tôi sử dụng pyflakes trong Vim và sẽ không cam kết thay đổi cho đến khi nó trả về 0 cảnh báo từ bộ quy tắc đã thỏa thuận (yêu cầu của maccabe trong trường hợp của chúng tôi là lỏng hơn, nhưng không phải giới hạn 80 dòng). Cách ngắn gọn nhất để nói với đồng nghiệp: Tôi không chia nhiều dòng vì làm như vậy không có ý nghĩa gì.
Peter Host

4
Cảm ơn @Sardathrion, sẽ có nhiều phiếu bầu hơn vì nó thực sự đóng góp một giải pháp thiết thực.
ezdazuzena

22

Tôi muốn nói rằng hãy để nó ...

PEP20 :

Các trường hợp đặc biệt không đủ đặc biệt để phá vỡ các quy tắc.

Mặc dù tính thực tế đánh bại sự thuần khiết.

Thực tế hơn là có thể nhanh chóng sao chép / dán một url sau đó xóa dấu ngắt dòng khi dán vào trình duyệt.


14

Nếu bạn đang sử dụng flake8:

"""
long-url: http://stackoverflow.com/questions/10739843/how-should-i-format-a-long-url-in-a-python-comment-and-still-be-pep8-compliant
"""  # noqa

-2

Bạn sử dụng một công cụ rút gọn url như của google để từ đó:

http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds

bạn lấy:

http://goo.gl/93ZLQ


9
Tất nhiên, rủi ro là trình rút gọn liên kết biến mất và chúng tôi không có cách nào để biết liên kết. ArchiveTeam (do ban lãnh đạo liên kết với Archive.org dẫn đầu) đã nỗ lực hết mình để cứu các trình rút gọn liên kết…
Ahmed Fasih

1
Và không chỉ vậy mà URL ban đầu có thông tin liên quan đến những gì nó là. Trình rút ngắn URL sẽ mất thông tin đó.
Julien Chastang

-5

Lựa chọn của tôi sẽ là:

URL = ('http://stackoverflow.com/questions/10739843/'
       'how-should-i-format-a-long-url-in-a-python-'
       'comment-and-still-be-pep8-compliant')

3
Quá khó để sao chép dán theo cách có thể sử dụng được theo cách này.
Kel Solaar,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.