Я хотел бы подражать поведению передачи по значению в python. Другими словами, я хотел бы быть абсолютно уверен, что функция, которую я пишу, не изменяет данные, предоставленные пользователем.
Один из возможных способов - использовать глубокую копию:
from copy import deepcopy
def f(data):
data = deepcopy(data)
#do stuff
есть ли более эффективный или более питонический способ достижения этой цели, делая как можно меньше предположений о передаваемом объекте (например, метод .clone ())
Изменить
Я знаю, что технически в python все передается по значению. Мне было интересно эмулировать поведение, т.е. убедиться, что я не испортил данные, которые были переданы функции. Я предполагаю, что наиболее общий способ - клонировать рассматриваемый объект либо с его собственным механизмом клонирования, либо с помощью deepcopy.