Maison  >  Article  >  développement back-end  >  Comment rendre une fonction personnalisée en Python disponible dans le monde entier ?

Comment rendre une fonction personnalisée en Python disponible dans le monde entier ?

WBOY
WBOYavant
2023-05-08 09:43:071343parcourir

Lorsque nous développons des projets Python, nous écrivons souvent des fonctions d'outils. Afin d'utiliser cette fonction d'outil dans plusieurs fichiers .py du projet, vous devez l'importer à plusieurs endroits, ce qui est très gênant.

Par exemple, l'exemple suivant :

Comment rendre une fonction personnalisée en Python disponible dans le monde entier ?

Utilisez l'outil clean_msg dans les fichiers A.py et C.py​ . fonction, alors ils doivent tous importer clean_msg depuis util.py​. Cela semble naturel.

Mais aujourd'hui, en regardant le code source de icecream/builtins.py[1], j'ai soudainement découvert une utilisation avancée qui nous permet d'utiliser les fonctions de l'outil tout comme la fonction d'impression de Python, non. besoin d'importer, mais utilisé directement.

Regardons d'abord l'effet :

Comment rendre une fonction personnalisée en Python disponible dans le monde entier ?

Veuillez noter que A.py et C.py​, je je ne les ai pas importés. clean_msg utilise plutôt cette fonction directement. Et ça fonctionne tout à fait bien.

Le principe clé est dans le fichier d'entrée main.py, les 3 lignes que j'ai encadrées :

import builtins

from util import clean_msg
setattr(builtins, 'clean_msg', clean_msg)

En Python, toutes les fonctions ou classes intégrées sont dans le module intégré , il peut donc être utilisé directement dans le code sans importation. Il ne nous reste plus qu'à enregistrer notre fonction d'outil personnalisée dans le module intégré, afin qu'elle puisse avoir le même effet que la fonction intégrée.

Si vous souhaitez enregistrer une fonction d'outil en tant que fonction intégrée, il vous suffit de l'importer dans le fichier d'entrée, puis d'utiliser setattr pour la définir comme attribut du module intégré. Le deuxième paramètre est le nom lorsque vous souhaitez l'appeler globalement, et le troisième paramètre est la fonction de l'outil que vous devez enregistrer. Le nom peut être différent du nom de la fonction utilitaire, à condition qu'il ne duplique pas une fonction intégrée existante.

Une fois l'enregistrement terminé, pendant toute la durée d'exécution de ce projet, cette fonction d'outil peut être appelée directement via le nom enregistré dans n'importe quel fichier .py, tout comme l'appel de la fonction intégrée.

Références

[1] icecream/builtins.py : https://github.com/gruns/icecream/blob/master/icecream/builtins.py​# 🎜 🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer