Važeća i nevažeća imena i konvencije o imenovanju za identifikatore (npr. imena promenljivih) u Python-u

Бусинесс

U Python-u, identifikatori (imena promenljivih, funkcija, klasa, itd.) moraju biti definisani u skladu sa pravilima. Imena koja ne poštuju pravila ne mogu se koristiti kao identifikatori i rezultiraće greškom.

Ovde su navedene sledeće informacije.

  • Znakovi koji se mogu i ne mogu koristiti u identifikatorima (imena)
    • ASCII znakovi
    • Unicode karakter
      • normalizacija (npr. u matematici)
  • Proverite da li je string ispravan identifikator:isidentifier()
  • Reči koje se ne mogu koristiti kao identifikatori (imena) (rezervisane reči)
  • Reči koje ne treba koristiti kao identifikatore (imena)
  • Konvencije imenovanja za PEP8

Sledeći opis je dat u Python-u 3 i može biti drugačiji u Python-u 2.

Znakovi koji se mogu i ne mogu koristiti u identifikatorima (imena)

Označava znakove koji se mogu i ne mogu koristiti kao identifikatori (imena).

Pored toga, iako postoji mnogo stvari o kojima treba pisati, u suštini sve što treba da zapamtite je sledeće.

  • Koristite velika i mala slova, brojeve i donje crte.
  • Prvo (prvo) slovo ne može biti broj.

ASCII znakovi

ASCII znakovi koji se mogu koristiti kao identifikatori (imena) su velika i mala slova (A~Z,a~z), brojevi (0~9) i donje crte (_). Abeceda je osetljiva na velika i mala slova.

AbcDef_123 = 100
print(AbcDef_123)
# 100

Ne mogu se koristiti drugi simboli osim donjih crta.

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

Takođe, brojevi se ne mogu koristiti na početku (prvo slovo).

# 1_abc = 100
# SyntaxError: invalid token

Donje crte se takođe mogu koristiti na početku.

_abc = 100
print(_abc)
# 100

Međutim, imajte na umu da donja crta na početku može imati posebno značenje.

Unicode karakter

Od Python-a 3, mogu se koristiti i Unicode znakovi.

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

Ne mogu se koristiti svi Unicode znakovi, a u zavisnosti od Unicode kategorije, neki se ne mogu koristiti. Na primer, ne mogu se koristiti simboli kao što su znaci interpunkcije i piktogrami.

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

# ☺ = 100
# SyntaxError: invalid character in identifier

Pogledajte zvaničnu dokumentaciju za kodove kategorija Unicode koji se mogu koristiti.

U mnogim slučajevima, nema prednosti korišćenja kineskih znakova, itd., jednostavno zato što se mogu koristiti i Unicode znakovi (bez greške).

normalizacija (npr. u matematici)

Unicode znakovi se konvertuju u normalizovani oblik NFKC radi interpretacije. Na primer, abecede pune širine se konvertuju u abecede polovine širine (ASCII znakovi).

Imajte na umu da čak i ako izvorni kod prikazuje drugačiji prikaz, on se smatra istim objektom i biće zamenjen.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

Proverite da li je string ispravan identifikator: isidentifier()

Da li je string validan kao identifikator ili ne može se proveriti pomoću metode stringa isidentifier().

Vraća tačno ako je validan kao identifikator i netačno ako je nevažeći.

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

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

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

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

Reči koje se ne mogu koristiti kao identifikatori (imena) (rezervisane reči)

Postoje neke reči (rezervisane reči) koje se ne mogu koristiti kao identifikatori čak i ako su validni nizovi kao identifikatori (imena).

Pošto je rezervisana reč ispravan string kao identifikator, isidentifier() vraća true, ali dolazi do greške ako se koristi kao identifikator.

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

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

Da biste dobili listu rezervisanih reči i proverili da li je string rezervisana reč, koristite modul ključnih reči standardne biblioteke.

Reči koje ne treba koristiti kao identifikatore (imena)

Nazivi ugrađenih funkcija Python-a, na primer, mogu se koristiti kao identifikatori, tako da možete da im dodelite nove vrednosti kao promenljive.

Na primer, len() je ugrađena funkcija koja vraća broj elemenata na listi ili broj znakova u nizu.

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

print(len('abc'))
# 3

Ako dodelite novu vrednost ovom imenu len, originalna funkcija će biti prepisana i postati neupotrebljiva. Imajte na umu da se prilikom dodeljivanja nove vrednosti neće štampati greška ili upozorenje.

print(len('abc'))
# 3

len = 100
print(len)
# 100

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

Još jedna uobičajena greška je korišćenje liste = [0, 1, 2], što onemogućava korišćenje liste(). Будите опрезни.

Konvencije imenovanja za PEP8

PEP je skraćenica od Python Enhancement Proposal, dokument koji opisuje nove karakteristike i druge aspekte Python-a.

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 je osmi, i opisuje „Stilski vodič za Python kod“, odnosno stilski vodič za Python.

Pominju se i konvencije o imenovanju.

Pogledajte vezu iznad za više detalja, ali na primer, preporučuje se sledeći stil pisanja.

  • Modul
    • lowercase_underscore
    • Mala slova + donja crta
  • Paket
    • lowercase
    • sva mala slova
  • Klase, izuzeci
    • CapitalizedWords(CamelCase)
    • Napišite veliko početno slovo reči, bez donje crte
  • Funkcije, promenljive i metode
    • lowercase_underscore
    • Mala slova + donja crta
  • konstantan
    • ALL_CAPS
    • Velika slova + donja crta

Međutim, ako vaša organizacija nema sopstvene konvencije o imenovanju, preporučuje se da pratite PEP8.

Copied title and URL