Appeler une fonction à partir d'un nom de chaîne en Python
-
Utilisez
getattr()
pour assigner une fonction à une variable en Python -
Utilisation de
locals()
etglobals()
pour appeler une fonction à partir d’une chaîne de caractères en Python
Ce tutoriel présente la façon d’appeler une fonction en utilisant son nom au format chaîne de caractères en Python.
Le cas d’utilisation pour ce problème est d’assigner une fonction d’un module ou d’une classe à une variable pour n’importe quelle utilisation qu’elle peut avoir.
Utilisez getattr()
pour assigner une fonction à une variable en Python
La fonction getattr()
retourne une valeur d’un attribut d’un objet ou d’un module. Cette fonction a deux arguments obligatoires, le premier argument est le nom de l’objet ou du module, et le second est une valeur de chaîne de caractères qui contient le nom de l’attribut.
L’attribut en question peut être sous la forme d’une variable, d’une fonction ou d’une sous-classe.
Supposons que nous ayons une classe nommée User
avec les attributs donnés :
# Filename: user.py
class User:
name = "John"
age = 33
def doSomething():
print(name + " did something.")
Maintenant, nous voulons stocker la fonction d’attribut doSomething()
dans une méthode et l’appeler. Pour ce faire, nous utiliserons la fonction getattr()
.
from user import User as user
doSomething = getattr(user, "doSomething")
doSomething(user)
Production :
John did something.
Maintenant, la fonction user.doSomething()
est enveloppée dans la variable doSomething
. De cette façon, l’objet user
n’a pas besoin d’être spécifié pour appeler la fonction.
Utilisation de locals()
et globals()
pour appeler une fonction à partir d’une chaîne de caractères en Python
Une autre façon d’appeler une fonction à partir d’une chaîne de caractères est d’utiliser les fonctions intégrées locals()
et globals
. Ces deux fonctions retournent un dictionnaire Python qui représente la table de symboles actuelle du code source donné.
La différence entre les deux fonctions est l’espace de noms. Comme les noms l’indiquent, locals()
retourne un dictionnaire incluant des variables locales et globals()
retourne un dictionnaire incluant des variables locales. Les noms des fonctions sont également renvoyés dans le format de la chaîne de caractères.
Mettons ces méthodes dans un exemple. Déclarez 2 fonctions aléatoires et appelez-la en utilisant les deux fonctions intégrées.
def myFunc():
print("This is a function.")
def myFunc2():
print("This is another function.")
locals()["myFunc"]()
globals()["myFunc2"]()
Production :
This is a function.
This is another function.
En résumé, pour appeler une fonction à partir d’une chaîne de caractères, les fonctions getattr()
, locals()
, et globals()
sont utilisées. La fonction getattr()
vous demandera de savoir dans quel objet ou module la fonction se trouve, tandis que les fonctions locals()
et globals()
localiseront la fonction dans son propre champ d’application.
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.
LinkedInArticle connexe - Python Function
- Quitter une fonction en Python
- Arguments optionnels en Python
- Imitez la fonction ode45() en Python
- Correction de l'erreur Python Return Outside Function
- La fonction zip() en Python
- La fonction maketrans en Python
Article connexe - Python String
- Supprimer les virgules de la chaîne en Python
- Comment vérifier qu'une chaîne est vide de manière pythonique
- Convertir une chaîne en nom de variable en Python
- Comment supprimer les espaces dans une chaîne de caractères en Python
- Comment extraire des nombres d'une chaîne de caractèresen Python
- Comment convertir une chaîne de caractères en datetime en Python