Если вы передаете изменяемый тип в функцию или метод, то непреднамеренно мутируйте его внутри этой функции или метода, он также будет изменен во внешней области, что может привести к довольно плохим и трудным для поиска ошибкам.Каков обычный (и эффективный) способ избежать ошибок в мутировании?
Каково общепринятое в отрасли отношение к этому при передаче в изменяемых типах?
Например, со списком вы можете использовать:
def func(myList):
myList = myList[:]
И после этого внутри этой функции myList
будет копией, что это безопасно мутировать. То же самое с использованием модуля copy
. Но это лучший или стандартный способ сделать это?
Или все просто переназначают все аргументы локальным переменным области до того, как они сделают что-нибудь еще? Вид раздражающего дополнительного шага, изменяющего имена аргументов ...
Контроль доступа на полях объектов, если есть такая вещь, и документация методов. – clwhisk