Convention de codage de la fonction "privée" de Python

lors de l'écriture d'un module python et de ses fonctions, j'ai quelques fonctions "publiques" qui sont supposées être exposées à l'extérieur, mais d'autres fonctions "privées" qui ne sont supposées être vues et utilisées que localement et en interne.

je comprends qu'en python il n'y a pas de fonctions privées absolues. Mais quel est le style le meilleur, le plus soigné ou le plus utilisé pour distinguer les fonctions "publiques" et les fonctions "privées"?

je liste quelques-uns des styles Je sais:

  1. utilisez __all__ dans le fichier module pour indiquer ses fonctions" publiques "( Quelle est la variable de niveau Python __tous__ module pour? )
  2. utiliser le soulignement au début du nom de" privé "fonctions

y a-t-il une autre idée ou convention que les gens utilisent?

Merci beaucoup!

45
demandé sur Community 2013-02-24 03:54:15

1 réponses

From Python Class module documentation:

"151900920 les variables d'instance" privées " qui ne peuvent être accédées que de l'intérieur d'un objet n'existent pas en Python. Cependant, il existe une convention qui est suivie par la plupart des codes Python: un nom préfixé avec un caractère de soulignement (par exemple _spam) doit être traité comme une partie non publique de l'API (qu'il s'agisse d'une fonction, d'une méthode ou d'un membre de données). Il devrait être considéré comme une mise en œuvre détail et sujet à changement sans préavis.

étant donné qu'il existe un cas d'utilisation valable pour les membres de classe-particuliers (à savoir pour éviter les conflits de noms entre des noms et des noms définis par des sous-classes), un tel mécanisme, appelé "nom mangling", jouit d'un soutien limité. Tout identifiant de la forme _ _ _ spam (au moins deux underscores principaux, au plus un underscore arrière) est textuellement remplacé par _classname _ _ spam, où classname est le nom de classe courant avec underscore principal(s) dépouillé. Cette modification est effectuée sans tenir compte de la position syntaxique de l'identificateur, tant qu'elle se produit dans le cadre de la définition d'une classe.

73
répondu Eric Hydrick 2015-07-17 15:12:54