Maison >développement back-end >Tutoriel Python >Comment puis-je utiliser les décorateurs Python pour rendre les fonctions en gras et en italique, ajouter des horodatages et capitaliser les résultats des méthodes ?

Comment puis-je utiliser les décorateurs Python pour rendre les fonctions en gras et en italique, ajouter des horodatages et capitaliser les résultats des méthodes ?

DDD
DDDoriginal
2024-12-24 16:33:17490parcourir

How Can I Use Python Decorators to Make Functions Bold and Italic, Add Timestamps, and Capitalize Method Results?

Rendre les fonctions en gras et en italique à l'aide de décorateurs

Les décorateurs sont des fonctions pythoniques qui améliorent d'autres fonctions. Nous allons créer deux décorateurs, @make_bold et @make_italic, pour formater le texte en gras et en italique. Voici comment :

</p>
<h1>Décorateur pour mettre le texte en gras</h1>
<p>def make_bold(func):</p>
<pre class="brush:php;toolbar:false">def wrapper():
    return "<b>" + func() + "</b>"  # Surround the result with bold tags
return wrapper

Décorateur pour mettre le texte en italique

déf make_italic(func):

def wrapper():
    return "<i>" + func() + "</i>"  # Surround the result with italic tags
return wrapper

@make_bold
@make_italic
def say():

return "Hello"

print(say()) # Sortie : "Bonjour"

Fonctions de décoration avec des arguments

Vous pouvez également créer des décorateurs qui acceptent des arguments. Par exemple, créons un décorateur qui ajoute un horodatage au résultat :

<br>importer l'heure</p>
<h1>Décorateur pour ajouter un horodatage à une fonction</h1>
<p> déf add_timestamp(func):</p>
<pre class="brush:php;toolbar:false">def wrapper(*args, **kwargs):
    timestamp = time.ctime()  # Get the current time
    return f"{timestamp}: {func(*args, **kwargs)}"  # Prepend the timestamp to the call
return wrapper

@add_timestamp
def greet(name):

return f"Hello, {name}!"

print(greet("John")) # Sortie : "2023-01 -01 12:00:00 : Bonjour, John!"

Décorateurs pour les méthodes

Les décorateurs travaillent non seulement pour les fonctions mais aussi pour les méthodes. Voici comment décorer une méthode :

<br>class User :</p>
<pre class="brush:php;toolbar:false">def __init__(self, name):
    self.name = name

Décorateur pour mettre en majuscule les noms d'utilisateur

def capitalize_name(method) :

def wrapper(self):
    return method(self).capitalize()  # Capitalize the result
return wrapper

@capitalize_name
def get_name(self):

return self.name

user = User("john")
print(user.get_name()) # Sortie : "John"

Bonnes pratiques

  • Utilisez la @syntaxe pour décorer les fonctions, car c'est plus lisible.
  • Gardez les décorateurs légers pour éviter une surcharge de performances.
  • Utilisez functools.wraps() pour conserver les métadonnées de la fonction d'origine (nom, docstring).
  • Envisagez d'utiliser des décorateurs pour des préoccupations transversales telles que la journalisation, la mise en cache ou la gestion des erreurs.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn