'id' - имя плохой переменной в Python

Почему плохое имя переменной id в Python?

Ответ 1

id() является фундаментальным встроенным:

Справка по встроенной функции id в модуле __builtin__:

id(...)

    id(object) -> integer

    Return the identity of an object.  This is guaranteed to be unique among
    simultaneously existing objects.  (Hint: it the object memory
    address.)

В общем, использование имен переменных, которые затмевают ключевое слово или встроенную функцию на любом языке, является плохой идеей, даже если это разрешено.

Ответ 2

id - это встроенная функция, которая дает адрес памяти объекта. Если вы назовете одну из своих функций id, вам нужно будет сказать __builtins__.id, чтобы получить оригинал. Переименование id глобально путается во всем, кроме небольшого script.

Однако повторное использование встроенных имен в качестве переменных не так уж плохо, если использование является локальным. Python имеет множество встроенных функций, которые (1) имеют общие имена и (2) вы не будете использовать многое в любом случае. Использование этих параметров в качестве локальных переменных или как элементов объекта в порядке, потому что из контекста видно, что вы делаете:

Пример:

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

Некоторые встроенные модули с заманчивыми именами:

  • id
  • file
  • list
  • map
  • all, any
  • complex
  • dir
  • input
  • slice
  • buffer

Ответ 3

Я могу сказать что-то непопулярное здесь: id() - довольно специализированная встроенная функция, которая редко используется в бизнес-логике. Поэтому я не вижу проблемы с его использованием в качестве имени переменной в плотной и хорошо написанной функции, где ясно, что идентификатор не означает встроенную функцию.

Ответ 4

В PEP 8 - Руководство по стилю для кода Python в разделе Описательные: стили именования

  • single_trailing_underscore_: используется для предотвращения конфликтов с ключевым словом Python, например

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

Итак, чтобы ответить на вопрос, примером, который применяет это руководство, является:

id_ = 42

Включение конечного подчеркивания в имя переменной делает цель четкой (для тех, кто знаком с руководством в PEP 8).

Ответ 5

Плохо назвать любую переменную после встроенной функции. Одна из причин заключается в том, что он может сбить с толку читателя, который не знает, что имя переопределено.

Ответ 6

Потому что это имя встроенной функции.

Ответ 7

'id' - встроенный метод в Python. Присвоение значения "id" будет перезаписывать метод. Лучше использовать либо идентификатор раньше, чем в "some_id", либо использовать его в другом методе капитализации.

Встроенный метод принимает один параметр и возвращает целое число для адреса памяти переданного объекта.

>>> идентификатор (1)

9787760

>>> x = 1

>>> идентификатор (х)

9787760

Ответ 8

Поскольку python является динамическим языком, обычно не рекомендуется указывать переменную и функцию с тем же именем. id() - это функция в python, поэтому рекомендуется не использовать переменную с именем id. Принимая это во внимание, это относится ко всем функциям, которые вы можете использовать... переменная не должна иметь то же имя, что и функция.