Norma komunitas PEP8 dan Python harus digunakan ALL_CAPS_CONSTANTS
. Ini adalah petunjuk visual yang umum, yang digunakan selama beberapa dekade di C, Java, Perl, PHP, Python, bash, dan bahasa pemrograman lainnya serta lingkungan shell. Tetapi dalam bahasa online modern, SEMUA CAPS TANDA-TANDA TANGAN BERANDA . Dan berteriak itu kasar.
Namun, Python agak tidak konsisten ALL_CAPS_CONSTANTS
. JavaScript mungkin ada Math.PI
, tetapi Python memilikinya math.pi
. Tidak ada yang lebih dikenal atau konstan konstan daripada π. Atau pertimbangkan sys.version_info
, versi Python yang Anda jalankan. 100% konstan selama umur program Anda - lebih dari PORT
atau MAX_ITERATIONS
konstanta lain yang akan Anda tetapkan. Atau bagaimana sys.maxsize
? Nilai integer asli maksimum platform Anda adalah konstan, bukan hanya pada satu atau dua program yang berjalan, tetapi juga masa pakai perangkat keras Anda.
Jika konstanta-konstanta ini - termasuk beberapa seperti π dan e yang merupakan konstanta fundamental alam semesta, dan tidak akan bervariasi di sepanjang kekekalan - jika mereka dapat lebih rendah, yah ... demikian juga konstanta lainnya. Kamu bisa memilih.
Ingat, PEP8 adalah panduan gaya. Pedoman, bukan hukum. Sebuah pedoman sering dilanggar bahkan oleh perpustakaan standar Python. Dan mengutip pedoman inti Python lain, PEP20 (alias "The Zen of Python"):
- Cantik lebih baik daripada jelek
- Jumlah keterbacaan diperhitungkan
- Kepraktisan mengalahkan kemurnian.
Pada catatan praktis, ketika sebuah program YELLY_CONSTANT
dan SHOUTY_PARAMETER
mulai untuk parut, itu membantu untuk mengingat bahwa konstanta semua-caps umumnya tidak benar-benar abadi cita-cita Platonis , tetapi parameter dari program yang dijalankan. Tidak ada yang benar-benar konstan tentang PORT
,, SITENAME
atau NUMRUNS
, dan mereka tidak harus dikelola sebagai global program mandiri. Misalnya, mereka dapat dimasukkan ke dalam kamus sebagai kumpulan parameter program yang dapat diakses secara global:
config = {
'port': 80,
'sitename': "Bubba's Blog",
'numruns': 100,
}
Python juga memiliki fasilitas melewati parameter kata kunci yang bagus yang mengurangi kebutuhan untuk menggunakan APPARENTLY_ANGRY_GLOBAL_VARIABLES
:
def process_data(sitename, port=80, numruns=100):
...
process_data("Bubba's Blog")
Dalam praktiknya, banyak dari nilai-nilai ini akan (atau seharusnya) dibaca dari file config, variabel lingkungan OS, argumen baris perintah, atau sumber lain untuk memenuhi inversi prinsip / pola kontrol . Tapi itu cerita yang lebih besar untuk hari lain.