xam1816
просто написал
Убери print'ы отовсюду. Функции должны делать только return. Когда нужно выводить что-то на экран, это должны делать отдельные выводящие функции, которым что-то там подаётся через аргументы, чтобы они могли сообразить, что выводить. Связано это с тем, что сегодня тебе надо выводить на экран, а завтра этот вывод на экран надо будет разом отключить во всей программе. Обычно это всё прикрепляется к одной маленькой опции в конфигурационном файле программы, где ты, например, поставил “print off” - и по всей программе вывод отключился, где ты написал “log on” - и по всей программе вывод в лог-файл пошёл. Так вот, когда у тебя внутри рабочих функций это всё замешано, ты не сможешь быстро включать и отключать вывод, перенаправлять его, да и просто менять формат вывода, что тоже часто бывает нужно. Часто нужно делать вывод более подробный или менее подробный, добавлять в него какие-то данные или, наоборот, скрывать в нём какие-то данные, чтобы экран не забивать. Всё это регулируется опциями, подаваемыми в программу (через командную строку и/или через файл настроек).
Поэтому рабочие функции должны только работать. Выводящие функции должны только выводить. Связывает их между собой связывающая функция. У каждой функции только её дело. Функция не должна делать сто вещей одновременно. Функция не должна быть Дедом Морозом, который сам танцует, сам поёт, сам подарки раздаёт.
tags: pure function