പൈത്തണിൽ ഫംഗ്‌ഷൻ ഡെക്കറേറ്ററുകൾ സൃഷ്‌ടിക്കുകയും ചെയിൻ ചെയ്യുകയും ചെയ്യുന്നു

പൈത്തണിൽ ഫംഗ്‌ഷൻ ഡെക്കറേറ്ററുകൾ സൃഷ്‌ടിക്കുകയും ചെയിൻ ചെയ്യുകയും ചെയ്യുന്നു
പൈത്തണിൽ ഫംഗ്‌ഷൻ ഡെക്കറേറ്ററുകൾ സൃഷ്‌ടിക്കുകയും ചെയിൻ ചെയ്യുകയും ചെയ്യുന്നു

ഡെക്കറേറ്ററുകൾ ഉപയോഗിച്ച് പൈത്തൺ പ്രവർത്തനങ്ങൾ മെച്ചപ്പെടുത്തുന്നു

പൈത്തണിൽ, ഫംഗ്‌ഷനുകളുടെ അല്ലെങ്കിൽ രീതികളുടെ സ്വഭാവം പരിഷ്‌ക്കരിക്കുന്നതിനുള്ള ശക്തമായ ഉപകരണമാണ് ഡെക്കറേറ്ററുകൾ. നിലവിലുള്ള ഒരു ഫംഗ്‌ഷനിൽ വൃത്തിയുള്ളതും വായിക്കാൻ കഴിയുന്നതുമായ രീതിയിൽ അധിക പ്രവർത്തനക്ഷമത പൊതിയാൻ അവ ഡവലപ്പർമാരെ അനുവദിക്കുന്നു. ഡെക്കറേറ്ററുകൾ എങ്ങനെ സൃഷ്ടിക്കാമെന്നും ചെയിൻ ചെയ്യാമെന്നും മനസിലാക്കുന്നതിലൂടെ, നിങ്ങളുടെ കോഡിൻ്റെ മോഡുലാരിറ്റിയും റീഡബിലിറ്റിയും നിങ്ങൾക്ക് വളരെയധികം വർദ്ധിപ്പിക്കാൻ കഴിയും.

രണ്ട് പ്രത്യേക ഡെക്കറേറ്ററുകൾ നിർമ്മിക്കുന്ന പ്രക്രിയയിലൂടെ ഈ ലേഖനം നിങ്ങളെ നയിക്കും: ഒന്ന് ടെക്‌സ്‌റ്റ് ബോൾഡ് ആക്കാനും മറ്റൊന്ന് ടെക്‌സ്‌റ്റ് ഇറ്റാലിക് ആക്കാനും. ആവശ്യമുള്ള ഔട്ട്‌പുട്ട് നേടുന്നതിന് ഈ ഡെക്കറേറ്റർമാരെ എങ്ങനെ ചങ്ങലയിലാക്കാമെന്നും ഞങ്ങൾ കാണിക്കും. ഈ ട്യൂട്ടോറിയലിൻ്റെ അവസാനത്തോടെ, നിങ്ങൾക്ക് ഒരു ലളിതമായ ഫംഗ്‌ഷനിലേക്ക് വിളിക്കാനും ബോൾഡ്, ഇറ്റാലിക് HTML ടാഗുകൾ ഉള്ള ഫോർമാറ്റ് ചെയ്‌ത സ്ട്രിംഗ് സ്വീകരിക്കാനും കഴിയും.

