Jestem programistą Python, który przede wszystkim korzysta z pylint do kodowania kodu źródłowego. Jestem w stanie wyeliminować wszystkie ostrzeżenia oprócz jednego: Niepoprawna nazwa stałej. Zmienia nazwę na wszystkie wielkie litery to naprawia, ale czy naprawdę powinienem to zrobić? Jeśli to zrobię, okaże się, że mój kod wygląda brzydko, ponieważ większość zmiennych jest stała (zgodnie z pylintem).
python
coding-style
coding-standards
conventions
Abhishek Kumar
źródło
źródło
NOTES_DIRECTORY = argv[1] chdir(NOTES_DIRECTORY) FILES = glob('*.txt') RAND_FILE = choice(FILES) with open(RAND_FILE) as notes_file: POINTS = notes_file.readlines() RAND_POINT = choice(POINTS)
Odpowiedzi:
Prawdopodobnie piszesz taki kod:
Powinieneś przenieść ten kod do funkcji:
Pylint zakłada, że kod, który faktycznie wykonuje pracę, będzie znajdować się w funkcji. Ponieważ masz ten kod na najwyższym poziomie kodu, a nie wewnątrz funkcji, jest to mylące.
Ogólnie rzecz biorąc, lepszym stylem jest wykonywanie pracy wewnątrz funkcji zamiast na najwyższym poziomie. To pozwala lepiej zorganizować to, co robisz i ułatwia ponowne użycie. Naprawdę powinieneś mieć kod wykonujący algorytm poza funkcją w szybkim i brudnym skrypcie.
źródło
Tak. Zgodnie z zasadą PEP8 dotyczącą stałych :
Długa wersja:
W społeczności Python (podobnie jak w wielu innych społecznościach) istnieją konwencje dotyczące pisania kodu. Różni się to od działającego kodu : nawet jeśli zapisujesz stałe małymi literami, kod nadal działa.
Ale istnieje konsensus społeczny (jak udokumentowano w PEP8), który jest „egzekwowany” za pomocą narzędzi takich jak pylint . Jeśli programujesz dla własnego szczęścia, możesz zaniedbać wskazówki, które daje pylint. Jeśli chcesz otwartej wymiany ze społecznością, czyli »ktoś poza mną, powinien użyć mojego kodu«, powinieneś przygotować swój kod zgodnie z PEP8.
źródło
pylint
że się pomylisz. Python nie zapewnia sposobu odróżniania stałej od zmiennej, poza tym, że oczekuje się, że stała będzie zawsze miała tę samą wartość.pylint
zakłada, że wszystko, co jest ustawione tylko raz i nigdy się nie zmienia, jest stałą, ale jeśli nie ma być stałą, może to być tylko artefakt implementacji. W szczególności kod podany w komentarzu do pytania ma wartości, które będą się różnić przy każdym uruchomieniu, dlatego nie należy ich uważać za stałe, nawet jeśli pylint tak uważa.const
słowo kluczowe. Chociaż wartość początkowa jest inna, niż możePI
.pylint
zakłada się ten drugi, nawet jeśli pierwszy ma miejsce.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 mamath.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
lubMAX_ITERATIONS
lub inne stałe chcesz zdefiniować. A możesys.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”):
Praktycznie rzecz biorąc, kiedy program
YELLY_CONSTANT
iSHOUTY_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
czyNUMRUNS
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:W Pythonie dostępna jest również funkcja przekazywania parametrów słów kluczowych, która zmniejsza potrzebę użycia
APPARENTLY_ANGRY_GLOBAL_VARIABLES
: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ń.
źródło
Tak, jest dość powszechny w większości języków programowania (przynajmniej tych, których używam).
Możesz skorzystać z tego linku Google, aby podzielić się wspólnym stylem między twórcami tego samego zespołu.
Wskazane jest użycie
źródło