U Python-u, identifikatori (imena promenljivih, funkcija, klasa, itd.) moraju biti definisani u skladu sa pravilima. Imena koja ne poštuju pravila ne mogu se koristiti kao identifikatori i rezultiraće greškom.
Ovde su navedene sledeće informacije.
- Znakovi koji se mogu i ne mogu koristiti u identifikatorima (imena)
- ASCII znakovi
- Unicode karakter
- normalizacija (npr. u matematici)
- Proverite da li je string ispravan identifikator:
isidentifier()
- Reči koje se ne mogu koristiti kao identifikatori (imena) (rezervisane reči)
- Reči koje ne treba koristiti kao identifikatore (imena)
- Konvencije imenovanja za PEP8
Sledeći opis je dat u Python-u 3 i može biti drugačiji u Python-u 2.
Znakovi koji se mogu i ne mogu koristiti u identifikatorima (imena)
Označava znakove koji se mogu i ne mogu koristiti kao identifikatori (imena).
Pored toga, iako postoji mnogo stvari o kojima treba pisati, u suštini sve što treba da zapamtite je sledeće.
- Koristite velika i mala slova, brojeve i donje crte.
- Prvo (prvo) slovo ne može biti broj.
ASCII znakovi
ASCII znakovi koji se mogu koristiti kao identifikatori (imena) su velika i mala slova (A~Z,a~z), brojevi (0~9) i donje crte (_). Abeceda je osetljiva na velika i mala slova.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Ne mogu se koristiti drugi simboli osim donjih crta.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
Takođe, brojevi se ne mogu koristiti na početku (prvo slovo).
# 1_abc = 100
# SyntaxError: invalid token
Donje crte se takođe mogu koristiti na početku.
_abc = 100
print(_abc)
# 100
Međutim, imajte na umu da donja crta na početku može imati posebno značenje.
Unicode karakter
Od Python-a 3, mogu se koristiti i Unicode znakovi.
変数1 = 100
print(変数1)
# 100
Ne mogu se koristiti svi Unicode znakovi, a u zavisnosti od Unicode kategorije, neki se ne mogu koristiti. Na primer, ne mogu se koristiti simboli kao što su znaci interpunkcije i piktogrami.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
Pogledajte zvaničnu dokumentaciju za kodove kategorija Unicode koji se mogu koristiti.
U mnogim slučajevima, nema prednosti korišćenja kineskih znakova, itd., jednostavno zato što se mogu koristiti i Unicode znakovi (bez greške).
normalizacija (npr. u matematici)
Unicode znakovi se konvertuju u normalizovani oblik NFKC radi interpretacije. Na primer, abecede pune širine se konvertuju u abecede polovine širine (ASCII znakovi).
Imajte na umu da čak i ako izvorni kod prikazuje drugačiji prikaz, on se smatra istim objektom i biće zamenjen.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Proverite da li je string ispravan identifikator: isidentifier()
Da li je string validan kao identifikator ili ne može se proveriti pomoću metode stringa isidentifier().
Vraća tačno ako je validan kao identifikator i netačno ako je nevažeći.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
Reči koje se ne mogu koristiti kao identifikatori (imena) (rezervisane reči)
Postoje neke reči (rezervisane reči) koje se ne mogu koristiti kao identifikatori čak i ako su validni nizovi kao identifikatori (imena).
Pošto je rezervisana reč ispravan string kao identifikator, isidentifier() vraća true, ali dolazi do greške ako se koristi kao identifikator.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
Da biste dobili listu rezervisanih reči i proverili da li je string rezervisana reč, koristite modul ključnih reči standardne biblioteke.
Reči koje ne treba koristiti kao identifikatore (imena)
Nazivi ugrađenih funkcija Python-a, na primer, mogu se koristiti kao identifikatori, tako da možete da im dodelite nove vrednosti kao promenljive.
Na primer, len() je ugrađena funkcija koja vraća broj elemenata na listi ili broj znakova u nizu.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Ako dodelite novu vrednost ovom imenu len, originalna funkcija će biti prepisana i postati neupotrebljiva. Imajte na umu da se prilikom dodeljivanja nove vrednosti neće štampati greška ili upozorenje.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Još jedna uobičajena greška je korišćenje liste = [0, 1, 2], što onemogućava korišćenje liste(). Будите опрезни.
Konvencije imenovanja za PEP8
PEP je skraćenica od Python Enhancement Proposal, dokument koji opisuje nove karakteristike i druge aspekte Python-a.
PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment.
PEP 1 — PEP Purpose and Guidelines | Python.org
PEP8 je osmi, i opisuje „Stilski vodič za Python kod“, odnosno stilski vodič za Python.
Pominju se i konvencije o imenovanju.
Pogledajte vezu iznad za više detalja, ali na primer, preporučuje se sledeći stil pisanja.
- Modul
lowercase_underscore
- Mala slova + donja crta
- Paket
lowercase
- sva mala slova
- Klase, izuzeci
CapitalizedWords
(CamelCase
)- Napišite veliko početno slovo reči, bez donje crte
- Funkcije, promenljive i metode
lowercase_underscore
- Mala slova + donja crta
- konstantan
ALL_CAPS
- Velika slova + donja crta
Međutim, ako vaša organizacija nema sopstvene konvencije o imenovanju, preporučuje se da pratite PEP8.