A Pythonban az azonosítókat (változók, függvények, osztályok stb. nevei) szabályoknak megfelelően kell definiálni. A szabályoknak nem megfelelő nevek nem használhatók azonosítóként, és hibát eredményeznek.
A következő információk itt találhatók.
- Azonosítókban (nevekben) használható és nem használható karakterek
- ASCII karakterek
- Unicode karakter
- normalizálás (pl. matematikában)
- Ellenőrizze, hogy a karakterlánc érvényes azonosító-e:
isidentifier()
- Azonosítóként (névként) nem használható szavak (fenntartott szavak)
- Azonosítóként nem használható szavak (nevek)
- A PEP8 elnevezési konvenciók
Az alábbi leírás a Python 3-ban készült, és eltérhet a Python 2-ben.
Azonosítókban (nevekben) használható és nem használható karakterek
Jelzi azokat a karaktereket, amelyek azonosítóként (névként) használhatók és nem használhatók.
Ezenkívül, bár sok mindenről lehet írni, alapvetően csak a következőket kell megjegyeznie.
- Használjon nagy- és kisbetűket, számokat és aláhúzásokat.
- Az első (első) betű nem lehet szám.
ASCII karakterek
Az azonosítóként (névként) használható ASCII karakterek a nagy- és kisbetűs betűket (A~Z,a~z), a számokat (0~9) és az aláhúzásokat (_) tartalmazzák. Az ábécé a nagy- és kisbetűket különbözteti meg.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Az aláhúzáson kívüli szimbólumok nem használhatók.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
A számok nem használhatók az elején (első betű).
# 1_abc = 100
# SyntaxError: invalid token
Az aláhúzások az elején is használhatók.
_abc = 100
print(_abc)
# 100
Vegye azonban figyelembe, hogy az aláhúzás az elején különleges jelentéssel bírhat.
Unicode karakter
A Python 3 óta Unicode karakterek is használhatók.
変数1 = 100
print(変数1)
# 100
Nem minden Unicode-karakter használható, és a Unicode-kategóriától függően néhány nem használható. Például az olyan szimbólumok, mint az írásjelek és a piktogramok nem használhatók.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
A használható Unicode kategóriakódokat lásd a hivatalos dokumentációban.
Sok esetben nincs előnye a kínai karakterek stb. használatának, egyszerűen azért, mert az Unicode karakterek is használhatók (hiba nélkül).
normalizálás (pl. matematikában)
Az Unicode karaktereket az értelmezéshez az NFKC normalizált formájára alakítják át. Például a teljes szélességű betűket félszélességű betűkké (ASCII karakterekké) alakítják át.
Vegye figyelembe, hogy még ha a forráskód más megjelenítést is mutat, akkor is ugyanannak az objektumnak tekintendő, és felülírásra kerül.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Ellenőrizze, hogy a karakterlánc érvényes azonosító-e: isidentifier()
Azt, hogy egy karakterlánc érvényes-e azonosítóként, az isidentifier() karakterlánc-módszerrel lehet ellenőrizni.
Igazat ad vissza, ha érvényes az azonosító, és hamisat, ha érvénytelen.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
Azonosítóként (névként) nem használható szavak (fenntartott szavak)
Vannak olyan szavak (fenntartott szavak), amelyek nem használhatók azonosítóként, még akkor sem, ha azonosítóként (névként) érvényes karakterláncok.
Mivel a foglalt szó érvényes karakterlánc azonosítóként, az isidentifier() igazat ad vissza, de hiba lép fel, ha azonosítóként használják.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
A foglalt szavak listájának lekérdezéséhez és annak ellenőrzéséhez, hogy egy karakterlánc foglalt szó-e, használja a szabványos könyvtár kulcsszavas modulját.
Azonosítóként nem használható szavak (nevek)
A Python beépített függvényeinek nevei például azonosítóként használhatók, így változóként új értékeket rendelhetünk hozzájuk.
A len() például egy beépített függvény, amely egy lista elemeinek számát vagy egy karakterlánc karaktereinek számát adja vissza.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Ha új értéket rendel a len névhez, az eredeti függvény felülíródik és használhatatlanná válik. Vegye figyelembe, hogy új érték hozzárendelésekor nem jelenik meg hiba vagy figyelmeztetés.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Egy másik gyakori hiba a list = [0, 1, 2] használata, ami lehetetlenné teszi a list() használatát. Legyünk óvatosak.
A PEP8 elnevezési konvenciók
A PEP a Python Enhancement Proposal rövidítése, egy olyan dokumentum, amely új funkciókat és a Python egyéb aspektusait írja le.
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
A PEP8 a nyolcadik, és a “Style Guide for Python Code”, azaz a Python stilisztikai útmutatóját írja le.
Az elnevezési konvenciókat is megemlítik.
További részletekért lásd a fenti linket, de például a következő írásmód ajánlott.
- Modul
lowercase_underscore
- Kisbetű + aláhúzás
- Csomag
lowercase
- minden kisbetű
- Osztályok, kivételek
CapitalizedWords
(CamelCase
)- A szó első betűjét nagybetűvel írja, aláhúzás nélkül.
- Funkciók, változók és módszerek
lowercase_underscore
- Kisbetű + aláhúzás
- állandó
ALL_CAPS
- Nagybetűk + aláhúzás
Ha azonban az Ön szervezetének nincsenek saját elnevezési konvenciói, ajánlott a PEP8 szabványt követni.