Встроенные идентификаторы в Python

Идентификаторы в Python — это названия переменных, функций, имена модулей, классов, либо других объектов. Таким образом, создавая новую переменную, вы создаете идентификатор — имя этой переменной. Все просто. Однако, стоит отметить, что в Python существует ряд уже определенных идентификаторов, которые называются встроенные идентификаторы. Встроенные идентификаторы «играют заранее определенную роль» в коде — почти как ключевые слова, с тем лишь отличием, что встроенные идентификаторы можно переопределять.

Встроенные идентификаторы можно переопределять, а ключевые слова — нет. Что это значит?

Это значит, что при попытке назвать объект именем из списка ключевых слов, возникнет ошибка. А вот создание объекта, одноименного со встроенным идентификатором, не приведет к ошибке, но этот идентификатор отныне перестанет выполнять функцию, возложенную на него создателями языка Python, а вместо этого станет «играть ту роль», которую определил для него программист. Например, переопределим такой известный встроенный идентификатор, как len, и посмотрим, к каким результатам это приведет:

Сначала проверим, как работает len по-умолчанию:

# Так работает len по-умолчанию -
# возвращает число символов в строке:

print(len('Длинная строка'))

Вывод на экран:

14

Затем переопределим len и проверим, как изменился результат:

# переопределим len:
def len(s):
    return 'Опа!'

# Так работает переопределенный len:
print(len('Длинная строка'))

Вывод на экран:

Опа!

Почему len() перестал считать число символов в строке?

По умолчанию len() определяет длину итерируемого объекта (строки, списка, кортежа и т.д.). Но в примере выше мы переопределили встроенный идентификатор len, и теперь вместо длины строки мы видим на экране веселую надпись: ‘Опа!’

Как получить список всех встроенных идентификаторов в Python?

Для того, чтобы ненароком не переопределить встроенный идентификатор при создании нового объекта, рекомендую запомнить, либо сохранить код вывода на экран полного списка встроенных идентификаторов. Благодаря этому коду вы всегда сможете освежить в памяти списки «неудачных» имен:

import builtins
dir(builtins)

Результат работы кода представлен очень длинным списком, поэтому покажем лишь часть выведенных на экран идентификаторов:

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError'...]

У нас появился Telegram-канал для изучающих Python! Присоединяйтесь: вместе «питонить» веселее! 😉 Ссылка на канал: «Кодим на Python!»

Добавить комментарий