Należy używać norm społeczności PEP8 i Python ALL_CAPS_CONSTANTS
. Jest to wspólna wskazówka wizualna, używana od dziesięcioleci w językach C, Java, Perl, PHP, Python, bash i innych językach programowania oraz środowiskach powłoki. Ale w nowoczesnym mowie online WSZYSTKIE KAPTURY SYGNUJĄ SHOUTING . I krzyczenie jest niegrzeczne.
Python jest jednak dość niespójny ALL_CAPS_CONSTANTS
. JavaScript może mieć Math.PI
, ale Python ma math.pi
. Nie ma bardziej rozpoznawalnej lub trwałej stałej niż π. Lub weź pod uwagę sys.version_info
wersję Pythona, na której pracujesz. 100% stałe przez cały okres programu - znacznie bardziej niż PORT
lub MAX_ITERATIONS
lub inne stałe chcesz zdefiniować. A może sys.maxsize
? Maksymalna natywna wartość całkowita Twojej platformy jest stała w czasie nie tylko jednego lub dwóch uruchomień programu, ale także żywotności sprzętu.
Jeśli te stałe - w tym niektórzy lubią Õ i E, które są podstawowymi stałymi wszechświata i nie będzie zmieniać się całą wieczność - jeśli oni mogą być małymi literami, dobrze ... więc można inne stałe. Możesz wybrać.
Pamiętaj, PEP8 to przewodnik po stylu. Wytyczna, a nie prawo. Wytyczne często sprzeczne nawet ze standardową biblioteką Pythona. Powołując się na inną podstawową wytyczną Python, PEP20 (alias „The Zen of Python”):
- Piękne jest lepsze niż brzydkie
- Liczy się czytelność
- Praktyczność bije czystość.
Praktycznie rzecz biorąc, kiedy program YELLY_CONSTANT
i SHOUTY_PARAMETER
zaczyna się sprawdzać, pomaga pamiętać, że stałe wielkich liter na ogół nie są tak naprawdę trwałymi ideałami platońskimi , ale parametrami działania programu. Nie ma nic naprawdę stała się PORT
, SITENAME
czy NUMRUNS
i oni nie muszą być zarządzane jako globalnych programów samodzielny. Na przykład, można je upuścić do słownika jako globalnie dostępny pakiet parametrów programu:
config = {
'port': 80,
'sitename': "Bubba's Blog",
'numruns': 100,
}
W Pythonie dostępna jest również funkcja przekazywania parametrów słów kluczowych, która zmniejsza potrzebę użycia APPARENTLY_ANGRY_GLOBAL_VARIABLES
:
def process_data(sitename, port=80, numruns=100):
...
process_data("Bubba's Blog")
W praktyce wiele z tych wartości zostanie (lub powinno być) odczytanych z plików konfiguracyjnych, zmiennych środowiskowych systemu operacyjnego, argumentów wiersza poleceń lub innych źródeł, aby spełnić funkcję odwrócenia zasady / wzorca sterowania . Ale to większa historia na kolejny dzień.