Chuẩn mực cộng đồng PEP8 và Python là sử dụng ALL_CAPS_CONSTANTS
. Đây là một đầu mối trực quan phổ biến, được sử dụng trong nhiều thập kỷ trong C, Java, Perl, PHP, Python, bash và các ngôn ngữ lập trình và môi trường shell khác. Nhưng theo cách nói trực tuyến hiện đại, TẤT CẢ CÁC TÍN HIỆU CAPS . Và la hét là thô lỗ.
Python là, tuy nhiên, không nhất quán về ALL_CAPS_CONSTANTS
. JavaScript có thể có Math.PI
, nhưng Python thì có math.pi
. Không có hằng số dễ nhận biết hoặc lâu dài hơn π. Hoặc xem xét sys.version_info
, phiên bản Python bạn đang chạy. Hằng số 100% trong suốt vòng đời của chương trình của bạn - nhiều hơn PORT
hoặc so với MAX_ITERATIONS
các hằng số khác mà bạn xác định. Hay làm thế nào về sys.maxsize
? Giá trị nguyên gốc tối đa của nền tảng của bạn là không đổi trong không chỉ một hoặc hai chương trình chạy mà còn cả tuổi thọ của phần cứng của bạn.
Nếu các hằng số này - bao gồm một số như π và e là hằng số cơ bản của vũ trụ, và sẽ không thay đổi trong suốt thời gian vĩnh cửu - nếu chúng có thể là chữ thường, thì ... các hằng số khác cũng vậy. Bạn có thể chọn.
Hãy nhớ rằng, PEP8 là một hướng dẫn phong cách. Một hướng dẫn, không phải là một luật. Một hướng dẫn thường được chống lại ngay cả bởi thư viện tiêu chuẩn của Python. Và trích dẫn một hướng dẫn cốt lõi khác về Python, PEP20 (còn gọi là "Zen của Python"):
- Đẹp thì tốt hơn xấu.
- Tính dễ đọc
- Thực tiễn đánh bại sự tinh khiết.
Trên một lưu ý thực tế, khi một chương trình YELLY_CONSTANT
và SHOUTY_PARAMETER
bắt đầu ghi nhớ, sẽ giúp nhớ rằng các hằng số mũ thường không thực sự là lý tưởng Platonic bền vững , mà là các tham số của chương trình chạy. Không có gì thực sự liên tục về PORT
, SITENAME
hoặc NUMRUNS
, và họ không phải được quản lý như các chương trình toàn cầu độc lập. Ví dụ, chúng có thể được thả vào từ điển dưới dạng gói tham số chương trình có thể truy cập toàn cầu:
config = {
'port': 80,
'sitename': "Bubba's Blog",
'numruns': 100,
}
Python cũng có một cơ sở tham số từ khóa tốt giúp giảm nhu cầu sử dụng APPARENTLY_ANGRY_GLOBAL_VARIABLES
:
def process_data(sitename, port=80, numruns=100):
...
process_data("Bubba's Blog")
Trong thực tế, nhiều giá trị trong số này sẽ được (hoặc nên) được đọc từ các tệp cấu hình, biến môi trường hệ điều hành, đối số dòng lệnh hoặc các nguồn khác để đáp ứng nghịch đảo của nguyên tắc / mẫu điều khiển . Nhưng đó là một câu chuyện lớn hơn cho một ngày khác.