¿Por qué es malo nombrar una variable id
en Python?
id()
es una función fundamental:
Ayuda sobre la función incorporada
id
en el módulo__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 general, el uso de nombres de variables que incluyan una palabra clave o una función incorporada en cualquier idioma es una mala idea, incluso si está permitido.
id
es una función incorporada que proporciona la dirección de memoria de un objeto. Si nombra una de sus funciones id
, tendrá que decir __builtins__.id
para obtener el original. Cambiar el nombre de id
globalmente es confuso en cualquier cosa que no sea un pequeño script.
Sin embargo, reusar los nombres incorporados como variables no es tan malo siempre que el uso sea local. Python tiene un lote de funciones incorporadas que (1) tienen nombres comunes y (2) no usarás mucho de todos modos. Usar esto como variables locales o como miembros de un objeto está bien porque es obvio desde el contexto lo que estás haciendo:
Ejemplo:
def numbered(filename):
file = open(filename)
for i,input in enumerate(file):
print "%s:\t%s" % (i,input)
file.close()
Algunas incorporaciones con nombres tentadores:
id
file
list
map
all
, any
complex
dir
input
slice
buffer
En PEP 8 - Guía de estilo para el código Python , la siguiente guía aparece en la sección Descriptiva: Estilos de nombre :
single_trailing_underscore_
: utilizado por la convención para evitar conflictos con la palabra clave Python, por ejemplo.
Tkinter.Toplevel(master, class_='ClassName')
Entonces, para responder a la pregunta, un ejemplo que aplica esta guía es:
id_ = 42
La inclusión del subrayado final en el nombre de la variable deja clara la intención (para aquellos familiarizados con la guía en PEP 8).
Podría decir algo impopular aquí: id()
es una función integrada bastante especializada que rara vez se utiliza en la lógica de negocios. Por lo tanto, no veo ningún problema en usarlo como nombre de variable en una función bien escrita y bien escrita, donde está claro que id no significa la función incorporada.
Es malo nombrar cualquier variable después de una función incorporada. Una de las razones es porque puede ser confuso para un lector que no sabe que el nombre está anulado.
'id' es un método incorporado en Python. Asignar un valor a 'id' sobrescribirá el método. Es mejor usar un identificador antes como en "some_id" o usarlo en un método de mayúsculas diferente.
El método incorporado toma un solo parámetro y devuelve un entero para la dirección de memoria del objeto que pasó.
>>>
id (1)
9787760
>>>
x = 1
>>>
id (x)
9787760
Porque es el nombre de una función incorporada.