Đối với đoạn mã sau:pylint nhắn: khai thác gỗ-format-suy
logger.debug('message: {}'.format('test'))
pylint
tạo ra cảnh báo sau đây:
khai thác gỗ-format-suy (W1202):
Sử dụng% định dạng trong chức năng ghi nhật ký và chuyển các tham số% thành các đối số Được sử dụng khi câu lệnh ghi nhật ký có dạng cuộc gọi là “logging. (Định dạng_string.format (format_args ...))”. Các cuộc gọi như vậy nên sử dụng định dạng% thay thế, nhưng để lại nội suy cho hàm ghi nhật ký bằng cách chuyển các tham số dưới dạng đối số.
Tôi biết tôi có thể tắt cảnh báo này, nhưng tôi muốn hiểu điều đó. Tôi giả sử sử dụng format()
là cách ưa thích để in các câu lệnh trong python3
. Tại sao điều này không đúng đối với các câu lệnh logger?
Chức năng chính xác mà bạn không thể hưởng lợi là gì? '.format()' có luôn mở rộng không? Đó có phải là "nội suy lười" có nghĩa là, nó chỉ được mở rộng khi được gọi? – pfnuesel
@pfnuesel, .format() được mở rộng trước cuộc gọi đến logger.error, trong khi "nội suy lười" có nghĩa là mở rộng chỉ được thực hiện nếu cần (ví dụ: thông điệp được hiển thị ở đâu đó) – sthenault
Có một tham chiếu tốt cho việc đánh giá lười biếng này không ưa thích và tạo sự khác biệt? Tôi không thể tìm thấy một trong [PEP282] (https://www.python.org/dev/peps/pep-0282/) hoặc [thư viện ghi nhật ký] (https://docs.python.org/2/library /logging.html) – culix