കമാൻഡ് വിവരണം
def പൈത്തണിൽ ഒരു ഫംഗ്ഷൻ നിർവചിക്കുന്നു.
f"<b>{func()}</b>" ബോൾഡ് HTML ടാഗുകളിൽ ഫംഗ്‌ഷൻ്റെ റിട്ടേൺ മൂല്യം പൊതിയാൻ f-string ഫോർമാറ്റിംഗ് ഉപയോഗിക്കുന്നു.
return wrapper ആന്തരിക റാപ്പർ ഫംഗ്ഷൻ നൽകുന്നു, ഫലപ്രദമായി ഡെക്കറേറ്റർ സൃഷ്ടിക്കുന്നു.
@make_bold ഒരു ഫംഗ്‌ഷനിലേക്ക് make_bold ഡെക്കറേറ്റർ പ്രയോഗിക്കുന്നു.
@add_html_tag("i") ഒരു ഫംഗ്‌ഷനിലേക്ക് "i" ടാഗ് ഉള്ള add_html_tag ഡെക്കറേറ്റർ പ്രയോഗിക്കുന്നു.
print(say()) സേ ഫംഗ്‌ഷൻ്റെ ഫലം പ്രിൻ്റ് ചെയ്യുന്നു, അലങ്കരിച്ച ഔട്ട്‌പുട്ട് പ്രദർശിപ്പിക്കുന്നു.
def add_html_tag(tag) ഇഷ്‌ടാനുസൃതമാക്കാവുന്ന HTML ടാഗ് ഡെക്കറേറ്റർ സൃഷ്‌ടിക്കുന്നതിന് ഉയർന്ന ഓർഡർ ഫംഗ്‌ഷൻ നിർവചിക്കുന്നു.
@add_html_tag("b") ഒരു ഫംഗ്‌ഷനിലേക്ക് "b" ടാഗ് ഉള്ള add_html_tag ഡെക്കറേറ്റർ പ്രയോഗിക്കുന്നു.

പൈത്തൺ ഫംഗ്‌ഷൻ ഡെക്കറേറ്ററുകൾ മനസ്സിലാക്കുന്നു

ഫംഗ്‌ഷനുകളുടെ സ്വഭാവം പരിഷ്‌ക്കരിക്കുന്നതിന് പൈത്തണിൽ ഫംഗ്‌ഷൻ ഡെക്കറേറ്ററുകൾ എങ്ങനെ സൃഷ്‌ടിക്കാമെന്നും ചെയിൻ ചെയ്യാമെന്നും നൽകിയിരിക്കുന്ന സ്‌ക്രിപ്റ്റുകൾ കാണിക്കുന്നു. പൈത്തണിലെ ഒരു ഡെക്കറേറ്റർ എന്നത് ഉപയോഗിച്ചാണ് നിർവചിച്ചിരിക്കുന്നത് def മറ്റൊരു ഫംഗ്‌ഷൻ ഒരു ആർഗ്യുമെൻ്റായി എടുക്കുകയും ഒരു പുതിയ ഫംഗ്‌ഷൻ നൽകുകയും ചെയ്യുന്ന ഒരു ഫംഗ്‌ഷൻ സൃഷ്‌ടിക്കാനുള്ള കീവേഡ്. ദി make_bold f-string ഫോർമാറ്റിംഗ് ഉപയോഗിച്ച് HTML ബോൾഡ് ടാഗുകൾ ഉപയോഗിച്ച് അലങ്കരിക്കുന്ന ഫംഗ്‌ഷൻ്റെ ഫലം ഡെക്കറേറ്റർ പൊതിയുന്നു: 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 ബോൾഡ്, ഇറ്റാലിക് ടാഗുകളിൽ പ്രവർത്തിക്കുക, ആവശ്യമുള്ളത് "ഹലോ". ഈ ഉദാഹരണങ്ങൾ ശുദ്ധവും പുനരുപയോഗിക്കാവുന്നതുമായ രീതിയിൽ പ്രവർത്തന സ്വഭാവം മെച്ചപ്പെടുത്തുന്നതിലും ഇഷ്ടാനുസൃതമാക്കുന്നതിലും പൈത്തൺ ഡെക്കറേറ്റർമാരുടെ ശക്തിയും വഴക്കവും വ്യക്തമാക്കുന്നു.

പൈത്തണിൽ ഡെക്കറേറ്ററുകൾ നടപ്പിലാക്കുകയും ചെയിൻ ചെയ്യുകയും ചെയ്യുന്നു

ഡെക്കറേറ്ററുകൾ സൃഷ്ടിക്കുന്നതിനും ചെയിൻ ചെയ്യുന്നതിനുമുള്ള പൈത്തൺ സ്ക്രിപ്റ്റ്

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())

പൈത്തൺ ഡെക്കറേറ്ററുകൾ ഉപയോഗിച്ച് HTML ടാഗുകൾ സൃഷ്ടിക്കുന്നു

