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