Вы не можете изменять кортеж, но вы можете изменить содержимое вещей, содержащихся в кортеже. Списки (вместе с наборами, dicts и объектами) являются ссылочным типом , и, таким образом, «вещь» в кортеже является просто ссылкой - фактический список является изменяемым объектом, на который указывает эта ссылка и может быть изменен без изменения самой ссылки.
( + ,) <--- your tuple (this can't be changed)
|
|
v
['a'] <--- the list object your tuple references (this can be changed)
После thing[0][0] = 'b'
:
( + ,) <--- notice how the contents of this are still the same
|
|
v
['b'] <--- but the contents of this have changed
После thing[0].append('c')
:
( + ,) <--- notice how this is still the same
|
|
v
['b','c'] <--- but this has changed again
Причина, по которой ошибки +=
заключаются в том, что она не полностью эквивалентна .append()
- на самом деле это добавление, а затем назначение (и присваивание не выполняется), а не просто добавление на место .
Я сделал это с:
from flask.logging import default_handler
app.logger.removeHandler(default_handler)
Тогда консольных сообщений не стало...