$lang['tuto'] = "سبق"; ?> ازگر میں فنکشن ڈیکوریٹرز بنانا

ازگر میں فنکشن ڈیکوریٹرز بنانا اور زنجیر بنانا

ازگر میں فنکشن ڈیکوریٹرز بنانا اور زنجیر بنانا
ازگر میں فنکشن ڈیکوریٹرز بنانا اور زنجیر بنانا

ڈیکوریٹرز کے ساتھ ازگر کے افعال کو بڑھانا

Python میں، decorators افعال یا طریقوں کے رویے کو تبدیل کرنے کے لیے ایک طاقتور ٹول ہیں۔ وہ ڈویلپرز کو ایک صاف اور پڑھنے کے قابل انداز میں موجودہ فنکشن کے گرد اضافی فعالیت کو لپیٹنے کی اجازت دیتے ہیں۔ ڈیکوریٹر بنانے اور چین کرنے کے طریقے کو سمجھ کر، آپ اپنے کوڈ کی ماڈیولریٹی اور پڑھنے کی اہلیت کو بہت زیادہ بڑھا سکتے ہیں۔

یہ مضمون دو مخصوص ڈیکوریٹر بنانے کے عمل میں آپ کی رہنمائی کرے گا: ایک متن کو بولڈ بنانے کے لیے اور دوسرا متن کو ترچھا بنانے کے لیے۔ ہم یہ بھی دکھائیں گے کہ مطلوبہ پیداوار حاصل کرنے کے لیے ان ڈیکوریٹروں کو کس طرح زنجیر بنایا جائے۔ اس ٹیوٹوریل کے اختتام تک، آپ ایک سادہ فنکشن کو کال کر سکیں گے اور بولڈ اور اٹالک HTML ٹیگز دونوں کے ساتھ فارمیٹ شدہ سٹرنگ حاصل کر سکیں گے۔

کمانڈ تفصیل
def ازگر میں ایک فنکشن کی وضاحت کرتا ہے۔
f"<b>{func()}</b>" فنکشن کی واپسی کی قدر کو بولڈ HTML ٹیگز میں لپیٹنے کے لیے f-string فارمیٹنگ کا استعمال کرتا ہے۔
return wrapper اندرونی ریپر فنکشن کو لوٹاتا ہے، مؤثر طریقے سے ڈیکوریٹر بناتا ہے۔
@make_bold میک_بولڈ ڈیکوریٹر کو فنکشن پر لاگو کرتا ہے۔
@add_html_tag("i") add_html_tag ڈیکوریٹر کو فنکشن میں "i" ٹیگ کے ساتھ لاگو کرتا ہے۔
print(say()) کہے فنکشن کا نتیجہ پرنٹ کرتا ہے، سجا ہوا آؤٹ پٹ دکھاتا ہے۔
def add_html_tag(tag) حسب ضرورت ایچ ٹی ایم ایل ٹیگ ڈیکوریٹر بنانے کے لیے اعلیٰ ترتیب کے فنکشن کی وضاحت کرتا ہے۔
@add_html_tag("b") add_html_tag ڈیکوریٹر کو "b" ٹیگ کے ساتھ فنکشن پر لاگو کرتا ہے۔

ازگر فنکشن ڈیکوریٹرز کو سمجھنا

فراہم کردہ اسکرپٹس یہ ظاہر کرتی ہیں کہ فنکشنز کے رویے کو تبدیل کرنے کے لیے Python میں فنکشن ڈیکوریٹرز کو کیسے بنایا جائے اور ان کو چین کیا جائے۔ Python میں ایک ڈیکوریٹر کا استعمال کرتے ہوئے تعریف کی گئی ہے۔ def ایک فنکشن بنانے کے لیے کلیدی لفظ جو کسی دوسرے فنکشن کو بطور دلیل لیتا ہے اور ایک نیا فنکشن لوٹاتا ہے۔ دی make_bold ڈیکوریٹر اس فنکشن کے نتیجے کو لپیٹتا ہے جسے وہ ایف سٹرنگ فارمیٹنگ کا استعمال کرتے ہوئے ایچ ٹی ایم ایل بولڈ ٹیگز کے ساتھ سجاتا ہے: f"<b>{func()}</b>". اسی طرح، د make_italic ڈیکوریٹر نتیجہ کو ترچھا ٹیگز میں لپیٹتا ہے: f"<i>{func()}</i>". جب یہ ڈیکوریٹر استعمال کرتے ہوئے کسی فنکشن پر لاگو ہوتے ہیں۔ @decorator_name نحو، وہ متعلقہ HTML ٹیگز کو شامل کرکے فنکشن کے آؤٹ پٹ میں ترمیم کرتے ہیں۔

