in the function may share objects with variables in the scope of the call hencein-place changes to mutable arguments in function can impact the caller herea and in the function initially reference the objects referenced by variables and when the function is first called changing the list through variable makes appear different after the call returns if you recall our discussions about shared mutable objects in and you'll recognize the phenomenon at workchanging mutable object in place can impact other references to that object herethe effect is to make one of the arguments work like both an input and an output of the function avoiding mutable argument changes this behavior of in-place changes to mutable arguments isn' bug--it' simply the way argument passing works in pythonand turns out to be widely useful in practice arguments are normally passed to functions by reference because that is what we normally want it means we can pass large objects around our programs without making multiple copies along the wayand we can easily update these objects as we go in factas we'll see in part vipython' class model depends upon changing passed-in "selfargument in placeto update object state if we don' want in-place changes within functions to impact objects we pass to themthoughwe can simply make explicit copies of mutable objectsas we learned in for function argumentswe can always copy the list at the point of callwith tools like listlist copy as of or an empty slicel [ changer(xl[:]pass copyso our 'ldoes not change we can also copy within the function itselfif we never want to change passed-in objectsregardless of how the function is called arguments