web-development-kb-es.site

'id' es un nombre de variable malo en Python

¿Por qué es malo nombrar una variable id en Python?

113
brian buck

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.

119
Kevin Little

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
48

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).

41
DavidRR

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.

40
Sebastian Rittau

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.

4
Toni Ruža

'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

1
brian buck

Porque es el nombre de una función incorporada.

1
ahockley