U Pythonu se identifikatori (nazivi varijabli, funkcija, klasa itd.) moraju definirati prema pravilima. Imena koja ne slijede pravila ne mogu se koristiti kao identifikatori i rezultirat će pogreškom.
Ovdje su navedene sljedeće informacije.
- Znakovi koji se mogu i ne mogu koristiti u identifikatorima (imenima)
- ASCII znakovi
- Unicode znak
- normalizacija (npr. u matematici)
- Provjerite je li niz valjani identifikator:
isidentifier()
- Riječi koje se ne mogu koristiti kao identifikatori (imena) (rezervirane riječi)
- Riječi koje se ne smiju koristiti kao identifikatori (imena)
- Konvencije imenovanja za PEP8
Sljedeći opis dat je u Pythonu 3, a može biti drugačiji u Pythonu 2.
Znakovi koji se mogu i ne mogu koristiti u identifikatorima (imenima)
Označava znakove koji se mogu i ne mogu koristiti kao identifikatori (imena).
Osim toga, iako postoji mnogo stvari o kojima treba pisati, u osnovi sve što trebate zapamtiti je sljedeće.
- Koristite velika i mala slova, brojeve i podvlake.
- 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 podvlake (_). Abeceda je osjetljiva na velika i mala slova.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Ne mogu se koristiti drugi simboli osim podvlaka.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
Također, brojevi se ne mogu koristiti na početku (prvo slovo).
# 1_abc = 100
# SyntaxError: invalid token
Podvlake se također 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 znak
Od Pythona 3 mogu se koristiti i Unicode znakovi.
変数1 = 100
print(変数1)
# 100
Ne mogu se koristiti svi Unicode znakovi, a ovisno o Unicode kategoriji, neki se ne mogu koristiti. Na primjer, ne mogu se koristiti simboli kao što su interpunkcijski znakovi i piktogrami.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
Pogledajte službenu dokumentaciju za Unicode kodove kategorija koji se mogu koristiti.
U mnogim slučajevima nema prednosti u korištenju kineskih znakova itd., jednostavno zato što se mogu koristiti i Unicode znakovi (bez greške).
normalizacija (npr. u matematici)
Unicode znakovi se pretvaraju u normalizirani oblik NFKC za interpretaciju. Na primjer, abecede pune širine se pretvaraju u abecede polovične širine (ASCII znakovi).
Imajte na umu da čak i ako izvorni kod prikazuje drugačiji prikaz, smatra se istim objektom i bit će prebrisan.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Provjerite je li niz valjani identifikator: isidentifier()
Je li niz valjan kao identifikator ili ne može se provjeriti metodom stringa isidentifier().
Vraća true ako je valjan kao identifikator i false ako je nevažeći.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
Riječi koje se ne mogu koristiti kao identifikatori (imena) (rezervirane riječi)
Postoje neke riječi (rezervirane riječi) koje se ne mogu koristiti kao identifikatori čak i ako su valjani nizovi kao identifikatori (imena).
Budući da je rezervirana riječ valjani niz kao identifikator, isidentifier() vraća true, ali dolazi do pogreške ako se koristi kao identifikator.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
Da biste dobili popis rezerviranih riječi i provjerili je li niz rezervirana riječ, koristite modul ključnih riječi standardne biblioteke.
Riječi koje se ne smiju koristiti kao identifikatori (imena)
Nazivi ugrađenih funkcija Pythona, na primjer, mogu se koristiti kao identifikatori, tako da im možete dodijeliti nove vrijednosti kao varijable.
Na primjer, len() je ugrađena funkcija koja vraća broj elemenata na popisu ili broj znakova u nizu.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Ako ovom nazivu len dodijelite novu vrijednost, izvorna funkcija će biti prepisana i postati neupotrebljiva. Imajte na umu da se prilikom dodjele nove vrijednosti neće ispisati pogreška ili upozorenje.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Druga uobičajena pogreška je korištenje liste = [0, 1, 2], što onemogućuje korištenje liste(). Budi oprezan.
Konvencije imenovanja za PEP8
PEP je skraćenica za Python Enhancement Proposal, dokument koji opisuje nove značajke i druge aspekte Pythona.
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, a opisuje “Style Guide for Python Code”, odnosno stilski vodič za Python.
Spominju se i konvencije imenovanja.
Za više pojedinosti pogledajte gornju poveznicu, ali na primjer, preporučuje se sljedeći stil pisanja.
- Modul
lowercase_underscore
- Mala slova + donja crta
- Paket
lowercase
- sva mala slova
- Klase, iznimke
CapitalizedWords
(CamelCase
)- Napišite veliko početno slovo riječi, bez podvlake
- Funkcije, varijable i metode
lowercase_underscore
- Mala slova + donja crta
- konstantno
ALL_CAPS
- Velika slova + donja crta
Međutim, ako vaša organizacija nema vlastite konvencije imenovanja, preporuča se slijediti PEP8.