Computer >> Máy Tính >  >> Lập trình >> Python

Các lỗi lập trình Python thường gặp mà các lập trình viên thường làm là gì?


Dưới đây là một số lỗi / lỗi lập trình python phổ biến nhất mà các lập trình viên mắc phải -

  • Tra cứu tên phạm vi - Python tuân theo các quy tắc xác định phạm vi theo thứ tự LEGB (Cục bộ, Bao gồm, Toàn cầu, Tích hợp). Vì python không có ràng buộc kiểu nghiêm ngặt nên người lập trình có thể liên kết lại một biến phạm vi bên ngoài với một giá trị khác có thể được sử dụng trong phạm vi bên ngoài sau này nhưng hiện được thay thế bằng một số giá trị khác.

  • Không phân biệt giữa is và ==- Toán tử is trong python kiểm tra xem cả hai đối tượng có tham chiếu đến cùng một địa chỉ bộ nhớ hay không. Toán tử ==thực thi hàm __eq__ có thể kiểm tra sự bình đẳng khác nhau cho các lớp khác nhau.

  • Sửa đổi danh sách trong khi lặp lại nó - Nếu bạn xóa các phần tử khỏi danh sách trong khi lặp lại nó, bạn sẽ nhận được một IndexError. Điều này là do danh sách giảm kích thước trong khi bạn không giảm chỉ mục với nó.

  • Ràng buộc đóng cửa:Hãy xem xét đoạn mã sau -

Ví dụ

listLambdas = [lambda x : i + x for i in range(5)]
for lam in listLambdas:
   print(lam(10))

Đầu ra

Điều này sẽ cung cấp kết quả:

14
14
14
14
14

Ngạc nhiên chưa? Điều này là do các thùng liên kết. Tất cả các lambdas trong danh sách này THAM KHẢO đến biến i, tức là khi nó thay đổi, các lambdas này bắt đầu tham chiếu đến giá trị mới.

  • Xung đột tên với tích hợp sẵn - Tại một thời điểm nào đó, bạn phải tạo một biến có tên là sum. Lưu ý rằng bạn đã chỉ định lại một tham chiếu đến hàm sum trong trường hợp này. Điều này có vẻ tầm thường đối với những thứ như thế này nhưng có thể gây ra một số vấn đề nghiêm trọng khi các gói được đặt tên theo cách như vậy. Điều này có thể dẫn đến các gói khác nhập các lớp của bạn thay vì các lớp tiêu chuẩn.

  • Triển khai không trực quan cho toán tử - Python cung cấp một cách để nạp chồng các hàm toán tử cho các lớp. Thường xuyên hơn không, mọi người có xu hướng triển khai các toán tử này theo cách không phổ biến và cuối cùng tạo ra các API phức tạp và không trực quan.