Q: Ошибка в Checkio или в коде? Надеюсь здесь есть люди, которые тоже решают по фану задачки на Checkio. Столкнулся с решением задачи Flatten a list.
https://py.checkio.org/mission/flatten-list/
В PyCharme мой код:
a = []
def flat_list(array):
    global a
    [flat_list(i) if isinstance(i,list) else a.append(int(i)) for i in array]
    return a

print(flat_list([1,[2,2,2],4]))

выдаёт результат:
[1, 2, 2, 2, 4]
На Chekio результат:
[1,2,3,1,2,2,2,4]
и тест не проходит (переделал решение, когда тест прошёл, но вопрос именно почему этот код заворачивают с таким вот результатом.
Вопрос: почему такое разночтение кода? (версии питона одинаковы)

A: Вы зачем-то используете глобальную переменную.
Естественно, при запуске функции несколько раз, результаты будут накапливаться в этой переменной. И при каждом следующем вызове результат окажется загрязнён предыдущими результатами.
Вы у себя локально запускаете функцию один раз - и не видите никакой ошибки. А chekio запускает последовательность тестов, и уже на втором тесте ошибка будет обязательно.
Вообще, глобальные переменные использовать крайне не рекомендуется.
Самое смешное, что в вашем случае использование переменной даже не имеет какого-либо практического смысла. Вы могли спокойно объявить пустой список уже внутри функции. В вашем случае использование такого скользкого инструмента, как глобальные переменные вообще ничем не оправдано.
