Pythonis tuleb identifikaatorid (muutujate, funktsioonide, klasside jne nimed) defineerida vastavalt reeglitele. Reeglitele mittevastavaid nimesid ei saa kasutada identifikaatoritena ja need annavad vea.
Siin on esitatud järgmine teave.
- Tähemärgid, mida saab ja ei saa kasutada identifikaatorites (nimedes).
- ASCII tähemärgid
- Unicode'i märk
- normaliseerimine (nt matemaatikas)
- Kontrollida, kas string on kehtiv identifikaator:
isidentifier()
- sõnad, mida ei saa kasutada identifikaatoritena (nimed) (reserveeritud sõnad)
- Sõnad, mida ei tohiks kasutada identifikaatoritena (nimedena).
- PEP8 nimetuskonventsioonid
Järgnev kirjeldus on esitatud Python 3 versioonis ja võib Python 2 versioonis erineda.
Tähemärgid, mida saab ja ei saa kasutada identifikaatorites (nimedes).
Näitab märke, mida saab ja ei saa kasutada identifikaatoritena (nimedena).
Lisaks, kuigi on palju asju, millest kirjutada, on põhimõtteliselt kõik, mida peate meeles pidama, järgmine.
- Kasutage suuri ja väikseid tähti, numbreid ja alatähti.
- Esimene (esimene) täht ei saa olla number.
ASCII tähemärgid
ASCII-märgid, mida saab kasutada identifikaatoritena (nimedena), on suured ja väikesed tähestikud (A~Z,a~z), numbrid (0~9) ja allakriipsud (_). Tähestik on suur- ja väiketähestiku suhtes tundlik.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Muid sümboleid kui allajooned ei saa kasutada.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
Samuti ei saa kasutada numbreid alguses (esimene täht).
# 1_abc = 100
# SyntaxError: invalid token
Alamjooni võib kasutada ka alguses.
_abc = 100
print(_abc)
# 100
Pange aga tähele, et alajaotusel alguses võib olla eriline tähendus.
Unicode'i märk
Alates Python 3-st saab kasutada ka Unicode-märke.
変数1 = 100
print(変数1)
# 100
Kõiki Unicode-märke ei saa kasutada ja sõltuvalt Unicode-kategooriast ei saa mõningaid kasutada. Näiteks ei saa kasutada selliseid sümboleid nagu kirjavahemärgid ja piktogrammid.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
Kasutatavate Unicode-kategooriakoodide kohta vt ametlikku dokumentatsiooni.
Paljudel juhtudel ei ole hiina tähemärkide vms. kasutamisel mingit eelist, sest ka Unicode'i tähemärke saab kasutada (ilma veata).
normaliseerimine (nt matemaatikas)
Unicode'i märgid teisendatakse tõlgendamiseks normaliseeritud vormi NFKC. Näiteks täispikkused tähestikud teisendatakse poollaiulduvateks tähestikeks (ASCII-märkideks).
Pange tähele, et isegi kui lähtekood näitab teistsugust kuvamist, loetakse seda samaks objektiks ja see kirjutatakse üle.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Kontrollida, kas string on kehtiv identifikaator: isidentifier()
Seda, kas string on identifikaatorina kehtiv või mitte, saab kontrollida stringi meetodiga isidentifier().
See tagastab true, kui see on identifikaatorina kehtiv, ja false, kui see on kehtetu.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
sõnad, mida ei saa kasutada identifikaatoritena (nimed) (reserveeritud sõnad)
On mõned sõnad (reserveeritud sõnad), mida ei saa kasutada identifikaatoritena, isegi kui need on identifikaatoritena (nimedena) kehtivad stringid.
Kuna reserveeritud sõna on identifikaatorina kehtiv string, siis isidentifier() tagastab true, kuid selle kasutamisel identifikaatorina tekib viga.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
Reserveeritud sõnade loendi saamiseks ja selle kontrollimiseks, kas string on reserveeritud sõna, kasutage standardraamatukogu võtmesõnamoodulit.
Sõnad, mida ei tohiks kasutada identifikaatoritena (nimedena).
Näiteks Pythoni sisseehitatud funktsioonide nimesid saab kasutada identifikaatoritena, nii et neile saab muutujatena määrata uusi väärtusi.
Näiteks len() on sisseehitatud funktsioon, mis tagastab nimekirja elementide arvu või stringi tähemärkide arvu.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Kui määrate sellele nimele len uue väärtuse, kirjutatakse algne funktsioon üle ja muutub kasutuskõlbmatuks. Pange tähele, et uue väärtuse määramisel ei väljastata viga ega hoiatust.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Teine levinud viga on kasutada list = [0, 1, 2], mis muudab list() kasutamise võimatuks. Olge ettevaatlik.
PEP8 nimetuskonventsioonid
PEP tähendab Pythoni täiustamisettepanekut, mis on dokument, milles kirjeldatakse Pythoni uusi funktsioone ja muid aspekte.
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 on kaheksas ja selles kirjeldatakse “Pythoni koodi stiilijuhendit”, st Pythoni stiilijuhendit.
Mainitakse ka nimetamiskonventsioone.
Lisateavet leiate ülaltoodud lingilt, kuid näiteks on soovitatav kasutada järgmist kirjutamisviisi.
- Moodul
lowercase_underscore
- Väikesed tähed + alajaotus
- Pakett
lowercase
- kõik väiketähed
- Klassid, erandid
CapitalizedWords
(CamelCase
)- Sõna esimene täht tuleb kirjutada suurtähtedega, alajaotust ei tohi kasutada.
- Funktsioonid, muutujad ja meetodid
lowercase_underscore
- Väikesed tähed + alajaotus
- pidev
ALL_CAPS
- Suurtähed + alajaotus
Kui teie organisatsioonil ei ole siiski oma nimetamiskonventsioone, on soovitatav järgida PEP8.