these assignment statements establish identifier data as an alias for grades and target as name for the string literal (see figure grades data target list str figure portrayal of parameter passing in pythonfor the function call count(gradesa identifiers data and target are formal parameters defined within the local scope of the count function the communication of return value from the function back to the caller is similarly implemented as an assignment thereforewith our sample invocation of prizes count(gradesa )the identifier prizes in the caller' scope is assigned to the object that is identified as in the return statement within our function body an advantage to python' mechanism for passing information to and from function is that objects are not copied this ensures that the invocation of function is efficienteven in case where parameter or return value is complex object mutable parameters python' parameter passing model has additional implications when parameter is mutable object because the formal parameter is an alias for the actual parameterthe body of the function may interact with the object in ways that change its state considering again our sample invocation of the count functionif the body of the function executes the command data appendf )the new entry is added to the end of the list identified as data within the functionwhich is one and the same as the list known to the caller as grades as an asidewe note that reassigning new value to formal parameter with function bodysuch as by setting data ]does not alter the actual parametersuch reassignment simply breaks the alias our hypothetical example of count method that appends new element to list lacks common sense there is no reason to expect such behaviorand it would be quite poor design to have such an unexpected effect on the parameter there arehowevermany legitimate cases in which function may be designed (and clearly documentedto modify the state of parameter as concrete examplewe present the following implementation of method named scale that' primary purpose is to multiply all entries of numeric data set by given factor def scale(datafactor)for in range(len(data))data[jfactor