Pythonissa tunnisteet (muuttujien, funktioiden, luokkien jne. nimet) on määriteltävä sääntöjen mukaisesti. Nimiä, jotka eivät noudata sääntöjä, ei voi käyttää tunnisteina, vaan ne aiheuttavat virheen.
Seuraavat tiedot annetaan tässä.
- Merkit, joita voidaan ja joita ei voida käyttää tunnisteissa (nimissä).
- ASCII-merkit
- Unicode-merkki
- normalisointi (esim. matematiikassa)
- Tarkista, onko merkkijono kelvollinen tunniste:
isidentifier()
- Sanat, joita ei voida käyttää tunnisteina (niminä) (varatut sanat).
- Sanat, joita ei pitäisi käyttää tunnisteina (niminä).
- PEP8:n nimeämiskäytännöt
Seuraava kuvaus on annettu Python 3:ssa, ja se voi olla erilainen Python 2:ssa.
Merkit, joita voidaan ja joita ei voida käyttää tunnisteissa (nimissä).
Ilmaisee merkit, joita voidaan ja joita ei voida käyttää tunnisteina (niminä).
Lisäksi, vaikka kirjoitettavaa on paljon, periaatteessa sinun on muistettava vain seuraavat asiat.
- Käytä isoja ja pieniä kirjaimia, numeroita ja alleviivauksia.
- Ensimmäinen (ensimmäinen) kirjain ei voi olla numero.
ASCII-merkit
Tunnisteina (niminä) käytettäviä ASCII-merkkejä ovat isot ja pienet aakkoset (A~Z,a~z), numerot (0~9) ja alaviivat (_). Aakkoset ovat suur- ja pienaakkoset.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Muita symboleja kuin alaviivoja ei voi käyttää.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
Myöskään numeroita ei voi käyttää alussa (ensimmäinen kirjain).
# 1_abc = 100
# SyntaxError: invalid token
Alleviivauksia voidaan käyttää myös alussa.
_abc = 100
print(_abc)
# 100
Huomaa kuitenkin, että alussa olevalla alleviivauksella voi olla erityinen merkitys.
Unicode-merkki
Python 3:sta lähtien voidaan käyttää myös Unicode-merkkejä.
変数1 = 100
print(変数1)
# 100
Kaikkia Unicode-merkkejä ei voi käyttää, ja Unicode-luokasta riippuen joitakin merkkejä ei voi käyttää. Esimerkiksi välimerkkien ja piktogrammien kaltaisia symboleja ei voi käyttää.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
Katso virallisesta dokumentaatiosta, mitä Unicode-luokkakoodeja voidaan käyttää.
Monissa tapauksissa kiinalaisten merkkien tms. käytöstä ei ole mitään etua yksinkertaisesti siksi, että myös Unicode-merkkejä voidaan käyttää (virheettömästi).
normalisointi (esim. matematiikassa)
Unicode-merkit muunnetaan tulkintaa varten normalisoituun muotoon NFKC. Esimerkiksi täysleveät aakkoset muunnetaan puolileveiksi aakkosiksi (ASCII-merkeiksi).
Huomaa, että vaikka lähdekoodi näyttäisi eri näytön, se katsotaan samaksi objektiksi, ja se ylikirjoitetaan.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Tarkista, onko merkkijono kelvollinen tunniste: isidentifier()
Se, onko merkkijono kelvollinen tunnisteeksi, voidaan tarkistaa merkkijonomenetelmällä isidentifier().
Se palauttaa true, jos se on kelvollinen tunniste, ja false, jos se on virheellinen.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
Sanat, joita ei voida käyttää tunnisteina (niminä) (varatut sanat).
On olemassa joitakin sanoja (varattuja sanoja), joita ei voi käyttää tunnisteina, vaikka ne olisivat kelvollisia merkkijonoja tunnisteina (niminä).
Koska varattu sana on kelvollinen merkkijono tunnisteeksi, isidentifier() palauttaa arvon true, mutta virhe tapahtuu, jos sitä käytetään tunnisteena.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
Saat luettelon varatuista sanoista ja voit tarkistaa, onko merkkijono varattu sana, käyttämällä standardikirjaston avainsanamoduulia.
Sanat, joita ei pitäisi käyttää tunnisteina (niminä).
Esimerkiksi Pythonin sisäänrakennettujen funktioiden nimiä voidaan käyttää tunnisteina, joten voit antaa niille uusia arvoja muuttujina.
Esimerkiksi len() on sisäänrakennettu funktio, joka palauttaa listan elementtien määrän tai merkkijonon merkkien määrän.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Jos annat tälle nimelle len uuden arvon, alkuperäinen funktio korvataan ja siitä tulee käyttökelvoton. Huomaa, että uutta arvoa annettaessa ei tulosteta virhettä tai varoitusta.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Toinen yleinen virhe on käyttää list = [0, 1, 2], mikä tekee list()-funktion käytön mahdottomaksi. Ole varovainen.
PEP8:n nimeämiskäytännöt
PEP on lyhenne sanoista Python Enhancement Proposal, joka on asiakirja, jossa kuvataan uusia ominaisuuksia ja muita Pythonin ominaisuuksia.
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 kahdeksas, ja siinä kuvataan ”Style Guide for Python Code” eli Pythonin tyyliopas.
Myös nimeämiskäytännöt mainitaan.
Katso lisätietoja yllä olevasta linkistä, mutta esimerkiksi seuraavaa kirjoitustapaa suositellaan.
- Moduuli
lowercase_underscore
- Pienet kirjaimet + alleviivaus
- Paketti
lowercase
- kaikki pienet kirjaimet
- Luokat, poikkeukset
CapitalizedWords
(CamelCase
)- Kirjoita sanan ensimmäinen kirjain isolla alkukirjaimella, ei alleviivausta.
- Funktiot, muuttujat ja menetelmät
lowercase_underscore
- Pienet kirjaimet + alleviivaus
- vakio
ALL_CAPS
- Isot kirjaimet + alleviivaus
Jos organisaatiollasi ei kuitenkaan ole omia nimeämiskäytäntöjä, on suositeltavaa noudattaa PEP8:aa.