Converti una stringa in nome variabile in Python

Sahil Bhosale 21 dicembre 2022
  1. Converti stringa in nome variabile usando globals() e locals() in Python
  2. Converti stringa in nome variabile usando exec() in Python
Converti una stringa in nome variabile in Python

In Python, ci sono vari modi in cui possiamo convertire un valore stringa in un nome variabile. In questo articolo, discuteremo vari modi in cui possiamo ottenere questo risultato.

Alcune persone potrebbero volerlo fare per definire dinamicamente un nome di variabile mentre il programma Python è in esecuzione. La conversione di una stringa in un nome di variabile utilizzando i metodi mostrati di seguito non è consigliata durante lo sviluppo di software pronto per la produzione perché ciò può causare alcuni problemi. Sì, è possibile ottenere questo risultato, ma si prega di essere cauti mentre lo si fa.

Converti stringa in nome variabile usando globals() e locals() in Python

globals()

La funzione globals() in Python restituisce il dizionario della tabella dei simboli globale corrente. Una tabella di simboli globale memorizza tutte le informazioni relative all’ambito globale del programma, a cui è possibile accedere utilizzando la funzione globals().

user_input = input("Enter string for variable name: \n")
globals()[user_input] = 50
print(apple)
print(type(apple))

Produzione:

Converti una stringa in un nome di variabile utilizzando la funzione globals()

La prima cosa che stiamo facendo qui è prendere l’input dell’utente usando la funzione input() e passando una stringa Inserisci una stringa per il nome di una variabile: al suo interno. Quindi qualunque valore un utente inserirà, quel valore verrà memorizzato all’interno della variabile user_input. Qui, ci aspettiamo che l’utente inserisca apple come un valore di stringa che verrà poi memorizzato all’interno di user_input. Se l’utente inserisce un valore diverso da apple, il programma eseguirà un errore come NameError: name 'variable' is not defined. È perché stampiamo anche il valore di apple e poi ne controlliamo il tipo più avanti nel nostro codice.

Se l’utente ha inserito il valore corretto, possiamo modificare il dizionario globale usando globals() per modificare il dizionario globale e assegnare un qualsiasi valore alla variabile apple. Qui, abbiamo assegnato 50 alla variabile apple.

locals()

La funzione locals() in Python restituisce il dizionario della tabella dei simboli locale corrente. È possibile accedere a una tabella di simboli locale con l’aiuto della funzione locals(). La funzione locals() funziona quasi allo stesso modo della funzione globals(). L’unica differenza è che locals() può accedere alla tabella dei simboli locale, e globals() può accedere alla tabella dei simboli globale e restituisce un dizionario.

user_input = input("Enter string for variable name: \n")
locals()[user_input] = 50
print(apple)
print(type(apple))

Produzione:

Converti una stringa in un nome di variabile utilizzando la funzione globals()

Anche questo codice funziona allo stesso modo di quello di globals(). L’unica differenza è che qui abbiamo usato la funzione locals().

Converti stringa in nome variabile usando exec() in Python

Un altro modo per fare questa cosa è usare la funzione exec() in Python. La funzione exec() è usata per eseguire dinamicamente il programma Python. Abbiamo una variabile name all’interno della quale memorizziamo un valore di stringa Elon.

name = "Elon"
exec("%s = %d" % (name, 100))
print(Elon)

Produzione:

100

All’interno della funzione exec(), abbiamo %s e %d, usati rispettivamente come segnaposto per il valore della stringa e il valore decimale. Significa che assegniamo un valore intero a una stringa con l’aiuto dell’operatore di assegnazione =. Sia %s che %d sono racchiusi tra le virgolette =. Quindi abbiamo una parentesi all’interno della quale abbiamo 2 cose, la prima è la variabile che abbiamo creato cioè name, che contiene il valore Elon, e la seconda abbiamo un intero 100.

Qui, invece della variabile name, verrà sostituito il valore all’interno di quella variabile. L’intero 100 verrà assegnato a Elon. Elon diventa il nome di una variabile e, se lo stampi, otterrai 100 come output.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

Articolo correlato - Python String

Articolo correlato - Python Variable