Происходит так из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибуте функции
defaults, который создается один раз в момент определения функции.А для того, чтобы добиться правильного поведения функции, следует воспользоваться ключевым словом
None при определении аргументов по-умолчанию.
