Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
5 lỗi thường gặp trong Python
Trong quá trình lập trình với Python, có những lỗi tuy nhỏ nhưng lại rất dễ bị bỏ qua, gây ra những kết quả không mong muốn và tiêu tốn hàng giờ để gỡ lỗi. Việc nhận biết trước các lỗi phổ biến này sẽ giúp bạn tránh được những sai lầm không đáng có, từ đó làm việc hiệu quả hơn và tiết kiệm thời gian. Dưới đây là 5 lỗi thường gặp mà bạn nên biết để cải thiện chất lượng code của mình.
Ghép chuỗi mà không dùng dấu "+" trong Python
Python cho phép ghép hai chuỗi lại với nhau chỉ bằng cách viết chúng liền nhau, ngay cả khi không dùng toán tử +
. Điều này có thể dẫn đến lỗi khi bạn vô tình quên dấu phẩy trong một danh sách chuỗi.
Ví dụ lỗi:
my_list = ["one", "two" "three", "four", "five"] >>> len(my_list) # Độ dài danh sách 4 >>> my_list # Kết quả ["one", "twothree", "four", "five"]
Giải thích: Python không báo lỗi mà ngầm hiểu "two" "three"
là một chuỗi duy nhất "twothree"
.
Bài viết này được đăng tại [free tuts .net]
Cách sửa:
Luôn kiểm tra kỹ các dấu phẩy khi khai báo danh sách chuỗi.
Biểu thức điều kiện và gán nhiều biến trong Python
Khi kết hợp gán nhiều biến trên một dòng với biểu thức điều kiện (conditional expression), thứ tự đánh giá có thể dẫn đến kết quả không mong muốn.
Ví dụ lỗi:
condition = True x, y = (0, 1) if condition else None, None >>> x, y ((0, 1), None) # Không như mong đợi
Giải thích: Dấu ngoặc đơn thay đổi cách Python phân tích cú pháp, khiến x
nhận giá trị (0, 1)
thay vì 0
.
Cách sửa:
Sử dụng dấu ngoặc đồng bộ hoặc viết rõ ràng hơn với câu lệnh if-else
:
# Sửa bằng dấu ngoặc đồng bộ x, y = (0, 1) if condition else (None, None) # Hoặc dùng if-else if condition: x, y = 0, 1 else: x, y = None, None
Tạo tuple với một phần tử trong Python
Khi tạo tuple chỉ với một phần tử, bạn bắt buộc phải thêm dấu phẩy. Nếu không, Python sẽ hiểu nhầm là một kiểu dữ liệu khác.
Ví dụ lỗi:
t = ("one") # Đây không phải tuple, mà là string for i in t: print(i) # Output: In ra từng ký tự # o # n # e
Giải thích: Nếu không có dấu phẩy, Python hiểu ("one")
là một chuỗi.
Cách sửa:
Thêm dấu phẩy vào khi tạo tuple một phần tử:
t = ("one",)
Chú ý: Khi dùng hàm tuple()
với chuỗi, nó sẽ tạo tuple chứa từng ký tự:
t = tuple("one") # Output: ('o', 'n', 'e')
Câu lệnh assert
với dấu ngoặc trong Python
Câu lệnh assert
kiểm tra một điều kiện, nếu sai sẽ trả về AssertionError
. Nhưng nếu bạn sử dụng dấu ngoặc, Python sẽ không hoạt động như mong đợi.
Ví dụ lỗi:
a = "python" b = "javascript" assert (a == b, "Both languages are different") # Không báo lỗi! Nhưng có cảnh báo: # SyntaxWarning: assertion is always true, perhaps remove parentheses?