Ссылки на глобальные примитивы против объектов

Может кто-нибудь объяснить, пожалуйста, следующий результат в Python?

При запуске следующего фрагмента кода Python выдает ошибку, говоря, что переменнаяx ссылка была перед назначением:

x = 1

def increase_x():
    x += 1

increase_x()

Решение, конечно, было бы включить строкуglobal x после объявления функции дляincrease_x.

Однако при выполнении следующего фрагмента кода ошибки не возникает, и в результате вы ожидаете:

x = [2, -1, 4]

def increase_x_elements():
    for k in range(len(x)):
        x[k] += 1

increase_x_elements()

Это потому, что целые числа являются примитивами в Python (а не объектами) и такx в первом фрагменте примитив хранится в памяти, в то время какx во втором фрагменте ссылки на указатель на объект списка?

Ответы на вопрос(1)

Ваш ответ на вопрос