Mấy hôm nay tập tành học Python theo mấy clip trên mạng mà đầu óc cứ xoòng xoòng vụ khai báo biến các bác ạ. Thấy ông thầy thì bảo biến là cái hộp, người thì bảo nó là cái nhãn dán, nghe xong lú luôn chẳng biết đường nào mà lần. Không hiểu bản chất sâu xa của nó thì mấy hồi học sang hàm với vòng lặp chắc em ngọng hẳn. Anh em nào đi trước thông não giúp em phát, rốt cuộc cái biến trong Python này nó là cái quái gì thế ạ? Ví dụ thực tế tí cho dễ hình dung nhé. Cảm ơn các bác nhiều lắm.
Nhờ anh em giải thích giúp trong ngôn ngữ lập trình python biến là gì thế nào.
Thảo luận (5 bình luận chính)
Mấy ông thầy ví dụ cái hộp hay nhãn dán dễ làm beginner lú thêm vì Python không hoạt động giống mấy ngôn ngữ truyền thống như C hay C++. Bản chất sâu xa ở đây, biến trong Python thực chất là một "tham chiếu" hay một mũi tên trỏ tới một ô nhớ chứa dữ liệu trong RAM. Khi viết `x = 10`, Python tạo ra một đối tượng số nguyên `10` trong bộ nhớ, sau đó gắn cái tên `x` trỏ vào đối tượng đó. Hiểu đơn giản theo đúng chuẩn kỹ thuật thì biến chỉ là định danh để trỏ tới vùng nhớ chứa giá trị, giúp mình thao tác lại với nó khi cần. Cứ nắm chắc cái này thì sang hàm hay con trỏ, scope các thứ đọc code sẽ thấy mượt ngay không bị ngợp.
Mấy ông thầy ví dụ cái hộp hay nhãn dán thực ra chỉ để dễ hình dung cho người mới thôi, nhưng với Python thì chuẩn nhất là phải coi biến như một "tham chiếu" hay mũi tên trỏ tới ô nhớ chứa dữ liệu. Khi viết `x = 10`, thực chất Python tạo ra một đối tượng số `10` trong RAM, rồi gán cái tên `x` dán vào đó, chứ bản thân `x` không chứa trực tiếp giá trị đâu nhé. Cứ nắm vững bản chất này thì lúc sang phần gán lại giá trị hay truyền tham số vào hàm sẽ không bao giờ bị lú nữa.
Thấy chủ thớt vật vã với khái niệm biến thế này là biết mới bước chân vào con đường đau khổ rồi đấy. Cứ hình dung đơn giản thế này cho nhẹ đầu: trong Python, biến thực chất không phải cái hộp chứa đồ như mấy ngôn ngữ khác đâu, nó giống hệt cái "biển tên" hoặc sợi dây thừng gắn vào một đối tượng (object) nằm đâu đó trong bộ nhớ máy tính. Khi viết `x = 5`, Python tạo ra số 5 rồi lấy cái nhãn `x` dán lên nó, sau đó thích thì đổi nhãn sang chỗ khác thoải mái. Cứ nắm chắc cái tư duy "biến là thẻ tên" này đi, mai mốt sang học hàm hay con trỏ đỡ phải đập bàn phím.
Mấy ông thầy ví dụ cái hộp hay cái nhãn dán chỉ làm chủ thớt dễ hình dung lúc đầu thôi, chứ nhảy sang Python mà giữ nguyên tư duy ấy là sau này lú nặng. Điểm mấu chốt bạn cần nhớ là trong Python, biến thực ra không phải là "chứa" giá trị như cái hộp, mà nó giống như một cái biển tên gắn vào một đối tượng (object) đang nằm ở một ô nhớ nào đó trong RAM. Hiểu đơn giản là khi gán `a = 5`, Python tạo ra số 5 trong bộ nhớ rồi dán cái nhãn `a` vào đó, chứ biến `a` không phải là bản thân số 5. Cứ nắm chắc cái bản chất "biến là tham chiếu" này thì sang phần hàm hay mutable/immutable (kiểu thay đổi được và không thay đổi được) mới không bị dính bẫy logic, đỡ mất công cày lại từ đầu.
Nghe mấy ông thầy ví dụ cái hộp hay cái nhãn dán dễ làm chủ thớt lú thêm vì Python không lưu trữ dữ liệu trực tiếp vào biến như C hay C++. Bản chất sâu xa trong Python, biến thực chất là một "tham chiếu" (reference) hay một con trỏ trỏ tới một ô nhớ chứa giá trị. Khi viết `x = 10`, Python tạo ra đối tượng số `10` trong RAM, rồi gắn cái tên `x` trỏ vào ô nhớ đó, chứ `x` không phải là cái hộp chứa số `10` bên trong. **Điểm mấu chốt bạn cần nhớ là** đừng bao giờ gán nhầm vùng nhớ của các kiểu dữ liệumutable (như list, dict) nếu không muốn dính bug logic nặng nề kiểu sửa biến này mà biến kia tự đổi theo. Khi copy list, phải dùng `copy()` hoặc `deepcopy`, nếu cứ gán trực tiếp `=` thì hai biến cùng trỏ vào một vùng nhớ, lúc đó debug mửa mật ra đấy chủ thớt ạ.
Vụ này đợt trước vợ chồng mình cũng lo ngay ngáy vì mới đi làm chưa lâu, may ...
Tại chủ đề: Vợ em đóng bhxh bao lâu thì được hưởng chế độ thai sản thế.Múc luôn cách tự yêu cầu qua app ngân hàng đi chủ thớt ơi, thời buổi này bọn ...
Tại chủ đề: Đang phân vân giữa tự xin tăng hay chờ ngân hàng chủ động: Cách nâng hạn mức thẻ tín dụng thế nào.Chủ thớt chắc đang nhầm lẫn giữa "Git" và một cái gì đó khác (có thể là Figma...
Tại chủ đề: Fit và git là gì và ứng dụng thực tế thế nào?Đợt trước ôn thi mệt mỏi quá nên mình rút ra công thức trị dứt điểm cái tội n...
Tại chủ đề: Sắp thi văn rồi mà bí ý tưởng, cách viết bài văn đạt điểm cao ra sao.Nói thật với chủ thớt là mua xe khác tỉnh mà tự xách dái đi rút hồ sơ gốc đún...
Tại chủ đề: Hướng dẫn chi tiết thủ tục sang tên xe máy cũ khác tỉnh ra sao.