Потому что функция должна делать что-то одно. Если функция выводящая что-то на экран, то у неё есть в имени слово print и внутри неё можно выводить на экран. А если функция просто что-то куда-то добавляет, то там в имени нет print и поэтому и выводить она ничего не должна.
То, что функция должна делать что-то одно, называется “функциональной прочностью модуля по Майерсу”. Функция должна отвечать точно на вопрос “что делает эта функция?”, ответ для твоей функции такой - “дополняет множество городов”. То есть там нет такого “дополняет множество городов И выводит города на экран И чистит кошку от шерсти И ходит в магазин”. Только одно она делает и всё.
То, что функция не должна ничего выводить, называется “чистотой функции”. Чистая функция - это функция, которая не цепляет ничего больше, кроме своих данных. То есть она не цепляет экран, чтобы вывести что-то на него, не цепляет файлы и не держит их открытыми, не обращается к другим функциям и не обращается к каким-то общим данным, которые доступны другим частям программы. Она работает только со своими данными и только у себя внутри.
Так что нужно стремиться к тому, чтобы каждая функция была функционально прочной и чтобы каждая функция была чистой. Тогда у тебя код, состоящий из таких функций, будет пуленепробиваемым. Пуленепробиваемость кода - это такое свойство кода, при котором любые изменения в программе не затрагивают уже написанный код и не заставляют его переписывать или редактировать как-то.
То, что функция должна делать что-то одно, называется “функциональной прочностью модуля по Майерсу”. Функция должна отвечать точно на вопрос “что делает эта функция?”, ответ для твоей функции такой - “дополняет множество городов”. То есть там нет такого “дополняет множество городов И выводит города на экран И чистит кошку от шерсти И ходит в магазин”. Только одно она делает и всё.
То, что функция не должна ничего выводить, называется “чистотой функции”. Чистая функция - это функция, которая не цепляет ничего больше, кроме своих данных. То есть она не цепляет экран, чтобы вывести что-то на него, не цепляет файлы и не держит их открытыми, не обращается к другим функциям и не обращается к каким-то общим данным, которые доступны другим частям программы. Она работает только со своими данными и только у себя внутри.
Так что нужно стремиться к тому, чтобы каждая функция была функционально прочной и чтобы каждая функция была чистой. Тогда у тебя код, состоящий из таких функций, будет пуленепробиваемым. Пуленепробиваемость кода - это такое свойство кода, при котором любые изменения в программе не затрагивают уже написанный код и не заставляют его переписывать или редактировать как-то.
Добавление одного элемента
Для добавления нового элемента можно применить доступ по ключу: объявить новый ключ словаря и присвоить ему значение.
Для добавления нового элемента можно применить доступ по ключу: объявить новый ключ словаря и присвоить ему значение.