Как использовать указатели в Python?
Указатели в Python: что в этом смысл?
Если вы когда-либо работали с языками программирования более низкого уровня, такими как C или C++, то вы, вероятно, слышали о указателях. Указатели позволяют создавать большую эффективность в разных частях вашего кода. Однако они могут вызывать путаницу у начинающих и приводить к различным ошибкам управления памятью, даже у экспертов. Где же они в Python, и как можно симулировать указатели в Python?
Указатели широко используются в C и C++. В основном, это переменные, которые хранят адрес памяти другой переменной. Если вам требуется освежить в памяти знания о указателях, вы можете ознакомиться с данным обзором на C указатели.
В этой статье вы приобретете более глубокое понимание объектной модели Python и узнаете, почему указатели в Python на самом деле отсутствуют. Для случаев, когда вам нужно подражать поведению указателей, вы узнаете способы симулировать указатели в Python без кошмара управления памятью.
В этой статье вы узнаете:
- Почему указатели отсутствуют в Python
- Разницу между переменными в C и именами в Python
- Симуляцию указателей в Python
- Эксперименты с реальными указателями с использованием
ctypes
Примечание: В этой статье “Python” будет относиться к референтной реализации Python на C, также известной как CPython. Поскольку статья затрагивает некоторые внутренние аспекты языка, эти замечания верны для CPython 3.7, но могут не быть верными в будущих или прошлых версиях языка.
Почему в Python отсутствуют указатели?
Python обычно стремится абстрагировать детали реализации, такие как адреса памяти, от своих пользователей. Python часто ориентирован на простоту использования, а не на скорость выполнения. В результате указатели в Python на самом деле не имеют смысла. Не стоит беспокоиться, поскольку Python по умолчанию дает вам некоторые преимущества при использовании указателей.
Для понимания указателей в Python вам потребуется небольшое рассмотрение внутренних аспектов реализации Python. А именно, вам нужно понять:
- Неизменяемые и изменяемые объекты
- Переменныеhttps://codemdd.io/имена в Python
Держитесь за свои адреса памяти, и давайте начнем.
Объекты в Python
В Python всё является объектом. Для проверки этого можно запустить интерактивную оболочку и исследовать с помощью isinstance()
:
Этот код показывает, что переменные 1, [], True и функция foo все являются объектами. Класс object - это базовый класс, от которого наследуются все остальные классы в Python. Это значит, что все в Python - это объекты.
Продолжение…