Nomi validi e non validi e convenzioni di denominazione per identificatori (ad esempio nomi di variabili) in Python

Attività commerciale

In Python, gli identificatori (nomi di variabili, funzioni, classi, ecc.) devono essere definiti secondo delle regole. I nomi che non seguono le regole non possono essere usati come identificatori e risulteranno in un errore.

Le seguenti informazioni sono fornite qui.

  • Caratteri che possono e non possono essere usati negli identificatori (nomi)
    • Caratteri ASCII
    • Carattere Unicode
      • normalizzazione (ad esempio in matematica)
  • Controlla se la stringa è un identificatore valido:isidentifier()
  • Parole che non possono essere usate come identificatori (nomi) (parole riservate)
  • Parole che non dovrebbero essere usate come identificatori (nomi)
  • Convenzioni di denominazione per PEP8

La seguente descrizione è data in Python 3, e potrebbe essere diversa in Python 2.

Caratteri che possono e non possono essere usati negli identificatori (nomi)

Indica i caratteri che possono e non possono essere usati come identificatori (nomi).

Inoltre, anche se ci sono molte cose da scrivere, fondamentalmente tutto quello che dovete ricordare è quanto segue.

  • Usa lettere maiuscole e minuscole, numeri e sottolineature.
  • La prima (prima) lettera non può essere un numero.

Caratteri ASCII

I caratteri ASCII che possono essere usati come identificatori (nomi) sono alfabeti maiuscoli e minuscoli (A~Z,a~z), numeri (0~9), e underscore (_). L'alfabeto è case-sensitive.

AbcDef_123 = 100
print(AbcDef_123)
# 100

Non si possono usare simboli diversi dai trattini bassi.

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

Inoltre, i numeri non possono essere usati all'inizio (prima lettera).

# 1_abc = 100
# SyntaxError: invalid token

I trattini possono essere usati anche all'inizio.

_abc = 100
print(_abc)
# 100

Tuttavia, notate che un trattino basso all'inizio può avere un significato speciale.

Carattere Unicode

A partire da Python 3, si possono usare anche caratteri Unicode.

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

Non tutti i caratteri Unicode possono essere usati, e a seconda della categoria Unicode, alcuni non possono essere usati. Per esempio, simboli come segni di punteggiatura e pittogrammi non possono essere usati.

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

# ☺ = 100
# SyntaxError: invalid character in identifier

Vedi la documentazione ufficiale per i codici di categoria Unicode che possono essere utilizzati.

In molti casi, non c'è alcun vantaggio nell'usare i caratteri cinesi, ecc., semplicemente perché si possono usare anche i caratteri Unicode (senza errori).

normalizzazione (ad esempio in matematica)

I caratteri Unicode sono convertiti nella forma normalizzata NFKC per l'interpretazione. Per esempio, gli alfabeti a tutta larghezza sono convertiti in alfabeti a metà larghezza (caratteri ASCII).

Notate che anche se il codice sorgente mostra una visualizzazione diversa, è considerato lo stesso oggetto e sarà sovrascritto.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

Controlla se la stringa è un identificatore valido: isidentifier()

Se una stringa è valida o meno come identificatore può essere controllata con il metodo isidentifier().

Restituisce true se è valido come identificatore e false se non è valido.

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

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

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

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

Parole che non possono essere usate come identificatori (nomi) (parole riservate)

Ci sono alcune parole (parole riservate) che non possono essere usate come identificatori anche se sono stringhe valide come identificatori (nomi).

Poiché una parola riservata è una stringa valida come identificatore, isidentifier() restituisce true, ma si verifica un errore se viene usata come identificatore.

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

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

Per ottenere una lista di parole riservate e per controllare se una stringa è una parola riservata, usate il modulo keyword della libreria standard.

Parole che non dovrebbero essere usate come identificatori (nomi)

I nomi delle funzioni incorporate di Python, per esempio, possono essere usati come identificatori, così potete assegnare loro nuovi valori come variabili.

Per esempio, len() è una funzione integrata che restituisce il numero di elementi in una lista o il numero di caratteri in una stringa.

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

print(len('abc'))
# 3

Se assegnate un nuovo valore a questo nome len, la funzione originale sarà sovrascritta e diventerà inutilizzabile. Notate che nessun errore o avvertimento verrà stampato quando si assegna un nuovo valore.

print(len('abc'))
# 3

len = 100
print(len)
# 100

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

Un altro errore comune è usare list = [0, 1, 2], che rende impossibile usare list(). Fate attenzione.

Convenzioni di denominazione per PEP8

PEP sta per Python Enhancement Proposal, un documento che descrive nuove caratteristiche e altri aspetti di 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 è l'ottava, e descrive la “Style Guide for Python Code”, cioè la guida di stile per Python.

Vengono anche menzionate le convenzioni di denominazione.

Vedi il link qui sopra per maggiori dettagli, ma per esempio, si raccomanda il seguente stile di scrittura.

  • Modulo
    • lowercase_underscore
    • Minuscolo + trattino basso
  • Pacchetto
    • lowercase
    • tutte le lettere minuscole
  • Classi, eccezioni
    • CapitalizedWords(CamelCase)
    • Maiuscola la prima lettera di una parola, nessun trattino basso
  • Funzioni, variabili e metodi
    • lowercase_underscore
    • Minuscolo + trattino basso
  • costante
    • ALL_CAPS
    • Lettere maiuscole + trattino basso

Tuttavia, se la vostra organizzazione non ha le proprie convenzioni di denominazione, si raccomanda di seguire il PEP8.

Copied title and URL