Chiamare una funzione dal nome della stringa in Python
-
Usa
getattr()
per assegnare una funzione a una variabile in Python -
Usa
locals()
eglobals()
per chiamare una funzione da una stringa in Python
Questo tutorial introdurrà come chiamare una funzione usando il suo nome in formato stringa in Python.
Il caso d’uso per questo problema è assegnare una funzione da un modulo o una classe in una variabile per qualsiasi uso possa avere.
Usa getattr()
per assegnare una funzione a una variabile in Python
La funzione getattr()
restituisce un valore di un attributo da un oggetto o modulo. Questa funzione ha due argomenti obbligatori, il primo argomento è il nome dell’oggetto o del modulo e il secondo è un valore stringa che contiene il nome dell’attributo.
L’attributo in questione può essere nella forma di una variabile, una funzione o una sottoclasse.
Supponiamo di avere una classe denominata User
con gli attributi dati:
# Filename: user.py
class User:
name = "John"
age = 33
def doSomething():
print(name + " did something.")
Ora, vogliamo memorizzare la funzione attributo doSomething()
in un metodo e chiamarla. Per fare questo, useremo la funzione getattr()
.
from user import User as user
doSomething = getattr(user, "doSomething")
doSomething(user)
Produzione:
John did something.
Ora, la funzione user.doSomething()
è racchiusa nella variabile doSomething
. In questo modo, l’oggetto user
non deve essere specificato per chiamare la funzione.
Usa locals()
e globals()
per chiamare una funzione da una stringa in Python
Un altro modo per chiamare una funzione da una stringa è usare le funzioni incorporate locals()
e globals
. Queste due funzioni restituiscono un dizionario Python che rappresenta la tabella dei simboli corrente del codice sorgente dato.
La differenza tra le due funzioni è lo spazio dei nomi. Come indicano i nomi, locals()
restituisce un dizionario che include variabili locali e globals()
restituisce un dizionario che include variabili locali. Anche i nomi delle funzioni vengono restituiti nel formato della stringa.
Mettiamo questi metodi in un esempio. Dichiara 2 funzioni casuali e chiamale utilizzando entrambe le funzioni integrate.
def myFunc():
print("This is a function.")
def myFunc2():
print("This is another function.")
locals()["myFunc"]()
globals()["myFunc2"]()
Produzione:
This is a function.
This is another function.
In sintesi, per chiamare una funzione da una stringa, vengono utilizzate le funzioni getattr()
, locals()
e globals()
. getattr()
richiederà di sapere in quale oggetto o modulo si trova la funzione, mentre locals()
e globals()
individueranno la funzione all’interno del proprio ambito.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedInArticolo correlato - Python Function
- Argomenti opzionali in Python
- Esci da una funzione in Python
- Passa per riferimento in Python
- Sovraccarico di funzioni in Python
- Funzioni annidate in Python
- La funzione di callback in Python
Articolo correlato - Python String
- Come controllare una stringa è vuota in modo pitonico
- Converti una stringa in nome variabile in Python
- Come rimuovere gli spazi bianchi in una stringa in Python
- Estrai numeri da una stringa in Python
- Come convertire una stringa in datario in Python
- Come convertire una stringa in minuscola in Python 2 e 3