Comment obtenir le nom d'une fonction dans Python
Il existe trois façons d'obtenir des noms de fonction dans Python: 1. Utilisez l'attribut __name__ pour obtenir directement les noms des fonctions connues, telles que my_function .__ name__; 2. Utilisez Functools.wraps dans le décorateur pour conserver le nom de la fonction d'origine pour éviter d'être écrasé par le nom de la fonction de wrapper; 3. Utilisez le module Inspecter pour obtenir dynamiquement la fonction d'exécution actuelle ou le nom de l'appelant, qui convient au débogage et à la journalisation.
Obtenir le nom d'une fonction dans Python est en fait une exigence très courante, comme elle est utilisée lors de la débogage, de la journalisation ou de la fabrication de décorateurs. Il n'y a en fait pas beaucoup de méthodes pour obtenir le nom de la fonction, mais il est très important de l'utiliser pour la scène.

Utilisez __name__
Il s'agit de la méthode la plus directe et la plus couramment utilisée. Chaque objet de fonction a un attribut __name__
, qui renvoie le nom lorsque la fonction est définie.
def my_function (): passer imprimer (my_function .__ name__) # sortie: my_function
Cette méthode convient à la plupart des cas, surtout lorsque vous savez exactement de quelle fonction il s'agit. Cependant, il convient de noter que si vous utilisez un décorateur ou une fonction générée dynamiquement, le nom peut être modifié ou inexact.

Utilisation functools.wraps
dans un décorateur
Lorsque vous écrivez un décorateur, si vous appelez directement le décorateur __name__
de la fonction de décorateur, vous pouvez obtenir un résultat incorrect car le décorateur modifiera la méta-information de la fonction.
Par exemple:

def my_decorator (func): def wrapper (* args, ** kwargs): retourner func (* args, ** kwargs) Wrapper de retour @my_decorator def says_hello (): passer Imprimer (Say_hello .__ Name__) # Outpture: Wrapper, pas Say_hello
À l'heure actuelle, vous pouvez utiliser functools.wraps
pour conserver les informations de la fonction d'origine:
à partir des enveloppements d'importation Functools def my_decorator (func): @Wraps (Func) def wrapper (* args, ** kwargs): retourner func (* args, ** kwargs) Wrapper de retour @my_decorator def says_hello (): passer Imprimer (say_hello .__ name__) # sortie: Say_hello
De cette façon, vous pouvez obtenir correctement le nom de la fonction d'origine.
Obtenez le nom de la fonction actuellement exécutée (par exemple, à l'intérieur de la fonction)
Parfois, vous souhaitez obtenir automatiquement votre nom à l'intérieur de la fonction, comme pour la sortie du journal. Dans ce cas, vous pouvez utiliser le module inspect
:
Inspecte d'importation def who_am_i (): print (inspect.currentFrame (). f_code.co_name) who_am_i () # output: who_am_i
Ou plus général:
def log_call (): appelant = inspect.stack () [1] .Function print (f "appelé de {appelant}") def test_func (): log_call () test_func () # sortie: appelé à partir de test_func
Cette méthode convient pour une utilisation dans les outils de débogage ou la logique de journalisation générale.
En général, il existe plusieurs façons d'obtenir des noms de fonction et celui à choisir dépend du scénario spécifique.
Si c'est un objectif commun, il suffit d'utiliser __name__
;
Lorsque vous écrivez un décorateur, n'oubliez pas d'ajouter wraps
;
Si vous souhaitez identifier dynamiquement l'appelant au moment de l'exécution, utilisez inspect
.
Fondamentalement, tout est, pas compliqué, mais il est facile d'ignorer les détails.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Exécutez pipinstall-rrequirements.txt pour installer le package de dépendance. Il est recommandé de créer et d'activer l'environnement virtuel d'abord pour éviter les conflits, s'assurer que le chemin du fichier est correct et que le PIP a été mis à jour et utiliser des options telles que --No-Deps ou --User pour ajuster le comportement d'installation si nécessaire.

Python est un outil de test simple et puissant dans Python. Après l'installation, les fichiers de test sont automatiquement découverts en fonction des règles de dénomination. Écrivez une fonction commençant par test_ pour les tests d'assurance, utilisez @ pytest.fixture pour créer des données de test réutilisables, vérifiez les exceptions via PyTest.Rais, prend en charge l'exécution de tests spécifiés et plusieurs options de ligne de commande et améliore l'efficacité des tests.

TheargParsemoduleisthereComMendwaytoHandleCommand-lineargumentsInpython, fournissantRobustParsing, Typevalidation, HelpMessages, AnderrorHling; usys.argvforsimplécasesrequiringminimalsepup.

Table des matières Qu'est-ce que la proposition d'amélioration du bitcoin (BIP)? Pourquoi le BIP est-il si important? Comment le processus BIP historique fonctionne-t-il pour la proposition d'amélioration du bitcoin (BIP)? Qu'est-ce qu'un signal de type BIP et comment un mineur l'envoie-t-il? La racine de racine et les inconvénients d'un essai rapide de la conclusion du BIP - des améliorations de Bitcoin ont été apportées depuis 2011 par le biais d'un système appelé Bitcoin Improvement Proposition ou «BIP». Bitcoin Improvement Proposition (BIP) fournit des lignes directrices sur la façon dont le bitcoin peut se développer en général, il existe trois types possibles de BIP, dont deux sont liés aux changements technologiques de Bitcoin chaque BIP commence par des discussions informelles parmi les développeurs de Bitcoin qui peuvent rassembler n'importe où, y compris TWI

Pour les débutants en science des données, le cœur du saut de "l'inexpérience" à "l'expert de l'industrie" est une pratique continue. La base de la pratique est les ensembles de données riches et diversifiés. Heureusement, il existe un grand nombre de sites Web sur Internet qui offrent des ensembles de données publiques gratuits, qui sont des ressources précieuses pour améliorer les compétences et affiner vos compétences.

Importer @ contextManagerfromContextLibandDeFineAgeneratorFonctionnement toTyieldSexactlyOnce, où les actes de championnalsAnterAndCodeLifteryiel

L'analyse des mégadonnées doit se concentrer sur le CPU multi-core, la mémoire de grande capacité et le stockage à plusieurs niveaux. Les processeurs multi-core tels qu'AmDepyc ou RyzentHreadripper sont préférés, en tenant compte du nombre de cœurs et de performances monocomes; La mémoire est recommandée pour commencer avec 64 Go et la mémoire ECC est préférée pour assurer l'intégrité des données; Le stockage utilise NVMESSD (système et données chaudes), SATASSD (données communes) et disque dur (données froides) pour améliorer l'efficacité globale de traitement.

Identifiez la répétitivetasksworthautomating, tels organisationfilesorSensemberSeMails, se concentrant sur le plan de la forme
