In Python moeten identifiers (namen van variabelen, functies, klassen, enz.) volgens regels worden gedefinieerd. Namen die niet aan de regels voldoen kunnen niet als identifiers worden gebruikt en zullen een fout opleveren.
De volgende informatie wordt hier verstrekt.
- Tekens die wel en niet in identifiers (namen) kunnen worden gebruikt
- ASCII-tekens
- Unicode-teken
- normalisatie (bv. in wiskunde)
- Controleer of de string een geldige identifier is:
isidentifier()
- Woorden die niet als identificatiemiddelen (namen) kunnen worden gebruikt (gereserveerde woorden)
- Woorden die niet als identificatiemiddelen (namen) mogen worden gebruikt
- Naamgevingsconventies voor PEP8
De volgende beschrijving is gegeven in Python 3, en kan anders zijn in Python 2.
- Tekens die wel en niet in identifiers (namen) kunnen worden gebruikt
- Controleer of de string een geldige identifier is: isidentifier()
- Woorden die niet als identificatiemiddelen (namen) kunnen worden gebruikt (gereserveerde woorden)
- Woorden die niet als identificatiemiddelen (namen) mogen worden gebruikt
- Naamgevingsconventies voor PEP8
Tekens die wel en niet in identifiers (namen) kunnen worden gebruikt
Geeft aan welke tekens wel en welke niet als identifiers (namen) kunnen worden gebruikt.
Bovendien, hoewel er veel dingen zijn om over te schrijven, hoeft u in principe alleen het volgende te onthouden.
- Gebruik hoofdletters en kleine letters, cijfers en underscores.
- De eerste (eerste) letter kan geen cijfer zijn.
ASCII-tekens
ASCII-tekens die als identifiers (namen) kunnen worden gebruikt zijn hoofdletters en kleine letters (A~Z,a~z), getallen (0~9), en underscores (_). Het alfabet is hoofdlettergevoelig.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Andere symbolen dan underscores kunnen niet worden gebruikt.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
Ook kunnen cijfers niet aan het begin (eerste letter) worden gebruikt.
# 1_abc = 100
# SyntaxError: invalid token
Underscores kunnen ook aan het begin worden gebruikt.
_abc = 100
print(_abc)
# 100
Merk echter op dat een underscore aan het begin een speciale betekenis kan hebben.
Unicode-teken
Sinds Python 3 kunnen ook Unicode-tekens worden gebruikt.
変数1 = 100
print(変数1)
# 100
Niet alle Unicode-tekens kunnen worden gebruikt, en afhankelijk van de Unicode-categorie kunnen sommige niet worden gebruikt. Symbolen zoals leestekens en pictogrammen kunnen bijvoorbeeld niet worden gebruikt.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
Zie de officiële documentatie voor de Unicode-categoriecodes die kunnen worden gebruikt.
In veel gevallen is er geen voordeel verbonden aan het gebruik van Chinese karakters, enz., eenvoudigweg omdat ook Unicode-tekens (zonder fouten) kunnen worden gebruikt.
normalisatie (bv. in wiskunde)
Unicode-tekens worden geconverteerd naar de genormaliseerde vorm NFKC voor interpretatie. Zo worden bijvoorbeeld alfabetten met een volledige breedte omgezet in alfabetten met een halve breedte (ASCII-tekens).
Merk op dat zelfs indien de broncode een andere weergave toont, het als hetzelfde object wordt beschouwd en zal worden overschreven.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Controleer of de string een geldige identifier is: isidentifier()
Of een string al dan niet geldig is als identifier kan worden gecontroleerd met de string methode isidentifier().
Het retourneert true als het een geldige identifier is, en false als het ongeldig is.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
Woorden die niet als identificatiemiddelen (namen) kunnen worden gebruikt (gereserveerde woorden)
Er zijn enkele woorden (gereserveerde woorden) die niet als identifiers kunnen worden gebruikt, ook al zijn het geldige strings als identifiers (namen).
Aangezien een gereserveerd woord een geldige string is als identifier, retourneert isidentifier() true, maar er treedt een fout op als het wordt gebruikt als een identifier.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
Om een lijst van gereserveerde woorden te krijgen en om te controleren of een string een gereserveerd woord is, gebruik je de keyword module van de standaard bibliotheek.
Woorden die niet als identificatiemiddelen (namen) mogen worden gebruikt
De namen van Python's ingebouwde functies, bijvoorbeeld, kunnen worden gebruikt als identifiers, zodat je er nieuwe waarden aan kunt toekennen als variabelen.
Bijvoorbeeld, len() is een ingebouwde functie die het aantal elementen in een lijst of het aantal tekens in een string teruggeeft.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Als u een nieuwe waarde toekent aan deze naam len, zal de oorspronkelijke functie worden overschreven en onbruikbaar worden. Merk op dat er geen fout of waarschuwing zal worden afgedrukt bij het toekennen van een nieuwe waarde.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Een andere veel voorkomende fout is om list = [0, 1, 2] te gebruiken, waardoor het onmogelijk wordt om list() te gebruiken. Wees voorzichtig.
Naamgevingsconventies voor PEP8
PEP staat voor Python Enhancement Proposal, een document waarin nieuwe functies en andere aspecten van Python worden beschreven.
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 is de achtste, en beschrijft de “Stijlgids voor Python-code”, dat wil zeggen, de stijlgids voor Python.
Ook de naamgevingsconventies worden vermeld.
Zie de link hierboven voor meer details, maar bijvoorbeeld de volgende schrijfstijl wordt aanbevolen.
- Module
lowercase_underscore
- Kleine letters + onderstrepingsteken
- Pakket
lowercase
- alle kleine letters
- Klassen, Uitzonderingen
CapitalizedWords
(CamelCase
)- Geef de eerste letter van een woord een hoofdletter, geen underscore
- Functies, variabelen en methoden
lowercase_underscore
- Kleine letters + onderstrepingsteken
- constant
ALL_CAPS
- Hoofdletters + onderstrepingsteken
Als uw organisatie echter geen eigen naamgevingsconventies heeft, is het aan te bevelen PEP8 te volgen.