Python Programming – Pass by Value vs. Pass by Reference
As we know that the two-way communication between function caller and function definition is achieved through arguments, which we pass by the function call. In Python, language arguments can be passed by value and by object reference.
Pass by Value
This concept can be understood by considering the program for passing arguments by value in Code: 6.12. It is perceived from the output of the program that a list object is created with values 1, 2, 3 and it is passed as an argument to the function update( ). In the function definition of update, we see that the list values are modified to 100, 200, 300 and the result is printed, which displays the new values. However, when the function update() returns back and the value of the list is printed out to be the old ones, i.e., 1, 2, 3, and not the updated ones. This concept is known as a pass-by value, which signifies that if any modifications are made to the values in the function definition then it does not make any effect on the arguments of the caller function.
- Python Programming – Python User Defined Functions
- Python Programming – Types Of Parameters Or Formal Arguments
- How to Check for Object Type in Python | Python type() and isinstance() Function with Examples
Code: 6.12, Illustration of call by value.
# This program demonstrates the concept of call by value #function definition ‘This function updates the passed values’ # Function call of update() function |
Output inside function [100, 200,-300] |
Pass by Object Reference
A program representing the concept of pass-by object reference is given in Code: 6.13. We can see from this program that unlike the call by value, where the list values were modified in the function definition of Code: 6.12, here in Code 6.13., the list function append is used to add more items to the list. From the output, it is observed that the new values are appended after the old ones and a similar result is printed both in the function definition and after the function call.
Code: 6.13. Illustration of call by reference.
# This program demonstrates the concept of call by reference #function definition # Function call of update() function |
Output inside function [1, 2, 3, [100, 200, 300]] |
After, observing the results of both call by value and call by reference, it is perceived that in Python language, the arguments are passed by object reference intrinsically. Any change, made to the arguments in the function definition does not affect the object on the function call side. However, if any in-build function such as append() is associated with the function argument in the function definition, then it definitely makes changes to the object and the object value gets updated on both function definition as well as function call side.