Мой код вызывает предупреждение в pylint:
def getInsertDefault(collection=['key', 'value'], usefile='defaultMode.xml'):
return doInsert(collection,usefile,True)
Предупреждение довольно ясно, оно Изменяемые аргументы по умолчанию , я получаю точку зрения в нескольких случаях, что это может дать неправильное впечатление от происходящего. На SA уже есть несколько постов, но не кажется, что этот здесь покрыт. Большинство вопросов и примеров имеют дело с пустыми списками, которые имеют слабые ссылки и могут вызвать ошибку.
Я также знаю, что лучше изменить код на getInsertDefault(collection=None ...)
, но в этом методе для инициализации по умолчанию, Я не собираюсь ничего делать со списком, кроме чтения, (почему) мой код опасен или может привести к ошибкам?
- РЕДАКТИРОВАТЬ -
В точку: Почему пустой словарь является опасным значением по умолчанию в Python? будет отвечать на вопрос. Вид: я знаю, что мой код противоречит соглашению и может привести к ловушке - но в этом очень конкретном c случае: я в безопасности?
Я нашел предложение в комментариях полезным для использования collection=('key', 'value')
вместо этого, как это обычно и безопасно. Тем не менее, из чистого интереса: может ли моя предыдущая попытка создать какую-то серьезную проблему?