Franek
спасибо. (yield 0 во второй функции не обязателен наверное).
Не, эта функция является общей функцией. Это значит, что она написана так, чтобы решать тысячи разных задач.
Допустим, надо тебе список чисел превратить в список списков цифр этих чисел
>>> def get_number_digits(number):
... if number == 0:
... yield 0
... return
... while number > 0:
... yield number % 10
... number //= 10
...
>>> lst = [1, 2, 3, 0, 123984, 987239, 0, 897234]
>>> out = list(map(list, map(get_number_digits, lst)))
>>> out
[[1], [2], [3], [0], [4, 8, 9, 3, 2, 1], [9, 3, 2, 7, 8, 9], [0], [4, 3, 2, 7, 9, 8]]
>>>
Как видишь, никаких пятизначных чисел тут нет и близко, это совсем другая задача, а функцию можно использовать сразу, не внося в неё никаких изменений.
Почему это важно? Потому что обычно таких функций написано сотни и каждую переделывать под решение новой задачи или вообще писать заново всю функцию для каждой новой задачи очень затратно по времени. Поэтому функции надо писать так, чтобы они были применимы к как можно большему числу задач, которые могут появиться. Тогда написание целой программы может занять не месяц, а один день. Ну и, соответственно, ты за месяц сможешь сделать тридцать программ, а не одну.
Если ты их продаёшь, разницу ты ощутишь сразу, а если ты действительно делаешь что-то сложное, где просто необходимо много программ делать, то ты реально имеешь потенциал выпустить хорошую и насыщенную программу собственного производства. Проблема того, что многие программисты не выпускают своих программ, относится не к тому, что они не знают, как их сделать, а к тому, что у них нет времени делать все элементы для этих программ. В результате они либо выпускают мелочёвки какие-то, которые не стоят внимания, либо просто идут куда-то там работать в чужие проекты и там так и пропадают, потому что их код присваивают эти проекты, даже копирайты их не увидишь, потому что их код принадлежит компании.