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)
- 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
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.