ഫംഗ്‌ഷൻ പരിഷ്‌ക്കരണത്തിനും HTML ടാഗിംഗിനും വേണ്ടിയുള്ള പൈത്തൺ സ്‌ക്രിപ്റ്റ്

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())

വിപുലമായ പൈത്തൺ ഡെക്കറേറ്റർ ടെക്നിക്കുകൾ

ലളിതമായ ഫംഗ്‌ഷൻ പരിഷ്‌ക്കരണത്തിനപ്പുറം, പൈത്തൺ ഡെക്കറേറ്ററുകൾ കോഡ് പുനരുപയോഗക്ഷമതയും പരിപാലനവും മെച്ചപ്പെടുത്തുന്നതിനുള്ള ശക്തമായ മാർഗം വാഗ്ദാനം ചെയ്യുന്നു. ഒരു വിപുലമായ ഉപയോഗ കേസ് പാരാമീറ്ററൈസ്ഡ് ഡെക്കറേറ്ററുകളാണ്, ഇത് അലങ്കാരക്കാരെ ആർഗ്യുമെൻ്റുകൾ സ്വീകരിക്കാൻ അനുവദിക്കുന്നു. ഈ സാങ്കേതികവിദ്യ ഉപയോഗിച്ച് ചിത്രീകരിച്ചു add_html_tag മുമ്പത്തെ ഉദാഹരണങ്ങളിൽ അലങ്കാരപ്പണിക്കാരൻ. മറ്റ് ഡെക്കറേറ്ററുകൾ സൃഷ്ടിക്കുന്ന ഒരു ഡെക്കറേറ്റർ നിർവചിക്കുന്നതിലൂടെ, ഞങ്ങൾക്ക് വളരെ വഴക്കമുള്ളതും പുനരുപയോഗിക്കാവുന്നതുമായ കോഡ് ഘടനകൾ സൃഷ്ടിക്കാൻ കഴിയും. പാരാമീറ്ററൈസ്ഡ് ഡെക്കറേറ്ററുകൾ, ഡെക്കറേറ്ററിലേക്ക് തന്നെ പാരാമീറ്ററുകൾ കൈമാറാൻ ഞങ്ങളെ പ്രാപ്തരാക്കുന്നു, പ്രവർത്തന സ്വഭാവത്തിന് ചലനാത്മകവും സന്ദർഭോചിതവുമായ പരിഷ്കാരങ്ങൾ അനുവദിക്കുന്നു.

ഫംഗ്ഷൻ മെറ്റാഡാറ്റ നിലനിർത്താനുള്ള അവരുടെ കഴിവാണ് ഡെക്കറേറ്റർമാരുടെ മറ്റൊരു പ്രധാന വശം. ഒരു ഫംഗ്‌ഷൻ ഒരു ഡെക്കറേറ്റർ പൊതിയുമ്പോൾ, അതിൻ്റെ മെറ്റാഡാറ്റ, അതായത് അതിൻ്റെ പേര്, ഡോക്‌സ്‌ട്രിംഗുകൾ എന്നിവ നഷ്‌ടപ്പെടാം. ഈ മെറ്റാഡാറ്റ സംരക്ഷിക്കാൻ, പൈത്തണിൻ്റെ functools.wraps ഡെക്കറേറ്ററിനുള്ളിൽ ഉപയോഗിക്കുന്നു. അപേക്ഷിച്ചുകൊണ്ട് @functools.wraps റാപ്പർ ഫംഗ്‌ഷനിലേക്ക്, ഒറിജിനൽ ഫംഗ്‌ഷൻ്റെ മെറ്റാഡാറ്റ പകർത്തി, ഡോക്യുമെൻ്റേഷൻ ജനറേറ്ററുകൾ പോലുള്ള ഈ മെറ്റാഡാറ്റയെ ആശ്രയിക്കുന്ന ടൂളുകൾ ശരിയായി പ്രവർത്തിക്കുന്നത് തുടരുന്നുവെന്ന് ഉറപ്പാക്കുന്നു. കൂടാതെ, കൂടെ കാണിച്ചിരിക്കുന്നതുപോലെ ഡെക്കറേറ്ററുകൾ അടുക്കിവെക്കാം @make_bold ഒപ്പം @make_italic ഉദാഹരണങ്ങൾ, പെരുമാറ്റ പരിഷ്ക്കരണത്തിൻ്റെ ഒന്നിലധികം പാളികൾ വൃത്തിയുള്ളതും വായിക്കാവുന്നതുമായ രീതിയിൽ പ്രയോഗിക്കുന്നതിന്.

