Appeler une fonction à partir d'un nom de chaîne en Python

Rayven Esplanada 30 janvier 2023
  1. Utilisez getattr() pour assigner une fonction à une variable en Python
  2. Utilisation de locals() et globals() pour appeler une fonction à partir d’une chaîne de caractères en Python
Appeler une fonction à partir d'un nom de chaîne 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.

Rayven Esplanada avatar Rayven Esplanada avatar

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.

LinkedIn

Article connexe - Python Function

Article connexe - Python String