Which is the same as if in my list example I give a[0] to the function instead of a. It won’t change the content of a anymore. Because it never had the object a to begin with.
I’m not sure to understand what you were expecting to happen differently than the following?

If you change input.data (or input[0] in my list example), then you modify your input object. And so this change will be seen every place where you use this object.
If you pass the content of input.data (or input[0] in my list example) and then just use it for some computation (not modifying any object inplace), then you don’t modify any existing object and so no existing objects will be changed.