പൈത്തൺ ഡെക്കറേറ്റർമാരെക്കുറിച്ചുള്ള പൊതുവായ ചോദ്യങ്ങൾ

  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. പൈത്തണിലെ അലങ്കാരപ്പണിക്കാരെ നിങ്ങൾ എങ്ങനെയാണ് ചെയിൻ ചെയ്യുന്നത്?
  18. ചെയിൻ ഡെക്കറേറ്ററുകൾക്കായി, ഒന്നിലധികം അടുക്കുക @decorator_name ഫംഗ്ഷൻ നിർവചനത്തിന് മുകളിലുള്ള പ്രസ്താവനകൾ.
  19. അലങ്കാരപ്പണികളിൽ f-സ്ട്രിംഗുകളുടെ ഉപയോഗം എന്താണ്?
  20. എച്ച്ടിഎംഎൽ ടാഗുകൾ പോലുള്ള നിർദ്ദിഷ്ട ഫോർമാറ്റുകളിലേക്ക് ഫംഗ്‌ഷൻ ഔട്ട്‌പുട്ടുകൾ ഡൈനാമിക് ഇൻസേർട്ട് ചെയ്യാൻ അനുവദിക്കുന്ന ഡെക്കറേറ്ററുകളിൽ സ്ട്രിംഗുകൾ ഫോർമാറ്റ് ചെയ്യുന്നതിന് F-സ്ട്രിംഗുകൾ ഉപയോഗിക്കുന്നു.

പൈത്തണിലെ ഫംഗ്‌ഷൻ ഡെക്കറേറ്ററുകൾ സംഗ്രഹിക്കുന്നു

പൈത്തണിലെ ഫംഗ്‌ഷൻ ഡെക്കറേറ്റർമാർ ഫംഗ്‌ഷൻ സ്വഭാവം പരിഷ്‌ക്കരിക്കുന്നതിനും മെച്ചപ്പെടുത്തുന്നതിനുമുള്ള ശക്തമായ ഒരു രീതി വാഗ്ദാനം ചെയ്യുന്നു. എങ്ങനെ സൃഷ്ടിക്കാം, പ്രയോഗിക്കാം, ചെയിൻ ഡെക്കറേറ്ററുകൾ എങ്ങനെ ചെയ്യാം എന്ന് മനസിലാക്കുന്നതിലൂടെ, നിങ്ങളുടെ കോഡിൻ്റെ മോഡുലാരിറ്റിയും റീഡബിലിറ്റിയും ഗണ്യമായി മെച്ചപ്പെടുത്താൻ നിങ്ങൾക്ക് കഴിയും. ഈ ഗൈഡ് ലളിതവും പാരാമീറ്ററൈസ്ഡ് ഡെക്കറേറ്റർ, ഫംഗ്‌ഷൻ മെറ്റാഡാറ്റ സംരക്ഷിക്കൽ തുടങ്ങിയ അവശ്യ ആശയങ്ങൾ ഉൾക്കൊള്ളുന്നു functools.wraps, കൂടാതെ ഫംഗ്‌ഷൻ ഔട്ട്‌പുട്ടുകളിലേക്ക് HTML ടാഗുകൾ ചേർക്കുന്നതിനുള്ള അലങ്കാരപ്പണികളുടെ പ്രായോഗിക പ്രയോഗങ്ങൾ. ഈ സങ്കേതങ്ങളുടെ വൈദഗ്ദ്ധ്യം കൂടുതൽ ചലനാത്മകവും പരിപാലിക്കാവുന്നതുമായ കോഡ് പ്രാപ്തമാക്കുന്നു, ശുദ്ധവും കൂടുതൽ കാര്യക്ഷമവുമായ പ്രോഗ്രാമിംഗ് സമ്പ്രദായങ്ങൾ സുഗമമാക്കുന്നു.