الفرق بين المراجعتين ل"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'‎‎ ولفقدنا سلسلة التوثيق النصيّة.

انظر أيضًا

مصادر