Gild og ógild nöfn og nafnavenjur fyrir auðkenni (t.d. breytuheiti) í Python

Viðskipti

Í Python þarf að skilgreina auðkenni (heiti breyta, falla, flokka o.s.frv.) samkvæmt reglum. Nöfn sem ekki fylgja reglunum geta ekki verið notuð sem auðkenni og munu leiða til villu.

Eftirfarandi upplýsingar eru veittar hér.

  • Stafir sem hægt er og ekki er hægt að nota í auðkennum (nöfn)
    • ASCII stafir
    • Unicode stafur
      • eðlileg (t.d. í stærðfræði)
  • Athugaðu hvort strengurinn sé gilt auðkenni:isidentifier()
  • Orð sem ekki er hægt að nota sem auðkenni (nöfn) (frátekið orð)
  • Orð sem ætti ekki að nota sem auðkenni (nöfn)
  • Nafnavenjur fyrir PEP8

Eftirfarandi lýsing er gefin í Python 3 og gæti verið önnur í Python 2.

Stafir sem hægt er og ekki er hægt að nota í auðkennum (nöfn)

Gefur til kynna stafi sem hægt er og ekki er hægt að nota sem auðkenni (nöfn).

Að auki, þó að það sé margt til að skrifa um, er í rauninni allt sem þú þarft að muna eftir eftirfarandi.

  • Notaðu há- og lágstafi, tölustafi og undirstrik.
  • Fyrsti (fyrsti) stafurinn getur ekki verið tala.

ASCII stafir

ASCII stafir sem hægt er að nota sem auðkenni (nöfn) eru hástafir og lágstafir (A~Z,a~z), tölur (0~9) og undirstrik (_). Stafrófið er hástöfum.

AbcDef_123 = 100
print(AbcDef_123)
# 100

Ekki er hægt að nota önnur tákn en undirstrik.

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

Einnig er ekki hægt að nota tölur í upphafi (fyrsti stafur).

# 1_abc = 100
# SyntaxError: invalid token

Einnig er hægt að nota undirstrik í upphafi.

_abc = 100
print(_abc)
# 100

Athugaðu þó að undirstrik í upphafi getur haft sérstaka merkingu.

Unicode stafur

Frá Python 3 er einnig hægt að nota Unicode stafi.

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

Ekki er hægt að nota alla Unicode stafi og það fer eftir Unicode flokki, suma er ekki hægt að nota. Til dæmis er ekki hægt að nota tákn eins og greinarmerki og táknmyndir.

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

# ☺ = 100
# SyntaxError: invalid character in identifier

Sjá opinber skjöl fyrir Unicode flokkakóða sem hægt er að nota.

Í mörgum tilfellum er enginn kostur við að nota kínverska stafi o.s.frv., einfaldlega vegna þess að Unicode stafi er líka hægt að nota (villulaus).

eðlileg (t.d. í stærðfræði)

Unicode stöfum er breytt í eðlilegt form NFKC til túlkunar. Til dæmis er stafróf í fullri breidd breytt í stafróf í hálfbreidd (ASCII stafi).

Athugaðu að jafnvel þótt frumkóði sýni aðra skjá, þá telst hann vera sami hluturinn og verður skrifað yfir.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

Athugaðu hvort strengurinn sé gilt auðkenni: isidentifier()

Hvort strengur sé gildur sem auðkenni eða ekki er hægt að athuga með strengjaaðferðinni isidentifier().

Það skilar satt ef það er gilt sem auðkenni, og ósatt ef það er ógilt.

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

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

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

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

Orð sem ekki er hægt að nota sem auðkenni (nöfn) (frátekið orð)

Það eru nokkur orð (áskilin orð) sem ekki er hægt að nota sem auðkenni jafnvel þótt þau séu gildir strengir sem auðkenni (nöfn).

Þar sem frátekið orð er gildur strengur sem auðkenni, skilar isidentifier() satt, en villa kemur upp ef það er notað sem auðkenni.

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

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

Til að fá lista yfir frátekin orð og athuga hvort strengur sé frátekið orð, notaðu lykilorðareininguna í staðlaða bókasafninu.

Orð sem ætti ekki að nota sem auðkenni (nöfn)

Nöfn innbyggðra aðgerða Python er til dæmis hægt að nota sem auðkenni, svo þú getur úthlutað þeim nýjum gildum sem breytum.

Til dæmis er len() innbyggt fall sem skilar fjölda staka í lista eða fjölda stafa í streng.

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

print(len('abc'))
# 3

Ef þú gefur þessu nafni len nýtt gildi, verður upprunalega fallið skrifað yfir og verður ónothæft. Athugaðu að engin villa eða viðvörun verður prentuð þegar nýtt gildi er úthlutað.

print(len('abc'))
# 3

len = 100
print(len)
# 100

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

Önnur algeng mistök er að nota list = [0, 1, 2], sem gerir það ómögulegt að nota list(). Farðu varlega.

Nafnavenjur fyrir PEP8

PEP stendur fyrir Python Enhancement Proposal, skjal sem lýsir nýjum eiginleikum og öðrum þáttum 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 sá áttundi og hann lýsir „Style Guide for Python Code“, það er stílahandbókinni fyrir Python.

Nafnavenjur eru einnig nefndar.

Sjá tengilinn hér að ofan fyrir frekari upplýsingar, en til dæmis er mælt með eftirfarandi ritstíl.

  • Eining
    • lowercase_underscore
    • Lágstafir + undirstrik
  • Pakki
    • lowercase
    • allir lágstafir
  • Flokkar, undantekningar
    • CapitalizedWords(CamelCase)
    • Skrifaðu fyrsta staf orðs með hástöfum, engin undirstrik
  • Aðgerðir, breytur og aðferðir
    • lowercase_underscore
    • Lágstafir + undirstrik
  • fastur
    • ALL_CAPS
    • Stórir stafir + undirstrik

Hins vegar, ef fyrirtæki þitt hefur ekki eigin nafnavenjur, er mælt með því að fylgja PEP8.