Pourquoi est-il mauvais de nommer une variable 'id' en Python?
Réponses
Trop de publicités? id()
est un élément fondamental intégré:
Aide sur la fonction intégrée
id
dans le module__builtin__
:id(...) id(object) -> integer Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects. (Hint: it's the object's memory address.)
En général, utiliser des noms de variable qui éclipsent un mot-clé ou une fonction intégrée dans n’importe quelle langue est une mauvaise idée, même si cela est autorisé.
id
est une fonction intégrée qui donne l'adresse mémoire d'un objet. Si vous avez le nom de l'un de vos fonctions id
, vous devrez dire __builtins__.id
pour obtenir l'original. Renommer id
à l'échelle mondiale est une source de confusion dans quelque chose, mais un petit script.
Cependant, la réutilisation de construit-dans les noms de variables n'est pas si mauvais que ça aussi longtemps que l'usage local. Python a beaucoup de fonctions intégrées qui (1) ont des noms communs et (2) vous n'utiliserez pas beaucoup de toute façon. L'utilisation de ces variables locales ou en tant que membres d'un objet est OK parce que c'est évident à partir du contexte de ce que vous faites:
Exemple:
def numbered(filename):
file = open(filename)
for i,input in enumerate(file):
print "%s:\t%s" % (i,input)
file.close()
Certains built-ins avec des tentant noms:
id
file
list
map
-
all
,any
complex
dir
input
slice
buffer
Je pourrais dire quelque chose d’impopulaire ici: id()
est une fonction intégrée plutôt spécialisée qui est rarement utilisée dans la logique métier. Par conséquent, je ne vois pas d'inconvénient à l'utiliser en tant que nom de variable dans une fonction serrée et bien écrite, où il est clair que id ne signifie pas la fonction intégrée.