Junior — Middle
Ποιος είναι ο ρόλος της λειτουργίας functools.wraps κατά τη δημιουργία διακοσμητών σε Python;
sobes.tech AI
Απάντηση από AI
Η λειτουργία functools.wraps χρησιμοποιείται κατά τη δημιουργία διακοσμητών (decorators) στην Python για να διατηρεί τα μεταδεδομένα της αρχικής λειτουργίας που περιβάλλεται από τον διακοσμητή. Χωρίς τη χρήση του wraps, το όνομα της λειτουργίας, η τεκμηρίωσή της (doc) και άλλα χαρακτηριστικά αντικαθίστανται από αυτά της εσωτερικής λειτουργίας του διακοσμητή, γεγονός που καθιστά πιο δύσκολη την αποσφαλμάτωση και την τεκμηρίωση.
Παράδειγμα χρήσης:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Πριν από την κλήση της λειτουργίας")
result = func(*args, **kwargs)
print("Μετά την κλήση της λειτουργίας")
return result
return wrapper
@my_decorator
def greet(name):
"Λειτουργία χαιρετισμού"
print(f"Γειά σου, {name}!")
print(greet.__name__) # Θα εμφανίσει 'greet', όχι 'wrapper'
print(greet.__doc__) # Θα εμφανίσει 'Λειτουργία χαιρετισμού'
Έτσι, το functools.wraps βοηθά στη διατήρηση των πληροφοριών σχετικά με τη διακοσμημένη λειτουργία, βελτιώνοντας την αναγνωσιμότητα και τη συντήρηση του κώδικα.