Mất mấy ngày để debug mới tìm ra nguyên nhân chỉ vì sơ ý trong việc trong quá trình xử lý truyền vào hàm (Function) Python một tham chiếu (Reference) :)
Quay lại cơ bản,
Ai đã lập trình chắc không lạ gì về tham chiếu (Reference)
Mô tả lại lỗi ngờ nghệch,
Có một mảng là một array lưu kết quả lấy từ hàm functionGetAll()
array_result_all = functionGetAll() #Hàm functionGetAll trả lại một array là toàn bộ kết quả có thể sau đó nhét vào một array tên là array_result_all
Kết quả từ mảng array_result_all sau đó được truyền vào các functionResultX nào đó để thực hiện một việc gì đó rồi trả lại một mảng resultX tương ứng. Và ý muốn của tôi là qua mỗi lần xử lý bởi functionResultX vẫn không làm thay đổi bất cứ thông tin gì trong array_result_all sau mỗi lần gọi functionResultX.
result1 = functionResult1(array_result_all)
result2 = functionResult2(array_result_all)
result3 = functionResult3(array_result_all)
result4 = functionResult4(array_result_all)
Sau đó gom lại các kết quả đã xử lý bằng một result_all
result_all = result1 + result2 + result3 + result4
Nhưng khi in in ra result_all kết quả lại hoàn toàn không như mong mốn. Quay lại debug tôi nhận ra rằng việc sử dụng ít hay nhiều functionResultX nó lại làm ảnh hưởng tới kết quả In ra :). Ví dụ nếu chạy functionResult1 => functionResult2 thì giá trị của result3 lại khác khi chỉ chạy functionResult3 mà bỏ qua functionResult1 và functionResult2.
Sau một thời gian tìm kiếm tôi nhận ra rằng trong functionResult
Phương án xử lý,
Trong functionResult
Đúng là một trải nghiệm “Ngờ nghệch” thực sự,
Kinh nghiệm rút ra
Phải cận thận với dấu = trong python và lập trình,