it-swarm-pt.tech

'id' é um nome de variável incorreto em Python

Por que é ruim nomear uma variável id no Python?

117
brian buck

id() é um elemento fundamental incorporado:

Ajuda na função interna id no 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.)

Em geral, o uso de nomes de variáveis ​​que Eclipse uma palavra-chave ou função interna em qualquer idioma é uma má idéia, mesmo que seja permitida.

120
Kevin Little

id é uma função interna que fornece o endereço de memória de um objeto. Se você nomear uma de suas funções id, precisará dizer __builtins__.id para obter o original. Renomear id globalmente é confuso em qualquer coisa, exceto em um pequeno script.

No entanto, reutilizar nomes internos como variáveis ​​não é tão ruim, desde que o uso seja local. Python possui lote de funções internas que (1) têm nomes comuns e (2) você não usará muito assim mesmo. Usando-as como variáveis ​​locais ou como membros de um objeto é bom porque é óbvio do contexto o que você está fazendo:

Exemplo:

def numbered(filename):
  file = open(filename)
  for i,input in enumerate(file):
    print "%s:\t%s" % (i,input)
  file.close()

Alguns built-ins com nomes tentadores:

  • id
  • file
  • list
  • map
  • all, any
  • complex
  • dir
  • input
  • slice
  • buffer
48
Nathan Shively-Sanders

No PEP 8 - Guia de estilo para Python , as orientações a seguir aparecem na seção Descritivo: Estilos de nomeação :

  • single_trailing_underscore_: Usado por convenção para evitar conflitos com Python, por exemplo,.

    Tkinter.Toplevel(master, class_='ClassName')

Portanto, para responder à pergunta, um exemplo que aplica essa diretriz é:

id_ = 42

A inclusão do sublinhado à direita no nome da variável torna clara a intenção (para aqueles familiarizados com as orientações do PEP 8).

44
DavidRR

Eu poderia dizer algo impopular aqui: id() é uma função interna bastante especializada que raramente é usada na lógica de negócios. Portanto, não vejo problema em usá-lo como um nome de variável em uma função rígida e bem escrita, onde fica claro que id não significa a função interna.

41
Sebastian Rittau

É ruim nomear qualquer variável após uma função interna. Uma das razões é que pode ser confuso para um leitor que não sabe que o nome foi substituído.

4
Toni Ruža

'id' é um método interno em Python. Atribuir um valor a 'id' substituirá o método. É melhor usar um identificador antes como em "some_id" ou usá-lo em um método de capitalização diferente.

O método interno usa um único parâmetro e retorna um número inteiro para o endereço de memória do objeto que você passou.

>>>id (1)

9787760

>>>x = 1

>>>id (x)

9787760

1
brian buck

Porque é o nome de uma função interna.

1
ahockley