- Published on
Biến và các kiểu dữ liệu trong python
- Authors

- Name
- Trần Mạnh Thắng
- @TranManhThang96
I. Biến (variable)
Hầu hết khi làm quen với các ngôn ngữ lập trình đều có khái niệm biến. Biến là một đối tượng dùng để lưu trữ dữ liệu, các giá trị tạm thời để sử dụng trong chương trình đó. Dữ liệu có thể thay đổi giá trị trong quá trình thực thi chương trình.
x = 5
x = x + 1
y = "Hello"
Trong ví dụ trên x, y được gọi là các biến chứa dữ liệu. Biến x ban đầu được gán bằng 5 và sau đó tăng lên 1 chứng tỏ dữ liệu có thể thay đổi giá trị trong quá trình thực thi chương trình.
Biến trong python thường được viết dưới dạng snake_case.
my_int = 123
my_str = "Hello, World!"
print(type(my_int).__name__) # int
print(type(my_str).__name__) # str
Một đặc điểm của python là python sử dụng hệ thống kiểu duck typing (latent typing) tự động gán kiểu giống javascript. Vì vậy trong ví dụ trên my_int tự động được nhận biết là kiểu int và my_str tự động được nhận biết là kiểu str
II. Kiểu dữ liệu nguyên thuỷ (primitive data types)
- Integers (số nguyên): Đại diện cho các số nguyên, ví dụ: 1, 100, -5
- Floats (số thực): Đại diện cho các số thập phân, ví dụ: 3.14, -0.001, 2.0
- Strings (chuỗi): Đại diện cho chuỗi ký tự, ví dụ: "Hello, World!", 'Python'.
- Booleans: Chỉ đại diện cho hai giá trị True hoặc False (trong python là True và False khác với các ngôn ngữ khác như javascript là true, false)
III. Kiểu dữ liệu collection (complex data types)
- list
- tuple
- dict
- set
Đặc điểm chung của những kiểu dữ liệu này là có tính iterable (có tính lặp)
| Item | Example | Desc |
|---|---|---|
| List | ['Milk', 'Honey', 'Milk'] | Mutable, ordered list, duplicates allowed, mostly only one type |
| Set | Honey | Mutable, unorderd list, no duplicates, mostly only one type |
| Tuple | ('Milk', 'Honey') | Immutable, orderded list, duplicates allowed, often mixed types |
| Dictionary | {"a1": "one", "a2": "two", "a3": "three"} | Mutable, unorderd map, no duplicate keys, often mixed types |
Trong 4 kiểu dữ liệu complex chỉ có duy nhất tuple là Immutable
IV. Một vài thao tác với các kiểu dữ liệu
1. Get type
print(type(123)) # <class 'int'>
print(type(123).__name__) # 'int'
Khi sử dụng type(value) sẽ trả về class chứa kiểu dữ liệu Muốn trả về type dạng string hãy sử dụng type(value).__name__
2. Check type
sử dụng isinstance để check kiểu dữ liệu
a = True
print (isinstance(a, bool))
b = 123
print(isinstance(b, int))
3. Ép Kiểu
python hay bất kỳ ngôn ngữ nào khác đều có ép kiểu, chúng chỉ khác nhau về cú pháp
print(int("123"))
int()
float()
str()
bool()
4. Thao tác với số
a = 111222
b = 111_222
print(a == b)
Cách viết 111_222 nhìn phân cách các chữ số rõ ràng hơn
V. Object trong python
Trong Python, mọi thứ được xem là một đối tượng. Mọi đối tượng trong Python đều có các thuộc tính và phương thức riêng. mọi thứ, từ số, chuỗi, danh sách đến hàm và lớp đều được coi là đối tượng.
s = "Hello, World!"
print(s.upper())
Rõ ràng upper() như là một method trong OOP mà s là một instance của class
VI. Bản chất khi gán giá trị và function id()
1. Trong python có thể kiểm tra địa chỉ của biến thông qua function id()
a = 123
print(id(123)) # 140736605395192
print(id(a)) # 140736605395192
a += 1
print(id(a)) # 140736605395224
Cùng một biến a nhưng khi tăng giá trị thêm 1 thì nó lại có địa chỉ khác. Bản chất là bởi vì khi ta gán a = 123 thì nó sẽ cấp phát một ô nhớ trong bộ nhớ (memory) và ô nhớ đó có giá trị bằng 123. Khi ta tăng thêm 1 đơn vị, thì nó sẽ gán biến a cho ô nhớ có giá trị 124. Khi đó địa chỉ của biến a sẽ khác ban đầu.
2. Một ví dụ khác về id ()
x = 12
y = 12
z = 12
print(id(x)) # 140736605391640
print(id(y)) # 140736605391640
print(id(z)) # 140736605391640
print(id(12)) # 140736605391640
khi ta gán x = 12, thì nó sẽ cấp phát 1 ô nhớ trong bộ nhớ (memory) và ô nhớ đó có giá trị bằng 12. Khi các biến y được gán 12, và z gán bằng 12 thì nó ko cấp phát ô nhớ mới mà tận dụng ô nhớ đã được cấp phát
3. Immutable và Mutable
- immutable là những đối tượng mà giá trị của chúng không thể thay đổi sau khi được tạo bao gồm: Integers, Floats, Strings, Booleans, và Tuple
x = 5
print(id(x)) # 140736605391416
x += 1
print(id(x)) # 140736605391448
Khi bạn thay đổi giá trị của một đối tượng immutable, Python tạo một đối tượng mới thay thế đối tượng cũ. Vì vậy địa chỉ của x đã thay đổi
- mutable là những đối tượng mà giá trị của chúng có thể thay đổi sau khi được tạo bao gồm danh list, dictionary, set
my_list = [1, 2, 3]
print(id(my_list)) # 1791652532608
my_list.append(4)
print(id(my_list)) # 1791652532608
Khi bạn thay đổi giá trị của một đối tượng mutable, đối tượng đó thực sự thay đổi mà không tạo ra một đối tượng mới. Vì vậy địa chỉ của my_list không thay đổi
4. garbage collection
Python cũng giống như nhiều ngôn ngữ khác có cơ chế GC tự động xoá các đối tượng không được sử dụng trong bộ nhớ
x = 5
x += 1
Ví dụ ban đầu ta gán x = 5 thì sẽ cấp phát 1 ô nhớ trong bộ nhớ có giá trị bằng 5. Sau đó khi x được gán bằng 6 thì x sẽ được gán đến ô nhớ có giá trị mới. Ô nhớ bằng 5 vẫn tồn tại và gây lãng phí bộ nhớ. Tuy nhiên quá trình GC tự động đã giải quyết việc này tự động xóa các đối tượng không được sử dụng nữa.