الفرق بين المراجعتين لصفحة: «Python/functools/wraps»

من موسوعة حسوب
إضافة الصّفحة
 
لا ملخص تعديل
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدالة <code>functools.wraps()‎</code> في بايثون}}</noinclude>
<noinclude>{{DISPLAYTITLE:الدالة <code>functools.wraps()‎</code> في بايثون}}</noinclude>
تُستعمل الدّالة <code>functools.wraps()‎</code> كمُزخرف لاستعمال الدّالة <code>functools.update_wrapper()‎</code>  عند تعريف دالّة مُحيطة.
تُستعمل الدّالة <code>functools.wraps()‎</code> كمُزخرف لاستعمال الدّالة <code>[[Python/functools/update wrapper|functools.update_wrapper()‎]]</code>  عند تعريف دالّة مُحيطة.


الدّالة مُكافئة للدالة الجزئية النّاتجة عن الاستدعاء التالي (انظر الدّالة <code>functools.partial()‎</code>):
الدّالة مُكافئة للدالة الجزئية النّاتجة عن الاستدعاء التالي (انظر الدّالة <code>[[Python/functools/partial|functools.partial()]]‎</code>):
<syntaxhighlight lang="python3">
<syntaxhighlight lang="python3">
partial(update_wrapper, wrapped=wrapped, assigned=assigned, updated=updated)
partial(update_wrapper, wrapped=wrapped, assigned=assigned, updated=updated)

المراجعة الحالية بتاريخ 20:16، 1 يوليو 2018

تُستعمل الدّالة functools.wraps()‎ كمُزخرف لاستعمال الدّالة functools.update_wrapper()‎ عند تعريف دالّة مُحيطة.

الدّالة مُكافئة للدالة الجزئية النّاتجة عن الاستدعاء التالي (انظر الدّالة functools.partial()):

partial(update_wrapper, wrapped=wrapped, assigned=assigned, updated=updated)

البنية العامة

@functools.wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)

المعاملات

wrapped

الدّالة المُحاطة.

assigned

الخاصيّات التي ستُعيّن.

updated

الخاصيّات التي ستُحدّث.

القيمة المعادة

تُحدّث دالّة مُحيطةً لتبدوَ مثل الدّالة المُحاطة.

أمثلة

المثال التّالي يوضّح كيفيّة عمل هذه الدّالة:

>>> from functools import wraps
>>> def my_decorator(f):
...     @wraps(f)
...     def wrapper(*args, **kwds):
...         print('استدعاء الدالة الدّالة المُزخرَفة')
...         return f(*args, **kwds)
...     return wrapper
...
>>> @my_decorator
... def example():
...     """Docstring"""
...     print('مثال على دالّة مُزخرَفة')
...
>>> example()
استدعاء الدالة الدّالة المُزخرَفة
مثال على دالّة مُزخرَفة
>>> example.__name__ # اسم الدّالة
'example'
>>> example.__doc__ # سلسلة التوثيق النصية
'Docstring'

لو لم نستعمل الدّالة functools.wraps()‎ لكان اسم الدّالة هو ‎'wrapper'‎ عوضًا عن ‎'example'‎‎ ولفقدنا سلسلة التوثيق النصيّة.

انظر أيضًا

مصادر