Это не ошибка дизайна . Любой, кто совершает это, делает что-то неправильно.
Есть три случая, когда я вижу, где вы можете столкнуться с этой проблемой:
- Вы намерены изменить аргумент как сторону эффект функции. В этом случае никогда не имеет смысла иметь аргумент по умолчанию. Единственное исключение - когда вы злоупотребляете списком аргументов, чтобы иметь функциональные атрибуты, например.
cache={}
, и вы не должны были бы вызывать функцию с фактическим аргументом вообще. - Вы намерены оставить аргумент немодифицированным, но вы случайно сделали изменить его , Это ошибка, исправьте ее.
- Вы намерены изменить аргумент для использования внутри функции, но не ожидали, что изменение будет доступно для просмотра вне функции. В этом случае вам нужно сделать копию аргумента, независимо от того, был ли он по умолчанию или нет!
Пример в вопросе может относиться к категории 1 или 3. Нечетно, что он изменяет переданный список и возвращает его; вы должны выбрать тот или другой.
задан user3249448 26 March 2019 в 13:27
поделиться