دوسرا اسکرپٹ ایک اعلیٰ ترتیب فنکشن بنا کر زیادہ ورسٹائل اپروچ متعارف کراتا ہے، add_html_tag، جو کسی بھی مخصوص HTML ٹیگ کے لیے ڈیکوریٹر تیار کرتا ہے۔ یہ فنکشن ایک HTML ٹیگ کو بطور دلیل لیتا ہے اور ایک ڈیکوریٹر واپس کرتا ہے جو فنکشن کے آؤٹ پٹ کو مخصوص ٹیگ میں لپیٹ دیتا ہے: f"<{tag}>{func()}</{tag}>". کا استعمال کرتے ہوئے @add_html_tag("b") اور @add_html_tag("i")، ہم ان ڈیکوریٹرز کو زنجیر کر سکتے ہیں تاکہ آؤٹ پٹ کو لپیٹ سکیں say_hello بولڈ اور اٹالک ٹیگ دونوں میں فنکشن، جس کے نتیجے میں مطلوبہ "ہیلویہ مثالیں صاف اور دوبارہ قابل استعمال طریقے سے فنکشن رویے کو بڑھانے اور اپنی مرضی کے مطابق بنانے میں Python ڈیکوریٹرز کی طاقت اور لچک کو واضح کرتی ہیں۔

Python میں ڈیکوریٹرز کو لاگو کرنا اور چین کرنا

ڈیکوریٹر بنانے اور زنجیر بنانے کے لیے ازگر کا اسکرپٹ

def make_bold(func):
    def wrapper():
        return f"<b>{func()}</b>"
    return wrapper

def make_italic(func):
    def wrapper():
        return f"<i>{func()}</i>"
    return wrapper

@make_bold
@make_italic
def say():
    return "Hello"

print(say())

پائتھون ڈیکوریٹرز کا استعمال کرتے ہوئے ایچ ٹی ایم ایل ٹیگز بنانا

فنکشن میں ترمیم اور ایچ ٹی ایم ایل ٹیگنگ کے لیے ازگر کا اسکرپٹ

def add_html_tag(tag):
    def decorator(func):
        def wrapper():
            return f"<{tag}>{func()}</{tag}>"
        return wrapper
    return decorator

@add_html_tag("b")
@add_html_tag("i")
def say_hello():
    return "Hello"

print(say_hello())

ایڈوانسڈ ازگر ڈیکوریٹر تکنیک

سادہ فنکشن میں ترمیم کے علاوہ، Python ڈیکوریٹر کوڈ کو دوبارہ استعمال کرنے اور برقرار رکھنے کی صلاحیت کو بڑھانے کا ایک طاقتور طریقہ پیش کرتے ہیں۔ ایک جدید ترین استعمال کا معاملہ پیرامیٹرائزڈ ڈیکوریٹر ہے، جو ڈیکوریٹروں کو دلائل قبول کرنے کی اجازت دیتا ہے۔ اس تکنیک کو کے ساتھ واضح کیا گیا تھا۔ add_html_tag پچھلی مثالوں میں ڈیکوریٹر۔ ایک ڈیکوریٹر کی وضاحت کرتے ہوئے جو دوسرے ڈیکوریٹروں کو تیار کرتا ہے، ہم انتہائی لچکدار اور دوبارہ قابل استعمال کوڈ ڈھانچے بنا سکتے ہیں۔ پیرامیٹرائزڈ ڈیکوریٹر ہمیں خود ڈیکوریٹر کو پیرامیٹرز منتقل کرنے کے قابل بناتے ہیں، جس سے کام کے رویے میں متحرک اور سیاق و سباق سے متعلق مخصوص تبدیلیاں کی جاسکتی ہیں۔

ڈیکوریٹرز کا ایک اور اہم پہلو فنکشن میٹا ڈیٹا کو برقرار رکھنے کی ان کی صلاحیت ہے۔ جب کسی فنکشن کو ڈیکوریٹر کے ذریعے لپیٹ دیا جاتا ہے، تو اس کا میٹا ڈیٹا، جیسے کہ اس کا نام اور ڈاکسٹرنگ، ضائع ہو سکتا ہے۔ اس میٹا ڈیٹا کو محفوظ رکھنے کے لیے، Python's functools.wraps ڈیکوریٹر کے اندر استعمال کیا جاتا ہے۔ درخواست دے کر @functools.wraps ریپر فنکشن میں، اصل فنکشن کے میٹا ڈیٹا کو کاپی کیا جاتا ہے، اس بات کو یقینی بناتے ہوئے کہ اس میٹا ڈیٹا پر انحصار کرنے والے ٹولز، جیسے کہ دستاویزی جنریٹر، صحیح طریقے سے کام کرتے رہیں۔ مزید برآں، ڈیکوریٹرز کو اسٹیک کیا جا سکتا ہے، جیسا کہ کے ساتھ دکھایا گیا ہے۔ @make_bold اور @make_italic مثالیں، ایک صاف اور پڑھنے کے قابل انداز میں رویے میں ترمیم کی متعدد پرتوں کو لاگو کرنا۔

