In the process of using python, I found that when the function parameter is list , calling list.append() inside the function will change the formal parameters, which is different from C/C++. Check the relevant information and record it here
##. #In python, id can get the memory address of>>> num1 = 10>>> num2 = num1>>> num3 = 10>>> id(num1)4299190320>>> id(num2)4299190320>>> id(num3)4299190320
referencecounting, which is very similar to C++zhong’s smart pointer. The variableis assigned to The variable is equivalent to the reference counter of the same object + 1, instead of reallocating space.
For the list object, you can see the following results:>>> list1 = [,>>> list2 = [,>>> >>> 4302498128
C language. And modifying the local object will not change the original data.
##
def incrInt(num): pId(num) num += 1; pId(num)def incrList(listArg): pId(listArg) listArg.append(1); pId(listArg)def pId(arg): print id(arg) num1 = 10pId(num1) incrInt(num1)print(num1) list1 = [0,2] pId(list1) incrList(list1)print(list1)
The results are as follows:
python test.py42991819044299181904429918188010433697991243369799124336979912[0, 2, 1]
You can see that inside the function, When the value of int is changed, num points to another memory address, and when the list is modified, it is at the same memory address.
In python, objects can be divided into mutable and immutable. ) two types, tuple, number,
string(string) are all immutable objects, while dictionary and list ) object is a variable object So please pay attention when passing parameters
.The above is the detailed content of Differences in python function parameters. For more information, please follow other related articles on the PHP Chinese website!