Per il seguente codice:pylint messaggio: logging-format-interpolazione
logger.debug('message: {}'.format('test'))
pylint
produce il seguente avviso:
registrazione in formato-interpolazione (W1202):
Utilizzare% formattazione nelle funzioni di registrazione e passare i parametri% come argomenti Utilizzato quando un'istruzione di registrazione ha un modulo di chiamata "logging. (Format_string.format (format_args ...))". Tali chiamate devono invece utilizzare la formattazione%, ma lasciare l'interpolazione alla funzione di registrazione passando i parametri come argomenti.
So che posso disattivare questo avviso, ma mi piace capirlo. Presumo che l'utilizzo di format()
sia il modo preferito per stampare le istruzioni in python3
. Perché questo non è vero per le dichiarazioni del logger?
Che cos'è esattamente la funzionalità di cui non si può beneficiare? '.format()' è sempre espanso? È questo che significa "interpolazione pigra", che viene espanso solo quando viene chiamato? – pfnuesel
@pfnuesel, .format() è espanso prima della chiamata a logger.error, mentre "interpolazione pigra" significa che l'espansione viene eseguita solo se necessario (ad esempio il messaggio viene effettivamente visualizzato da qualche parte) – sthenault
Esiste un buon riferimento per questa valutazione pigra preferito e facendo la differenza? Non sono riuscito a trovarne uno in [PEP282] (https://www.python.org/dev/peps/pep-0282/) o [nella libreria di registrazione] (https://docs.python.org/2/library /logging.html) – culix