Python Decorators کے بارے میں عام سوالات

  1. ازگر میں ڈیکوریٹر کیا ہے؟
  2. ڈیکوریٹر ایک فنکشن ہے جو کسی دوسرے فنکشن کے رویے کو تبدیل کرتا ہے، عام طور پر دوبارہ قابل استعمال انداز میں فعالیت کو شامل کرنے کے لیے استعمال ہوتا ہے۔
  3. آپ کسی فنکشن میں ڈیکوریٹر کیسے لگاتے ہیں؟
  4. آپ کا استعمال کرتے ہوئے ڈیکوریٹر لگاتے ہیں۔ @decorator_name فنکشن کی تعریف سے بالکل اوپر نحو۔
  5. کیا آپ ایک فنکشن میں ایک سے زیادہ ڈیکوریٹر لگا سکتے ہیں؟
  6. ہاں، ایک سے زیادہ ڈیکوریٹرز کو ایک فنکشن کے اوپر اسٹیک کیا جا سکتا ہے، ہر ایک کو اس ترتیب سے لاگو کیا جاتا ہے جس ترتیب سے وہ درج ہیں۔
  7. پیرامیٹرائزڈ ڈیکوریٹر کیا ہے؟
  8. ایک پیرامیٹرائزڈ ڈیکوریٹر ایک ڈیکوریٹر ہے جو دلائل لیتا ہے، زیادہ متحرک اور لچکدار ترمیم کی اجازت دیتا ہے۔
  9. ڈیکوریٹر استعمال کرتے وقت آپ فنکشن کے میٹا ڈیٹا کو کیسے برقرار رکھتے ہیں؟
  10. تم استعمال کرتے ہو @functools.wraps اصل فنکشن کے میٹا ڈیٹا کو ریپر فنکشن میں کاپی کرنے کے لیے ڈیکوریٹر کے اندر۔
  11. ڈیکوریٹر کیوں مفید ہیں؟
  12. ڈیکوریٹر کوڈ کے دوبارہ استعمال، پڑھنے کی اہلیت، اور فعالیت کو سمیٹ کر خدشات کو الگ کرنے کے لیے مفید ہیں۔
  13. کا مقصد کیا ہے return wrapper ڈیکوریٹر میں بیان؟
  14. دی return wrapper ڈیکوریٹر کی ترمیمات کو مؤثر طریقے سے لاگو کرتے ہوئے، بیان اندرونی فعل کو لوٹاتا ہے۔
  15. کیا سجاوٹ کو کلاس کے طریقوں پر استعمال کیا جا سکتا ہے؟
  16. ہاں، ڈیکوریٹرز کو ان کے رویے میں ترمیم کرنے کے لیے کلاس اور مثال کے طریقوں دونوں پر استعمال کیا جا سکتا ہے۔
  17. آپ Python میں ڈیکوریٹرز کی زنجیر کیسے بناتے ہیں؟
  18. سجاوٹ کو زنجیر بنانے کے لیے، متعدد اسٹیک کریں۔ @decorator_name فنکشن کی تعریف کے اوپر بیانات۔
  19. ڈیکوریٹرز میں f-strings کا استعمال کیا ہے؟
  20. F-strings کا استعمال ڈیکوریٹرز میں سٹرنگز کی فارمیٹنگ کے لیے کیا جاتا ہے، جس سے فنکشن آؤٹ پٹ کو مخصوص فارمیٹس، جیسے کہ HTML ٹیگز میں متحرک داخل کیا جا سکتا ہے۔

Python میں فنکشن ڈیکوریٹرز کا خلاصہ

Python میں فنکشن ڈیکوریٹر فنکشن رویے میں ترمیم اور اضافہ کرنے کے لیے ایک مضبوط طریقہ پیش کرتے ہیں۔ یہ سمجھ کر کہ کیسے بنایا جائے، لاگو کیا جائے، اور چین ڈیکوریٹر، آپ اپنے کوڈ کی ماڈیولریٹی اور پڑھنے کی اہلیت کو نمایاں طور پر بہتر بنا سکتے ہیں۔ اس گائیڈ میں ضروری تصورات کا احاطہ کیا گیا ہے جیسے سادہ اور پیرامیٹرائزڈ ڈیکوریٹر، فنکشن میٹا ڈیٹا کو محفوظ کرنا functools.wraps، اور فنکشن آؤٹ پٹس میں HTML ٹیگ شامل کرنے کے لیے ڈیکوریٹرز کی عملی ایپلی کیشنز۔ ان تکنیکوں میں مہارت زیادہ متحرک اور برقرار رکھنے کے قابل کوڈ کو قابل بناتی ہے، کلینر اور زیادہ موثر پروگرامنگ کے طریقوں کی سہولت فراہم کرتی ہے۔