Pourquoi la bibliothèque de journalisation de Python est-elle camelCase?

Je parlais avec un ami des conventions de codage Python, et soudain, "PEP8 en Python dit que les noms de fonctions doivent être écrits en lettres minuscules, mais pourquoi certaines bibliothèques ([ logging](https: // docs) CamelCase est-il adopté dans .python.org / ja / 3 / library / logging.html) etc.? "

#Un exemple de code de journalisation. Le nom de la méthode comme getLogger est camelCase.
import logging

logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)

En fait, PEP8 "Noms des fonctions et variables" dit:

Les noms des fonctions doivent être en minuscules uniquement. En outre, les mots doivent être séparés par des traits de soulignement si nécessaire pour une meilleure lisibilité.

Les noms des variables suivent les mêmes conventions que les fonctions.

Autoriser la compatibilité de mixedCase uniquement si mixedCase est déjà utilisé (par exemple, threading.py).

Il dit: "Je suis désolé que camelCase soit déjà utilisé dans certaines bibliothèques." J'étais un peu inquiet, alors j'ai essayé de résumer les circonstances autour de cela. Pour conclure d'abord,

C'était la raison.

la journalisation a été développée en même temps que PEP8 a été formulé en référence à Java.

stackoverflow "[Comment se fait-il que le module de journalisation de Python ne respecte pas les conventions PEP8?](Https://stackoverflow.com/questions/22993667/how-come-the-pythons-logging-module-doesnt-follow-pep8-conventions?" Comme je l'ai appris de la réponse de "/ 22993896 # 22993896)", il semble que "logging" a été implémenté à l'origine en référence à "Log4j" de Java. Il a également été confirmé que PEP282 l'a effectivement répertorié comme une "bibliothèque affectée".

Si vous regardez le code de Log4j dans article TECHSCORE, c'est presque la même chose.

//Génération d'instance
Logger logger=Logger.getInstance(Sample.class.getName());

//Défini pour générer un événement de journal lorsque le niveau de journal est WARN ou supérieur
logger.setLevel(Level.WARN);

//Sortie de journal
logger.info("This is info.");//Pas de sortie
logger.warn("This is warn.");//Production
logger.error("This is error.");//Production

Il déclare également que "l'exploitation forestière était déjà développée en 2001, et c'est à peu près au même moment que le PEP8 a été formulé".

De plus, selon wiki, il semble qu'il viole PEP8 même parmi les développeurs, mais il est cohérent dans le projet et à l'envers. Il semble qu'il n'ait pas encore été corrigé en mettant l'accent sur la compatibilité.

API uses camelCase (goes against PEP8 recommendation and most of the stdlib)

  • PEP8 says - consistency with this style guide is important. Consistency within a project is more important. Consistency within one module or function is most important.
  • It's a low priority right now, unless there's an initiative to ensure the rest of the stdlib is made to conform to PEP8. -- VinaySajip

Ce wiki mentionne une bibliothèque appelée logging2. Ici, il est écrit "mieux que log4j" w

A More Pythonic Logging System; or, You Deserve Better Than log4j

À propos de la bibliothèque de threads

Consultez également threading, qui a été mentionné comme exemple de" quand mixedCase est déjà utilisé "dans PEP8. J'ai fait. Dans la documentation Python 3.8, il est écrit "camelCase est également adopté pour la compatibilité descendante".

Bien que non répertorié ici, le nom camelCase utilisé pour certaines méthodes et fonctions de ce module de la série Python 2.x est toujours pris en charge dans ce module.

Dans Python2.7, c'était écrit comme ça.

À partir de Python 2.6, ce module fournit un alias compatible PEP 8 qui remplace les propriétés de camelCase influencées par l'API de threading de Java. Cette API mise à jour est compatible avec celle du module multitraitement. Cependant, le nom camelCase n'a pas été planifié pour être obsolète et continuera à être pris en charge dans Python 2.x et 3.x.

Celui-ci migre progressivement sous une forme compatible PEP8 tout en conservant la compatibilité. J'espère que la bibliothèque logging passera progressivement à une forme compatible PEP8, tout comme threading.

De plus, selon Documentation, cette bibliothèque semble également être fortement influencée par Java.

La conception approximative de ce module est basée sur le modèle de thread de Java. Cela dit, Java fait des verrous et des variables de condition le comportement de base de tous les objets, tandis que Python les sépare en objets séparés.

Recommended Posts

Pourquoi la bibliothèque de journalisation de Python est-elle camelCase?
Pourquoi la bibliothèque de journalisation de Python est-elle camelCase?
Pourquoi Python est choisi pour l'apprentissage automatique
Où est fluentd de python ??
Qu'est-ce que __init__.py de Python?
La modernisation de l'orientation objet de Python est-elle?