Em chào mọi người,
Như trong C/C++ (em chưa học) thì có nghe mọi người nói qua pointer, thì không biết vấn đề em gặp có phải thuộc vấn đề này không? Hay là thuộc về nội dung pass by value hay pass by reference.
Cụ thể em lấy ví dụ của hai bài code như sau, 1 bài thì sau khi em thực hiện giá trị list ban đầu bị thay đổi, 1 cái thì không. Tại sao lại có sự khác nhau như trên ạ?
Và có cách nào để khi code em biết chắc chắn là nó có thay đổi hay không không!
Em cảm ơn,
# List as argument - Modifying argument
def doubleList(a_listNum):
nLen = len(a_listNum)
for i in range(0, nLen):
a_listNum[i] = 2 * a_listNum[i]
# Call
listNum = [1, 2, 3, 4]
doubleList(listNum)
print(listNum)
[2, 4, 6, 8]
def clearList(a_listNum):
a_listNum = []
print(a_listNum)
listNum = [1, 2, 3, 4]
clearList(listNum)
print(listNum)
>> %Run sffs.py
[]
[1, 2, 3, 4]