Biến trong Python là gì? Cách khai báo và sử dụng
Khi mới học Python, thứ đầu tiên bạn sẽ chạm vào chính là biến. Không có biến, bạn không thể lưu trữ dữ liệu — mà không có dữ liệu, chương trình sẽ không làm được gì cả. Nhưng đừng lo, biến trong Python cực kỳ dễ hiểu và dễ dùng.
Biến (Variable) là gì?
Hãy tưởng tượng biến như một hộp có nhãn — bạn đặt tên cho hộp, rồi bỏ dữ liệu vào trong. Ví dụ:
- Ví = nơi đựng tiền
- Tủ lạnh = nơi đựng thức ăn
- Biến
ten= nơi đựng tên người
Khi cần dùng lại dữ liệu đó ở bất kỳ đâu trong chương trình, bạn chỉ cần gọi tên biến — Python sẽ tự lấy giá trị ra cho bạn.
Cách khai báo biến trong Python
Python rất đơn giản — không cần khai báo kiểu dữ liệu như Java hay C:
# Khai báo biến — cú pháp: tên_biến = giá_trị
ten = "Nguyễn Văn Minh" # str
tuoi = 22 # int
diem = 8.5 # float
la_sinh_vien = True # bool
print(ten) # Nguyễn Văn Minh
print(tuoi) # 22
Quy tắc đặt tên biến
- ✅ Chỉ dùng chữ cái, số, dấu gạch dưới
- ✅ Không bắt đầu bằng số
- ✅ Phân biệt chữ hoa/thường (
tenvàTenlà 2 biến khác nhau) - ❌ Không dùng từ khóa Python (if, for, while, def...)
- ❌ Không có dấu cách, dấu gạch ngang
Chuẩn PEP 8 (Python style guide)
# ✅ Tốt — snake_case
ho_ten = "Trần Thị Lan"
diem_trung_binh = 8.5
so_lan_thu = 3
# ❌ Không khuyến nghị
HoTen = "..." # PascalCase (dành cho class)
soLanThu = 3 # camelCase (dành cho JavaScript)
Các kiểu dữ liệu của biến Python
# int — Số nguyên
tuoi = 22
nam_sinh = 2004
so_am = -5
# float — Số thực
diem = 8.5
chieu_cao = 1.72
nhiet_do = 36.6
# str — Chuỗi ký tự
ten = "Nguyễn Văn Minh"
truong = 'Đại học Bách Khoa'
thong_diep = f"Tôi là {ten}, {tuoi} tuổi" # f-string
# bool — Kiểu logic
la_sinh_vien = True
da_ket_hon = False
# None — Không có giá trị
ket_qua = None
Kiểm tra kiểu dữ liệu với type()
x = 42
print(type(x)) # <class 'int'>
y = "Xin chào"
print(type(y)) # <class 'str'>
z = 3.14
print(type(z)) # <class 'float'>
a = True
print(type(a)) # <class 'bool'>
Chuyển đổi kiểu dữ liệu
Đây là thao tác bạn sẽ gặp thường xuyên — đặc biệt khi nhận dữ liệu từ người dùng qua input(), vì input() luôn trả về chuỗi.
# str → int
tuoi_str = "22"
tuoi_int = int(tuoi_str) # 22
# int → float
so_int = 10
so_float = float(so_int) # 10.0
# Bất kỳ → str
diem = 8.5
diem_str = str(diem) # "8.5"
# Lưu ý: Không phải lúc nào cũng chuyển được
int("xin chao") # → ValueError!
Các phép toán với biến
a = 10
b = 3
print(a + b) # 13 (cộng)
print(a - b) # 7 (trừ)
print(a * b) # 30 (nhân)
print(a / b) # 3.333... (chia thực)
print(a // b) # 3 (chia lấy phần nguyên)
print(a % b) # 1 (chia lấy dư)
print(a ** b) # 1000 (lũy thừa)
# Nối chuỗi
ho = "Nguyễn"
ten = "Minh"
ho_ten = ho + " Văn " + ten
print(f"Họ tên: {ho_ten}") # Họ tên: Nguyễn Văn Minh
Biến toàn cục và biến cục bộ
diem_toi_da = 10.0 # Biến toàn cục (global)
def kiem_tra_diem(diem):
bien_local = "tạm thời" # Biến cục bộ (local)
print(f"Điểm tối đa: {diem_toi_da}") # Có thể đọc global
def cap_nhat_max(diem_moi):
global diem_toi_da # Cần khai báo global để sửa
diem_toi_da = diem_moi
cap_nhat_max(9.5)
print(diem_toi_da) # 9.5
Lỗi thường gặp với biến
# NameError — Dùng biến chưa khai báo
print(ten) # NameError: name 'ten' is not defined
ten = "Minh"
print(ten) # OK: Minh
# TypeError — Sai kiểu dữ liệu
tuoi = "22" # str!
ket_qua = tuoi + 5 # TypeError!
ket_qua = int(tuoi) + 5 # OK: 27
Bài tập thực hành
# Bài 1: Chương trình tự giới thiệu
ten = input("Tên của bạn: ")
tuoi = int(input("Tuổi của bạn: "))
truong = input("Trường đang học: ")
print(f"\n=== Thông tin của bạn ===")
print(f"Tên: {ten}")
print(f"Tuổi: {tuoi}")
print(f"Trường: {truong}")
print(f"Năm sinh (ước tính): {2026 - tuoi}")
# Bài 2: Tính diện tích hình chữ nhật
chieu_dai = float(input("Chiều dài (m): "))
chieu_rong = float(input("Chiều rộng (m): "))
dien_tich = chieu_dai * chieu_rong
chu_vi = 2 * (chieu_dai + chieu_rong)
print(f"Diện tích: {dien_tich:.2f} m²")
print(f"Chu vi: {chu_vi:.2f} m")
Kết luận
Biến là viên gạch đầu tiên trong Python. Nắm chắc quy tắc đặt tên theo snake_case, hiểu 5 kiểu dữ liệu cơ bản và biết khi nào cần chuyển đổi kiểu — vậy là đủ để tiếp tục sang vòng lặp và hàm mà không bị vấp.