Ich möchte das Pass-by-Value-Verhalten in Python emulieren. Mit anderen Worten, ich möchte unbedingt sicherstellen, dass die von mir geschriebene Funktion die vom Benutzer bereitgestellten Daten nicht ändert.
Eine Möglichkeit ist die Verwendung einer tiefen Kopie:
from copy import deepcopy
def f(data):
data = deepcopy(data)
#do stuff
Gibt es einen effizienteren oder pythonischeren Weg, um dieses Ziel zu erreichen, indem so wenig Annahmen wie möglich über das übergebene Objekt getroffen werden (z. B. die .clone () -Methode)?
Bearbeiten
Mir ist bewusst, dass technisch alles in Python als Wert übergeben wird. Ich war daran interessiert, das Verhalten zu emulieren , dh sicherzustellen, dass ich nicht mit den Daten herumspiele, die an die Funktion übergeben wurden. Ich denke, der allgemeinste Weg besteht darin, das betreffende Objekt entweder mit einem eigenen Klonmechanismus oder mit Deepcopy zu klonen.