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