Quy ước đặt tên tập tin Python?


137

Tôi đã thấy phần này của PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-names

Tôi không rõ liệu điều này có đề cập đến tên tệp của mô-đun / lớp / gói không.

Nếu tôi có một ví dụ về mỗi tên, thì tên tệp có phải là chữ thường với dấu gạch dưới nếu thích hợp không? Hay cái gì khác?


4
tl; dr: hai lớp FooBarFooBizcả hai có thể đi vào tệp somepkg/foobar.py(vì vậy from somepkg.foobar import FooBar:) nhưng lớp TimerErrorcó thể đi vào except/timer_error.py(do đó from except.timer_error import TimerError), vì việc loại bỏ CamelCaseđôi khi làm cho từ khó đọc hơn, do đó snake_casecó thể được sử dụng cho tên tệp.
michael

Câu trả lời:


156

Trích dẫn https://www.python.org/dev/peps/pep-0008/#package-and-module-names :

Các mô-đun nên có tên ngắn, tất cả chữ thường. Dấu gạch dưới có thể được sử dụng trong tên mô-đun nếu nó cải thiện khả năng đọc. Các gói Python cũng nên có tên viết tắt, tất cả chữ thường, mặc dù việc sử dụng dấu gạch dưới không được khuyến khích.

Đối với các lớp học :

Tên lớp thường sử dụng quy ước Capemme.

Và tên và hàm biến (cục bộ) phải là:

chữ thường, với các từ được phân tách bằng dấu gạch dưới là cần thiết để cải thiện khả năng đọc

Xem câu trả lời này cho sự khác biệt giữa một mô-đun, lớp và gói:

  • Một mô-đun Python chỉ đơn giản là một tệp nguồn Python, có thể hiển thị các lớp, hàm và biến toàn cục.
  • Gói Python chỉ đơn giản là một thư mục của mô-đun Python.

Vì vậy, PEP 8 cho bạn biết rằng :

  • các mô-đun (tên tệp) phải có tên viết tắt, tất cả chữ thường và chúng có thể chứa dấu gạch dưới;
  • các gói (thư mục) nên có tên viết tắt, tất cả chữ thường , tốt nhất là không có dấu gạch dưới;
  • các lớp nên sử dụng quy ước Capemme.

PEP 8 nói rằng tên nên ngắn gọn ; câu trả lời này cung cấp một cái nhìn tổng quan tốt về những gì cần tính đến khi tạo tên biến, cũng áp dụng cho các tên khác (cho các lớp, gói, v.v.):

  • tên biến không phải là mô tả đầy đủ;
  • đưa chi tiết vào bình luận;
  • tên quá cụ thể có thể có nghĩa là mã quá cụ thể;
  • giữ phạm vi ngắn để tra cứu nhanh chóng;
  • dành thời gian suy nghĩ về khả năng đọc.

Để kết thúc, một tổng quan tốt về các quy ước đặt tên được đưa ra trong Hướng dẫn về Phong cách Python của Google .


5
Và tôi sẽ lúng túng yêu cầu xác nhận sự hiểu biết của mình, các mô-đun chứa các lớp - vì vậy bạn sẽ sử dụng các lớp trong các mô-đun và có thể có nhiều lớp trong một mô-đun không?
bóng tối

6
Có, bạn có thể có 0, 1 hoặc nhiều lớp trong một mô-đun.
kích hoạt

1
Tôi rất vui vì đã tìm thấy điều này kịp thời trước khi dự án của tôi vượt quá tầm tay, vì tất cả các gói của tôi đều tuân theo quy ước Capsemme giống như các lớp học của tôi.
Bas Jansen

1
@pypmannetjies đây thực sự là một câu hỏi khác, nhưng tôi muốn nói rằng bạn nên thích những cái tên dài dễ hiểu hơn những cái tên ngắn không thể hiểu được.
agold

1
Đối với tên gói, nó nói "việc sử dụng dấu gạch dưới không được khuyến khích", không bị cấm. Trong triết lý python, bạn nên tuân theo quy tắc, "mặc dù tính thực tế đánh bại sự thuần khiết". Tất nhiên, tốt nhất là để tìm một cách để làm theo các quy tắc được thực tế (có thể thực hiện một số gói để tách tên, some> long> namethay vì somelongname?)
Juh_

0

Đây là một liên kết cho các loại quy ước tên Python khác nhau.

Hướng dẫn về phong cách cho Python dựa trên các khuyến nghị quy ước đặt tên của Guido.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.