Пропустить до содержимого

Как использовать указатели в Python?

CodeMDD.io

Указатели в Python: что в этом смысл?

Если вы когда-либо работали с языками программирования более низкого уровня, такими как C или C++, то вы, вероятно, слышали о указателях. Указатели позволяют создавать большую эффективность в разных частях вашего кода. Однако они могут вызывать путаницу у начинающих и приводить к различным ошибкам управления памятью, даже у экспертов. Где же они в Python, и как можно симулировать указатели в Python?

Указатели широко используются в C и C++. В основном, это переменные, которые хранят адрес памяти другой переменной. Если вам требуется освежить в памяти знания о указателях, вы можете ознакомиться с данным обзором на C указатели.

В этой статье вы приобретете более глубокое понимание объектной модели Python и узнаете, почему указатели в Python на самом деле отсутствуют. Для случаев, когда вам нужно подражать поведению указателей, вы узнаете способы симулировать указатели в Python без кошмара управления памятью.

В этой статье вы узнаете:

  1. Почему указатели отсутствуют в Python
  2. Разницу между переменными в C и именами в Python
  3. Симуляцию указателей в Python
  4. Эксперименты с реальными указателями с использованием ctypes

Примечание: В этой статье “Python” будет относиться к референтной реализации Python на C, также известной как CPython. Поскольку статья затрагивает некоторые внутренние аспекты языка, эти замечания верны для CPython 3.7, но могут не быть верными в будущих или прошлых версиях языка.

Почему в Python отсутствуют указатели?

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

Для понимания указателей в Python вам потребуется небольшое рассмотрение внутренних аспектов реализации Python. А именно, вам нужно понять:

  1. Неизменяемые и изменяемые объекты
  2. Переменныеhttps://codemdd.io/имена в Python

Держитесь за свои адреса памяти, и давайте начнем.

Объекты в Python

В Python всё является объектом. Для проверки этого можно запустить интерактивную оболочку и исследовать с помощью isinstance():

>>> isinstance(1, object)
True
>>> isinstance(list(), object)
True
>>> isinstance(True, object)
True
>>> def foo():
... pass
...
>>> isinstance(foo, object)
True

Этот код показывает, что переменные 1, [], True и функция foo все являются объектами. Класс object - это базовый класс, от которого наследуются все остальные классы в Python. Это значит, что все в Python - это объекты.

Продолжение…