Потому что функция должна делать что-то одно. Если функция выводящая что-то на экран, то у неё есть в имени слово print и внутри неё можно выводить на экран. А если функция просто что-то куда-то добавляет, то там в имени нет print и поэтому и выводить она ничего не должна.
То, что функция должна делать что-то одно, называется “функциональной прочностью модуля по Майерсу”. Функция должна отвечать точно на вопрос “что делает эта функция?”, ответ для твоей функции такой - “дополняет множество городов”. То есть там нет такого “дополняет множество городов И выводит города на экран И чистит кошку от шерсти И ходит в магазин”. Только одно она делает и всё.
То, что функция не должна ничего выводить, называется “чистотой функции”. Чистая функция - это функция, которая не цепляет ничего больше, кроме своих данных. То есть она не цепляет экран, чтобы вывести что-то на него, не цепляет файлы и не держит их открытыми, не обращается к другим функциям и не обращается к каким-то общим данным, которые доступны другим частям программы. Она работает только со своими данными и только у себя внутри.
Так что нужно стремиться к тому, чтобы каждая функция была функционально прочной и чтобы каждая функция была чистой. Тогда у тебя код, состоящий из таких функций, будет пуленепробиваемым. Пуленепробиваемость кода - это такое свойство кода, при котором любые изменения в программе не затрагивают уже написанный код и не заставляют его переписывать или редактировать как-то.
То, что функция должна делать что-то одно, называется “функциональной прочностью модуля по Майерсу”. Функция должна отвечать точно на вопрос “что делает эта функция?”, ответ для твоей функции такой - “дополняет множество городов”. То есть там нет такого “дополняет множество городов И выводит города на экран И чистит кошку от шерсти И ходит в магазин”. Только одно она делает и всё.
То, что функция не должна ничего выводить, называется “чистотой функции”. Чистая функция - это функция, которая не цепляет ничего больше, кроме своих данных. То есть она не цепляет экран, чтобы вывести что-то на него, не цепляет файлы и не держит их открытыми, не обращается к другим функциям и не обращается к каким-то общим данным, которые доступны другим частям программы. Она работает только со своими данными и только у себя внутри.
Так что нужно стремиться к тому, чтобы каждая функция была функционально прочной и чтобы каждая функция была чистой. Тогда у тебя код, состоящий из таких функций, будет пуленепробиваемым. Пуленепробиваемость кода - это такое свойство кода, при котором любые изменения в программе не затрагивают уже написанный код и не заставляют его переписывать или редактировать как-то.
Добавление одного элемента
Для добавления нового элемента можно применить доступ по ключу: объявить новый ключ словаря и присвоить ему значение.
Для добавления нового элемента можно применить доступ по ключу: объявить новый ключ словаря и присвоить ему значение.
По записи в коде этот способ похож на замену значения для определённого ключа в словаре: именно так в прошлом уроке вы переселили Серёгу из Омска в Оренбург.
Разница лишь в том, что
если вызван существующий в словаре ключ — его значение будет заменено;
если вызван ключ, которого нет в словаре — будет создан новый элемент словаря.
Если добавить в словарь несколько элементов с одинаковыми ключами, но разными значениями — в словаре появится лишь один элемент с этим ключом, а его значением будет последнее из добавленных значений.
Разница лишь в том, что
если вызван существующий в словаре ключ — его значение будет заменено;
если вызван ключ, которого нет в словаре — будет создан новый элемент словаря.
Если добавить в словарь несколько элементов с одинаковыми ключами, но разными значениями — в словаре появится лишь один элемент с этим ключом, а его значением будет последнее из добавленных значений.
Андрей Павленко @Akdmeh
PHP, Yii2, Music
cypselusmurarius: в вашем случае это ОТЛИЧНО (в комменте вы написали, что вам 14)! И очень похвально, что вы интересуетесь технологиями.
К сожалению, Лутц - это только теория. Типа: "вот есть велосипед. У него есть переднее и заднее колесо, у вас есть руль, которым можно задавать направление". Но прочитав подобный мануал, ездить вы вообще не научитесь. Хотя у Лутца есть неплохие примеры рабочих программ. В таком случае попытайтесь несколько раз внимательно читать примеры, и затем пытаться реализовать такой же функционал, но не просто переписывая код один в один, а немного его видоизменяя - на уровне переменных и тому подобного.
Подумайте вот о чем: какую программу вы хотели бы написать? Может, показывать список друзей вконтакте и диалоги с ними? Или, может быть, какую-то простую игру? Или может сайт сделать? Или еще чего?
Очень важно найти реальный проект, над которым вы будете работать и начать его реализовать. И в этот момент вы поймете, как ничтожны ваши знания, как многого вы не знаете. Тут вы начнете искать способы решения той или иной задачи. Прежде, чем обратиться сюда либо на форумы - попытайтесь максимально кратко сформулировать вашу задачу. К примеру: "задать другой цвет контуру треугольника в canvas" или что-то подобное. Когда четко понимаете, что нужно - пользуетесь поисковиком. Также неплохо продублировать вопрос на английском и перевести непонятные слова в словаре, чтобы понять суть ответа и применить его. Умные люди ведь сказали когда-то: "в правильно поставленном вопросе есть уже половина ответа".
И только если ничего не нашли - обращаться уже сюда.
Только так, на практике, и никак иначе, вы научитесь чего-нибудь и уже за полгода активных занятий программированием сможете брать несложные заказы. Главное, самому понять, в какой области вы хотите работать - разрабатывать игры, серверные решения, простые программы-окна, сайты и т.д.
PHP, Yii2, Music
cypselusmurarius: в вашем случае это ОТЛИЧНО (в комменте вы написали, что вам 14)! И очень похвально, что вы интересуетесь технологиями.
К сожалению, Лутц - это только теория. Типа: "вот есть велосипед. У него есть переднее и заднее колесо, у вас есть руль, которым можно задавать направление". Но прочитав подобный мануал, ездить вы вообще не научитесь. Хотя у Лутца есть неплохие примеры рабочих программ. В таком случае попытайтесь несколько раз внимательно читать примеры, и затем пытаться реализовать такой же функционал, но не просто переписывая код один в один, а немного его видоизменяя - на уровне переменных и тому подобного.
Подумайте вот о чем: какую программу вы хотели бы написать? Может, показывать список друзей вконтакте и диалоги с ними? Или, может быть, какую-то простую игру? Или может сайт сделать? Или еще чего?
Очень важно найти реальный проект, над которым вы будете работать и начать его реализовать. И в этот момент вы поймете, как ничтожны ваши знания, как многого вы не знаете. Тут вы начнете искать способы решения той или иной задачи. Прежде, чем обратиться сюда либо на форумы - попытайтесь максимально кратко сформулировать вашу задачу. К примеру: "задать другой цвет контуру треугольника в canvas" или что-то подобное. Когда четко понимаете, что нужно - пользуетесь поисковиком. Также неплохо продублировать вопрос на английском и перевести непонятные слова в словаре, чтобы понять суть ответа и применить его. Умные люди ведь сказали когда-то: "в правильно поставленном вопросе есть уже половина ответа".
И только если ничего не нашли - обращаться уже сюда.
Только так, на практике, и никак иначе, вы научитесь чего-нибудь и уже за полгода активных занятий программированием сможете брать несложные заказы. Главное, самому понять, в какой области вы хотите работать - разрабатывать игры, серверные решения, простые программы-окна, сайты и т.д.