it-swarm-ru.tech

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

Почему плохо называть переменную id в Python?

113
brian buck

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's the object's memory
    address.)

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

119
Kevin Little

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

Тем не менее, повторное использование встроенных имен в качестве переменных не так уж и плохо, если их использование локально. Python имеет lot встроенных функций, которые (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
48
Nathan Shively-Sanders

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

  • single_trailing_underscore_: используется по соглашению, чтобы избежать конфликтов с ключевым словом Python, например,.

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

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

id_ = 42

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

41
DavidRR

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

40
Sebastian Rittau

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

4
Toni Ruža

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

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

>>>id (1)

9787760

>>>x = 1

>>>id (х)

9787760

1
brian buck

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

1
ahockley