Tunnisteiden (esim. muuttujien nimien) kelvolliset ja epäkelvot nimet ja nimeämiskäytännöt Pythonissa.

liiketoiminta

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.

Copied title and URL