печать значений массива предотвращает ошибку нулевого указателя - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь найти пространство параметров для хорошей модели. В моем коде я делаю что-то вроде следующего:

configurations = [None] * 9
index = 0
for param1 in range(3):
  for param2 in range (3):
    #call constructor
    configurations[index] = Configuration(param1, param2) 
    index = index + 1
return configurations

, затем я использую этот массив в другом месте для построения моделей. Однако по какой-то причине он не заполняет массив. Я получаю ошибку при доступе к индексу 3 или выше. Проверка показывает, что массив с этими индексами по-прежнему равен «None». во время отладки я добавил к коду оператор печати:

configurations = [None] * 9
index = 0
for param1 in range(3):
  for param2 in range (3):
    #call constructor
    configurations[index] = Configuration(param1, param2)
    index = index + 1

for x in configurations:
  print(x.param1)
return configurations

, к моему удивлению, теперь мой код работал гладко. Массив полностью заполнен. Если я закомментирую эти 2 строки: ошибка. раскомментируйте строки: снова работает.

что здесь происходит? Почему оператор print изменяет поведение моей программы? это сверхактивный G C, который предотвращается при печати значений?

1 Ответ

0 голосов
/ 09 марта 2020

Я нашел проблему. оператор return имеет отступ Tab, но я использую 4 пробела в другом месте моего кода. Это заставляло его пропускать самое внешнее значение для l oop. заявление печати как-то предотвратило это. изменение табуляции на пробелы устранило необходимость в операторе печати. ​​

...