Sobes.tech
Junior — Middle

Python-ში დეკორატორების შექმნისას functools.wraps-ის როლი რა არის?

sobes.tech AI

პასუხი AI-სგან

functools.wraps ფუნქცია გამოიყენება 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 ეხმარება შენარჩუნდეს ინფორმაცია დეკორირებულ ფუნქციაზე, რაც აუმჯობესებს კოდის წაკითხვას და შენარჩუნებას.