'# Noqa' có nghĩa là gì trong các bình luận Python?


162

Trong khi tìm kiếm thông qua một dự án Python, tôi đã tìm thấy một vài dòng bình luận # noqa.

import sys
sys.path.append(r'C:\dev')
import some_module   # noqa

Không gì noqacó nghĩa là bằng Python? Nó chỉ dành riêng cho Python?


3
noqanhiều khả năng là viết tắt của no quality assurance. Nó nói với phần mềm phân tích mã để bỏ qua các cảnh báo.
Stevoisiak


Trong đầu tôi luôn luôn đọc là "không có câu hỏi nào"
thrau

Câu trả lời:


198

Thêm # noqavào một dòng chỉ ra rằng kẻ nói dối (một chương trình tự động kiểm tra chất lượng mã) không nên kiểm tra dòng này. Bất kỳ cảnh báo nào mà mã có thể đã tạo sẽ bị bỏ qua.

Dòng đó có thể có một cái gì đó "có vẻ xấu" đối với người nói dối, nhưng nhà phát triển hiểu và dự định nó sẽ ở đó vì một số lý do.

Để biết thêm thông tin, hãy xem tài liệu Flake8 để chọn và bỏ qua các vi phạm .


3
đối với linters, đó là tuyên bố này thường nhưng đối với các linters khác thì nó có thể khác, ví dụ javascript w / jshint là: // jshint ignore:line( jshint.com/docs )
jimf

7
Nó cũng hoạt động trong PyCharm. Hình thức ngắn chung chung # noqa. Hoặc dạng dài cụ thể # noinspection PyUnresolvedReferenceschẳng hạn.
Bob Stein

Thế còn # noqa F0001?
youkaichao

5
Lưu ý rằng đối với pycodestyle / pep8 # nopep8cũng có thể được sử dụng rõ ràng hơn một chút, imo.
OozeMeister

53

noqa = NO-QA (KHÔNG đảm bảo chất lượng)

Nó thường được gọi trong Lập trình Python để bỏ qua các cảnh báo PEP8 .

Nói một cách đơn giản, các dòng có #noqa ở cuối sẽ bị bỏ qua bởi các chương trình kẻ nói dối và chúng sẽ không đưa ra bất kỳ cảnh báo nào.


15

Bạn biết gì? Ngay cả Guido van Rossum (người tạo ra Python) đã hỏi câu hỏi này trước đây : D

Một chút từ nguyên của# noqa :

Nó từng là "nopep8" nhưng khi Flake8 và Pep8 muốn một vòng loại chung @florentx đã đề xuất "NoQA" như trong "Không đảm bảo chất lượng" (iirc) và nó bị kẹt.

Một số cách sử dụng cơ bản của# noqa (với flake8 ):

  • # flake8: noqa: các tệp có chứa dòng này được bỏ qua
  • dòng có chứa một # noqanhận xét ở cuối : sẽ không đưa ra cảnh báo
  • # noqa: <error>, ví dụ: # noqa: E234 ở cuối : bỏ qua các lỗi cụ thể trên một dòng
    • nhiều mã lỗi có thể được cung cấp, phân tách bằng dấu phẩy
    • dấu hai chấm trước danh sách mã được yêu cầu
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.