Quy tắc đặt tên biến trong Python
Python Tutorial | by
Việc đặt tên biến không chỉ là một thủ tục kỹ thuật mà còn là một nghệ thuật và là yếu tố then chốt để tạo ra mã nguồn dễ đọc và dễ bảo trì. Python, với triết lý thiết kế chú trọng sự rõ ràng, có những quy tắc cụ thể cho việc đặt tên biến nhằm đảm bảo không chỉ máy tính mà cả con người cũng có thể hiểu được ý nghĩa của dữ liệu đang được xử lý. Bài này sẽ tìm hiểu tại sao việc đặt tên biến đúng cách lại quan trọng đến vậy và giới thiệu những quy tắc bắt buộc cũng như các quy ước tốt nhất để bạn có thể viết code Python một cách chuyên nghiệp và hiệu quả.
Tại sao cần có quy tắc đặt tên biến?
Việc đặt tên biến có vẻ đơn giản, nhưng nó lại cực kỳ quan trọng trong lập trình. Tương tự như việc bạn đặt tên cho các tập tin hay thư mục trên máy tính của mình, các quy tắc đặt tên biến trong Python đảm bảo cả máy tính và con người đều có thể hiểu và làm việc hiệu quả với mã nguồn.
Máy tính hiểu: Giúp Python nhận diện đâu là biến và xử lý đúng
-
Định danh duy nhất: Các quy tắc đặt tên đảm bảo rằng mỗi biến có một định danh duy nhất mà Python có thể nhận ra. Nếu bạn không tuân thủ, Python sẽ không biết bạn đang muốn tham chiếu đến cái gì và sẽ báo lỗi cú pháp (
SyntaxError
) hoặc lỗi tên (NameError
). -
Tránh nhầm lẫn với từ khóa: Python có những từ khóa riêng (như
if
,for
,print
,True
,False
,None
) có ý nghĩa đặc biệt trong ngôn ngữ. Các quy tắc đặt tên ngăn bạn vô tình sử dụng những từ khóa này làm tên biến, điều này sẽ gây ra lỗi và làm hỏng chương trình. -
Phân biệt các thành phần code: Quy tắc giúp Python phân biệt rõ ràng giữa tên biến, tên hàm, tên lớp và các thành phần khác của chương trình, đảm bảo mã được phân tích và thực thi chính xác.
Ví dụ:
# Python hiểu đây là một biến hợp lệ so_luong_san_pham = 100 # Python sẽ báo lỗi vì 'if' là một từ khóa # if = "điều kiện" # Output: SyntaxError: invalid syntax # Python sẽ báo lỗi vì '10sp' không phải là tên biến hợp lệ (bắt đầu bằng số) # 10sp = 50 # Output: SyntaxError: invalid decimal literal
Con người hiểu: Giúp code dễ đọc, dễ hiểu cho bản thân bạn và người khác
-
Tăng khả năng đọc hiểu (Readability): Đây là lợi ích quan trọng nhất. Code không chỉ dành cho máy tính chạy mà còn dành cho con người đọc. Tên biến rõ ràng, dễ hiểu giúp bạn và những người khác (nhóm làm việc, người kế nhiệm) nhanh chóng nắm bắt mục đích của dữ liệu mà biến đó đang lưu trữ.
-
Giảm thiểu sự nhầm lẫn: Tên biến không rõ ràng có thể dẫn đến hiểu lầm về chức năng của chúng, gây ra lỗi logic hoặc tốn thời gian debug.
-
Dễ dàng bảo trì: Khi bạn quay lại một dự án sau nhiều tháng (hoặc nhiều năm), hoặc khi một thành viên khác trong nhóm cần sửa đổi code của bạn, việc có tên biến dễ hiểu sẽ giúp quá trình đó diễn ra nhanh chóng và ít sai sót hơn nhiều.
Ví dụ:
# Code khó hiểu với tên biến không có ý nghĩa x = 10 y = 20 z = x * y print(z) # Bạn sẽ phải tự suy nghĩ: x, y, z là gì? Phép tính này có mục đích gì? # Code dễ hiểu hơn nhiều với tên biến có ý nghĩa so_luong_hang_ban = 10 gia_moi_san_pham = 20 doanh_thu_hom_nay = so_luong_hang_ban * gia_moi_san_pham print(doanh_thu_hom_nay) # Ngay lập tức, bạn hiểu rằng đây là việc tính toán doanh thu.
Chuyên nghiệp: Tạo ra code sạch, có tổ chức, dễ bảo trì
-
Tiêu chuẩn ngành: Hầu hết các ngôn ngữ lập trình và cộng đồng phát triển đều có những quy ước đặt tên biến chuẩn (ví dụ, PEP 8 cho Python). Tuân thủ các quy tắc này thể hiện bạn là một lập trình viên chuyên nghiệp, biết cách viết code có tổ chức.
-
Cộng tác hiệu quả: Trong các dự án lớn, nhiều lập trình viên cùng làm việc trên một codebase. Việc thống nhất quy tắc đặt tên giúp mọi người dễ dàng đọc, hiểu và đóng góp vào mã của nhau mà không gặp trở ngại.
-
Giảm nợ kỹ thuật (Technical Debt): Code không rõ ràng, khó đọc thường dẫn đến "nợ kỹ thuật" – tức là những chi phí phát sinh trong tương lai để sửa chữa hoặc mở rộng code. Đặt tên biến đúng cách là một cách để giảm bớt nợ này.
Tóm lại, quy tắc đặt tên biến không chỉ là những luật lệ khô khan mà là kim chỉ nam giúp bạn viết ra những dòng code không chỉ hoạt động đúng mà còn "thông minh" và "có hồn", phục vụ tốt nhất cho cả máy tính và con người.
Các Quy tắc Bắt buộc khi đặt tên biến trong Python
Để Python có thể hiểu và chạy mã của bạn mà không báo lỗi, bạn phải tuân thủ những quy tắc cơ bản sau đây khi đặt tên biến. Nếu vi phạm, bạn sẽ gặp lỗi SyntaxError
hoặc NameError
.
Bắt đầu bằng chữ cái (a-z, A-Z) hoặc dấu gạch dưới (_
)
Tên biến trong Python không thể bắt đầu bằng một con số. Chúng phải mở đầu bằng một chữ cái (tiếng Anh) hoặc một dấu gạch dưới.
Hợp lệ:
ten_nguoi_dung = "Minh" _temp_value = 25.5
Không hợp lệ:
# Lỗi: Bắt đầu bằng số # 1st_item = "Sản phẩm đầu tiên" # Output: SyntaxError: invalid decimal literal
-
Python sẽ báo lỗi vì
1st_item
bắt đầu bằng chữ số1
.
Chỉ chứa chữ cái, số, dấu gạch dưới
Sau ký tự đầu tiên, phần còn lại của tên biến chỉ được phép bao gồm các chữ cái (a-z, A-Z), các chữ số (0-9) và dấu gạch dưới (_
). Bạn không thể sử dụng các ký tự đặc biệt khác như dấu gạch ngang (-
), dấu cách (
), !
, @
, #
, $
, %
, v.v.
-
Hợp lệ:
so_luong_san_pham_2024 = 150 user_id = "U12345"
Không hợp lệ:
# Lỗi: Chứa dấu gạch ngang # ten-khach-hang = "Tran B" # Output: SyntaxError: cannot assign to expression here. Maybe you meant '==' instead of '='? # Lỗi: Chứa dấu cách # tong gia tri = 500 # Output: SyntaxError: invalid syntax
-
Python không cho phép dấu gạch ngang hoặc dấu cách trong tên biến vì chúng có ý nghĩa khác trong cú pháp.
Phân biệt chữ hoa/thường (Case-sensitive)
Python là một ngôn ngữ phân biệt chữ hoa/thường. Điều này có nghĩa là tuoi
, Tuoi
, và TUOI
được coi là ba biến hoàn toàn khác nhau trong Python.
-
Ví dụ:
tuoi = 30 Tuoi = 25 TUOI = 40 print(f"Giá trị của 'tuoi': {tuoi}") # Output: Giá trị của 'tuoi': 30 print(f"Giá trị của 'Tuoi': {Tuoi}") # Output: Giá trị của 'Tuoi': 25 print(f"Giá trị của 'TUOI': {TUOI}") # Output: Giá trị của 'TUOI': 40
-
Hãy cẩn thận với lỗi chính tả hoặc sự nhầm lẫn về chữ hoa/thường, vì chúng có thể dẫn đến lỗi
NameError
nếu bạn gọi tên biến không đúng với cách đã khai báo.
Không dùng từ khóa của Python
Python có một tập hợp các từ khóa (keywords) đã được định nghĩa sẵn, mỗi từ khóa có một ý nghĩa và chức năng riêng trong ngôn ngữ. Bạn không được phép sử dụng bất kỳ từ khóa nào trong số này làm tên biến, tên hàm, hoặc tên lớp.
-
Một số từ khóa phổ biến:
if
,else
,elif
,for
,while
,def
,class
,import
,return
,True
,False
,None
,and
,or
,not
,in
,is
, v.v. -
Ví dụ:
# Lỗi: 'for' là từ khóa của Python # for = "vòng lặp" # Output: SyntaxError: invalid syntax # Lỗi: 'True' là từ khóa của Python # True = 1 # Output: SyntaxError: cannot assign to True
Cách kiểm tra từ khóa: Nếu bạn không chắc một từ nào đó có phải là từ khóa hay không, bạn có thể kiểm tra nó bằng cách sử dụng module keyword
trong Python:
import keyword # Nhập module 'keyword' # In ra danh sách tất cả các từ khóa trong Python print(keyword.kwlist) # Output sẽ là một danh sách các từ khóa như: # ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', ...] # Kiểm tra một từ cụ thể print(keyword.iskeyword('if')) # Output: True print(keyword.iskeyword('my_var')) # Output: False
Việc tuân thủ nghiêm ngặt các quy tắc bắt buộc này là nền tảng để bạn viết mã Python đúng cú pháp và tránh các lỗi cơ bản.
Các Quy ước & Mẹo Hay để Đặt Tên Hiệu Quả
Ngoài các quy tắc bắt buộc, cộng đồng Python còn có những quy ước (conventions) và mẹo hay giúp bạn viết mã nguồn dễ đọc, dễ bảo trì và chuyên nghiệp hơn. Những quy ước này chủ yếu được tổng hợp trong PEP 8 (Python Enhancement Proposal 8) – bộ hướng dẫn phong cách mã hóa cho Python. Tuân thủ PEP 8 không bắt buộc chương trình phải chạy đúng, nhưng nó giúp code của bạn nhất quán và dễ hiểu hơn.
Đặt tên có ý nghĩa (Meaningful Names)
-
Mục đích: Tên biến nên nói rõ mục đích hoặc dữ liệu mà nó lưu trữ. Điều này là quan trọng nhất để code của bạn dễ hiểu.
-
Nên dùng:
# Nên dùng: Rõ ràng về mục đích ten_nguoi_dung = "Alice" tong_doanh_thu_thang = 15000000 # 15 triệu VNĐ
Nên tránh:
# Nên tránh: Không rõ ràng về mục đích x = "Alice" # x là gì? tdt = 15000000 # tdt là viết tắt của cái gì? data = [1, 2, 3] # data này chứa loại dữ liệu gì?
-
Việc đặt tên không rõ ràng khiến người đọc phải đoán hoặc phải đi tìm xem biến đó được sử dụng ở đâu để hiểu ý nghĩa, gây tốn thời gian.
Dùng chữ thường và dấu gạch dưới (snake_case)
Quy ước chuẩn (PEP 8): Đây là quy ước phổ biến nhất và được khuyến nghị cho tên biến và tên hàm trong Python. Các từ trong tên biến được viết thường và cách nhau bằng dấu gạch dưới.
Ví dụ:
# snake_case - Đề xuất bởi PEP 8 cho biến và hàm ten_san_pham = "Laptop ABC" so_luong_toi_da = 100 thoi_gian_bat_dau = "08:00"
Tránh:
-
PascalCase
(hoặcCamelCase
với chữ cái đầu viết hoa): Thường dùng cho tên lớp (Classes) trong Python (ví dụ:TenSanPham
).
# Không nên dùng cho biến # TenSanPham = "Điện thoại XYZ"
camelCase
(chữ cái đầu viết thường, các từ sau viết hoa): Thường dùng trong JavaScript hoặc Java.
# Không nên dùng cho biến # tenSanPham = "Máy ảnh DEF"
-
Tuân thủ
snake_case
giúp mã Python của bạn trông đồng nhất và dễ đọc hơn đối với các lập trình viên Python khác.
Tên hằng số (Constants)
Định nghĩa: Hằng số là những giá trị không thay đổi trong suốt quá trình chương trình chạy (ví dụ: số Pi, giá trị thuế suất cố định). Mặc dù Python không có cơ chế "hằng số" bắt buộc như một số ngôn ngữ khác, nhưng có một quy ước mạnh mẽ để biểu thị chúng.
Cách dùng: Sử dụng toàn bộ chữ hoa và dấu gạch dưới để phân tách các từ.
Ví dụ:
PI_VALUE = 3.14159 # Giá trị PI MAX_USERS = 1000 # Số người dùng tối đa VAT_RATE = 0.10 # Tỷ lệ thuế VAT 10%
-
Việc này giúp người đọc code ngay lập tức nhận ra rằng đây là một giá trị không nên thay đổi trong chương trình.
Tên biến tạm thời ngắn gọn (Short-lived Variables)
Mục đích: Đối với các biến chỉ được sử dụng trong một phạm vi rất nhỏ (thường là trong vòng lặp) và không mang ý nghĩa lớn ngoài phạm vi đó, bạn có thể sử dụng tên ngắn gọn, đơn giản.
Ví dụ:
-
i
,j
,k
: Thường dùng làm chỉ số trong vòng lặpfor
. -
x
,y
: Dùng trong các ví dụ toán học đơn giản.
# Biến 'i' là biến tạm thời để đếm số lần lặp for i in range(5): print(f"Lần lặp thứ {i + 1}") # Biến 'item' để duyệt qua từng phần tử trong một danh sách my_list = ["apple", "banana", "cherry"] for item in my_list: print(f"Trái cây: {item}")
-
Tránh sử dụng tên ngắn gọn này cho các biến quan trọng, có ý nghĩa lớn trong chương trình.
Tránh các tên gây nhầm lẫn (Confusing Names)
-
Mục đích: Tránh đặt tên biến mà có thể bị nhầm lẫn với các ký tự hoặc số khác, đặc biệt là khi nhìn trên màn hình hoặc in ra.
Tránh các chữ cái:
-
l
(chữ "l" thường): Rất dễ nhầm với số1
(một) hoặc chữI
(i hoa). -
O
(chữ "O" hoa): Dễ nhầm với số0
(không). -
I
(chữ "I" hoa): Dễ nhầm với chữl
thường hoặc số1
.
Ví dụ (Nên tránh):
# Rất dễ nhầm lẫn # l = 10 # Có phải là số 10 hay biến l = 10? # O = 0 # Có phải là số 0 hay biến O = 0?
Thay vào đó, hãy dùng tên biến rõ ràng hơn như list_of_items
, order_count
, index
.
Tuân thủ các quy ước này không chỉ giúp code của bạn hoạt động đúng mà còn làm cho nó trở nên chuyên nghiệp, dễ đọc và dễ bảo trì hơn rất nhiều. Đây là một thói quen tốt mà mọi lập trình viên Python nên xây dựng.
Ví dụ về Tên Biến Hợp lệ và Không hợp lệ trong Python
Để củng cố sự hiểu biết về các quy tắc đặt tên biến, hãy cùng xem các ví dụ cụ thể về tên biến được chấp nhận và những tên sẽ gây ra lỗi trong Python.
Tên biến hợp lệ
Các tên biến này tuân thủ tất cả các quy tắc đã đề ra: bắt đầu bằng chữ cái hoặc dấu gạch dưới, và chỉ chứa chữ cái, số, dấu gạch dưới.
_ten_bi_mat
:
-
Giải thích: Tên biến này bắt đầu bằng dấu gạch dưới. Trong Python, biến bắt đầu bằng một dấu gạch dưới đơn thường được dùng để chỉ rằng đây là một biến "nội bộ" (internal use) hoặc "không công khai" (non-public), một quy ước cho lập trình viên khác hiểu.
_ten_bi_mat = "Mật khẩu Cực Kỳ Bí Mật" print(_ten_bi_mat)
diem_thi_cuoi_ky
:
Giải thích: Tên biến này rõ ràng, có ý nghĩa, và tuân thủ quy ước snake_case
(chữ thường, cách nhau bằng dấu gạch dưới) được khuyến nghị bởi PEP 8.
diem_thi_cuoi_ky = 9.5 print(f"Điểm thi cuối kỳ: {diem_thi_cuoi_ky}")
temp_C_2025
:
Giải thích: Tên biến này bắt đầu bằng chữ cái, chứa chữ cái, số, và dấu gạch dưới. Nó có ý nghĩa rõ ràng (nhiệt độ C vào năm 2025).
temp_C_2025 = 28.3 print(f"Nhiệt độ dự kiến năm 2025: {temp_C_2025}°C")
Tên biến không hợp lệ (và lỗi sẽ gặp)
Các tên biến này vi phạm một hoặc nhiều quy tắc bắt buộc, dẫn đến lỗi khi bạn cố gắng chạy chương trình Python.
1st_item
:
-
Nguyên nhân vi phạm: Bắt đầu bằng một chữ số (
1
). -
Lỗi sẽ gặp:
SyntaxError
(lỗi cú pháp).
# 1st_item = "Sản phẩm đầu tiên" # print(1st_item)
Output (khi chạy code trên):
SyntaxError: invalid decimal literal
Python không cho phép tên biến bắt đầu bằng số để tránh nhầm lẫn với các giá trị số.
my-variable
:
-
Nguyên nhân vi phạm: Chứa dấu gạch ngang (
-
). Dấu gạch ngang được hiểu là phép trừ trong Python, không phải là một phần của tên biến.
Lỗi sẽ gặp: SyntaxError
.
# my-variable = 100 # print(my-variable)
Output (khi chạy code trên):
SyntaxError: cannot assign to expression here. Maybe you meant '==' instead of '='?
Python nghĩ bạn đang cố gắng thực hiện một phép trừ hoặc biểu thức khác.
class
:
-
Nguyên nhân vi phạm: Là một từ khóa của Python.
class
được dùng để định nghĩa một lớp đối tượng. -
Lỗi sẽ gặp:
SyntaxError
.
# class = "Lập trình Python" # print(class)
Output (khi chạy code trên):
SyntaxError: invalid syntax
-
Bạn không thể dùng các từ khóa đã được Python dành riêng cho cấu trúc ngữ pháp của nó.
so luong
:
-
Nguyên nhân vi phạm: Chứa dấu cách (
-
Lỗi sẽ gặp:
SyntaxError
.
# so luong = 50 # print(so luong)
Output (khi chạy code trên):
SyntaxError: invalid syntax
Python không biết so
và luong
là một biến hay hai biến riêng biệt. Để nối các từ trong tên biến, bạn phải dùng dấu gạch dưới (_
).
Kết bài
Việc nắm vững các quy tắc đặt tên biến trong Python không chỉ là một yêu cầu kỹ thuật để mã của bạn chạy đúng, mà còn là một kỹ năng thiết yếu để trở thành một lập trình viên chuyên nghiệp. Từ các quy tắc bắt buộc như không bắt đầu bằng số hay tránh từ khóa, đến các quy ước tốt như sử dụng snake_case
và đặt tên có ý nghĩa, tất cả đều hướng đến mục tiêu cuối cùng: tạo ra mã nguồn dễ đọc, dễ hiểu và dễ bảo trì. Bằng cách tuân thủ những nguyên tắc này, bạn không chỉ giúp bản thân tiết kiệm thời gian và công sức trong tương lai mà còn thúc đẩy sự hợp tác hiệu quả trong bất kỳ dự án lập trình nào.Việc nắm vững các quy tắc đặt tên biến trong Python không chỉ là một yêu cầu kỹ thuật để mã của bạn chạy đúng, mà còn là một kỹ năng thiết yếu để trở thành một lập trình viên chuyên nghiệp. Từ các quy tắc bắt buộc như không bắt đầu bằng số hay tránh từ khóa, đến các quy ước tốt như sử dụng snake_case
và đặt tên có ý nghĩa, tất cả đều hướng đến mục tiêu cuối cùng: tạo ra mã nguồn dễ đọc, dễ hiểu và dễ bảo trì. Bằng cách tuân thủ những nguyên tắc này, bạn không chỉ giúp bản thân tiết kiệm thời gian và công sức trong tương lai mà còn thúc đẩy sự hợp tác hiệu quả trong bất kỳ dự án lập trình nào.