Некоторые переменные являются не «значениями», а «указателями».
Переменная list_
является указателем на существующий список.
Итак, вы фактически создаете список:
pointer_to_list = [] #this list is stored in memory, and the pointer will look at it
Здесь вы добавляете в список три элемента:
pointer_to_list += [None, pointer_to_list, pointer_to_list]
Этот список содержит 3 элемента. None, pointer, pointer
.
Но бывает так, что указатель указывает на сам список. Это не означает, что он бесконечно «назначен», просто если вы получите значение указателя, вы получите весь список.
И этот список содержит указатель. И указатель указывает на список, а список содержит указатель, а указатель указывает на список .....
Это дает вам возможность бесконечно получать список внутри списка внутри списка.
Но на самом деле существует только один список, содержащий три элемента: Нет, указатель, указатель.
Это можно сделать также с list_ += [None, list_]