Хранятся ли в памяти ключевые слова, операторы и т. Д. Как объекты? - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь провести концептуальное различие между объектами Python и другими языковыми элементами, такими как ключевые слова (например, return и def) и операторы (например, + и -) по памяти.Я знаю, что объекты хранятся в памяти, и у них есть идентификатор памяти и размер.Идентификатор и размер можно узнать с помощью id(object) и sys.getsizeof(object) соответственно.

Не-объекты, такие как ключевые слова и операторы, также хранятся в памяти?Если да, хранятся ли они так же, как объекты или по-разному?У return и def есть слот, как у строки "Foo", а у текста 10 есть?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Python - это скомпилированный язык;исходный код Python, к которому вы привыкли, скомпилирован в похожий на ассемблер байт-код, который фактически выполняется.

Например:

def foo(x):
    return x + 1

становится

>>> type(foo)
<class 'function'>
>>> dis.dis(foo)
  2           0 LOAD_FAST                0 (x)
              2 LOAD_CONST               1 (1)
              4 BINARY_ADD
              6 RETURN_VALUE

Само ключевое слово def не представлено;скорее это вызывает создание function объекта.Этот объект имеет атрибут __code__, который состоит из последовательности байт-кода, показанной выше.Аналогично, ключевое слово return вызывает генерацию операции RETURN_VALUE.

0 голосов
/ 13 февраля 2019

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

...