Gyldige og ugyldige navne og navngivningskonventioner for identifikatorer (f.eks. variabelnavne) i Python

Forretning

I Python skal identifikatorer (navne på variabler, funktioner, klasser osv.) defineres i henhold til regler. Navne, der ikke følger reglerne, kan ikke bruges som identifikatorer og vil resultere i en fejl.

Her findes følgende oplysninger.

  • Tegn, der kan og ikke kan bruges i identifikatorer (navne)
    • ASCII-tegn
    • Unicode-tegn
      • normalisering (f.eks. i matematik)
  • Kontroller, om strengen er en gyldig identifikator:isidentifier()
  • Ord, der ikke kan anvendes som identifikatorer (navne) (reserverede ord)
  • Ord, der ikke bør anvendes som identifikatorer (navne)
  • Navnekonventioner for PEP8

Den følgende beskrivelse er givet i Python 3 og kan være anderledes i Python 2.

Tegn, der kan og ikke kan bruges i identifikatorer (navne)

Angiver tegn, der kan og ikke kan bruges som identifikatorer (navne).

Selv om der er mange ting at skrive om, er det eneste, du skal huske, følgende.

  • Brug store og små bogstaver, tal og understregninger.
  • Det første (første) bogstav kan ikke være et tal.

ASCII-tegn

ASCII-tegn, der kan bruges som identifikatorer (navne), er alfabeter med store og små bogstaver (A~Z,a~z), tal (0~9) og understregninger (_). Alfabetet er stregfølsomt.

AbcDef_123 = 100
print(AbcDef_123)
# 100

Der kan ikke anvendes andre symboler end understregninger.

# AbcDef-123 = 100
# SyntaxError: can't assign to operator

Tal kan heller ikke anvendes i begyndelsen (første bogstav).

# 1_abc = 100
# SyntaxError: invalid token

Der kan også anvendes understregninger i begyndelsen.

_abc = 100
print(_abc)
# 100

Bemærk dog, at en understregning i begyndelsen kan have en særlig betydning.

Unicode-tegn

Siden Python 3 kan Unicode-tegn også anvendes.

変数1 = 100
print(変数1)
# 100

Det er ikke alle Unicode-tegn, der kan bruges, og afhængigt af Unicode-kategorien kan nogle af dem ikke bruges. F.eks. kan symboler som tegnsætningstegn og piktogrammer ikke anvendes.

# 変数。 = 100
# SyntaxError: invalid character in identifier

# ☺ = 100
# SyntaxError: invalid character in identifier

Se den officielle dokumentation for de Unicode-kategorikoder, der kan anvendes, i den officielle dokumentation.

I mange tilfælde er der ingen fordel ved at bruge kinesiske tegn osv., simpelthen fordi Unicode-tegn også kan bruges (uden fejl).

normalisering (f.eks. i matematik)

Unicode-tegn konverteres til den normaliserede form NFKC med henblik på fortolkning. F.eks. konverteres alfabeter med fuld bredde til alfabeter med halv bredde (ASCII-tegn).

Bemærk, at selv om kildekoden viser en anden visning, betragtes det som det samme objekt og vil blive overskrevet.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

Kontroller, om strengen er en gyldig identifikator: isidentifier()

Om en streng er gyldig som identifikator eller ej kan kontrolleres med strengmetoden isidentifier().

Den returnerer sandt, hvis den er gyldig som en identifikator, og falsk, hvis den er ugyldig.

print('AbcDef_123'.isidentifier())
# True

print('AbcDef-123'.isidentifier())
# False

print('変数1'.isidentifier())
# True

print('☺'.isidentifier())
# False

Ord, der ikke kan anvendes som identifikatorer (navne) (reserverede ord)

Der er nogle ord (reserverede ord), som ikke kan bruges som identifikatorer, selv om de er gyldige strenge som identifikatorer (navne).

Da et reserveret ord er en gyldig streng som en identifikator, returnerer isidentifier() sandt, men der opstår en fejl, hvis det bruges som en identifikator.

print('None'.isidentifier())
# True

# None = 100
# SyntaxError: can't assign to keyword

For at få en liste over reserverede ord og for at kontrollere, om en streng er et reserveret ord, skal du bruge nøgleordsmodulet i standardbiblioteket.

Ord, der ikke bør anvendes som identifikatorer (navne)

Navnene på Pythons indbyggede funktioner kan f.eks. bruges som identifikatorer, så du kan tildele nye værdier til dem som variabler.

Len() er f.eks. en indbygget funktion, der returnerer antallet af elementer i en liste eller antallet af tegn i en streng.

print(len)
# <built-in function len>

print(len('abc'))
# 3

Hvis du tildeler en ny værdi til dette navn len, vil den oprindelige funktion blive overskrevet og blive ubrugelig. Bemærk, at der ikke vil blive udskrevet nogen fejl eller advarsel, når der tildeles en ny værdi.

print(len('abc'))
# 3

len = 100
print(len)
# 100

# print(len('abc'))
# TypeError: 'int' object is not callable

En anden almindelig fejl er at bruge list = [0, 1, 2], hvilket gør det umuligt at bruge list(). Vær forsigtig.

Navnekonventioner for PEP8

PEP står for Python Enhancement Proposal og er et dokument, der beskriver nye funktioner og andre aspekter af Python.

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 er den ottende, og den beskriver “Style Guide for Python Code”, dvs. stilvejledningen for Python.

Navngivningskonventioner er også nævnt.

Se linket ovenfor for flere oplysninger, men for eksempel anbefales følgende skrivestil.

  • Modul
    • lowercase_underscore
    • Små bogstaver + understregning
  • Pakke
    • lowercase
    • alle små bogstaver
  • Klasser, undtagelser
    • CapitalizedWords(CamelCase)
    • Første bogstav i et ord skrives med stort, ingen understregning
  • Funktioner, variabler og metoder
    • lowercase_underscore
    • Små bogstaver + understregning
  • konstant
    • ALL_CAPS
    • Store bogstaver + understregning

Hvis din organisation ikke har sine egne navngivningskonventioner, anbefales det dog at følge PEP8.

Copied title and URL