TN Online Testசமச்சீர் கல்விப் பயிற்சி

பைத்தான் செயற்கூறுகள்: ஒரு மதிப்பெண் வினாக்கள், புத்தக வினா விடைகள் மற்றும் குறிப்புகள்

12ஆம் வகுப்பு · கணினி அறிவியல் · #7

செயற்கூறு என்பது ஒரே வேலையைச் செய்யும், மீண்டும் மீண்டும் அழைக்கக்கூடிய, பெயரிடப்பட்ட குறிமுறைத் தொகுதி. இந்தப் பாடத்தில் பயனர் வரையறுக்கும், உள்ளிணைந்த, லாம்டா, தற்சுழற்சி செயற்கூறுகள், நான்கு வகைச் செயலுருபுகள், global சிறப்புச் சொல்லுடன் உள்ளமை மற்றும் உலகளாவிய வரையெல்லை, செயற்கூறு சேர்ப்பு, பொதுவான உள்ளிணைந்த மற்றும் math தொகுதிச் செயற்கூறுகள் ஆகியவை இந்தப் பாடத்தில் விளக்கப்படுகின்றன.

இந்தப் பாடத்தைப் படியுங்கள்

முந்தைய பொதுத் தேர்வுகளில் கேட்கப்பட்டவை

இந்தப் பாடத்திலிருந்து 6 வினாக்கள் 6 முந்தைய பொதுத் தேர்வுகளில் கேட்கப்பட்டன. விடையையும் விளக்கத்தையும் காண எந்த வினாவையும் திறக்கவும்.

  1. மார்ச் 2026
    தன்னைத்தானே அழைத்துக்கொள்ளும் செயற்கூறை __________ என அழைப்பர்.
    விடையுடன் வினாத்தாளில் பார் →
  2. மார்ச் 2025
    எந்த சிறப்பு சொல் செயற்கூறு தொகுதியை முடித்து வைக்கிறது?
    விடையுடன் வினாத்தாளில் பார் →
  3. மார்ச் 2023
    தன்னைத்தானே அழைத்துக்கொள்ளும் செயற்கூறு __________.
    விடையுடன் வினாத்தாளில் பார் →
  4. மே 2022
    எந்த செயற்கூறு பெயரில்லா செயற்கூறு என்று அழைக்கப்படுகிறது ?
    விடையுடன் வினாத்தாளில் பார் →
  5. துணைத் தேர்வு 2021
    எந்த சிறப்புச்சொல் செயற்கூறு தொகுதியை முடித்து வைக்கிறது ?
    விடையுடன் வினாத்தாளில் பார் →
  6. மார்ச் 2020
    பின்வரும் செயற்கூற்றை மதிப்பீடு செய்து அதன் வெளியீட்டை எழுதுக.
    x=14.4
    print(math.floor(x))
    விடையுடன் வினாத்தாளில் பார் →

பைத்தான் செயற்கூறுகள் பற்றி

நடுத்தரம் ~90 நிமிடப் படிப்பு

ஒரே பத்து வரிகள் ஐந்து இடங்களில் தேவைப்பட்டால், அவற்றை ஐந்து முறை தட்டச்சு செய்யக் கூடாது. அவற்றை ஒருமுறை ஒரு செயற்கூறில் (Function) வைத்து, அதற்குப் பெயரிட்டு, தேவையான இடத்தில் அழைக்கலாம். செயற்கூறுகள் நிரலைச் சுருக்கமாகவும், படிக்க எளிதாகவும், திருத்த எளிதாகவும் ஆக்குகின்றன. ஏனெனில் ஓர் இடத்தில் செய்யும் திருத்தம், அந்தச் செயற்கூறு பயன்படும் எல்லா இடங்களுக்கும் பொருந்தும்.

பாடம் படிப்படியாக நகர்கிறது. முதலில் def கொண்டு செயற்கூறை வரையறுத்து அழைக்கிறீர்கள். பிறகு செயலுருபுகள் வழியாகத் தரவு எப்படி உள்ளே செல்கிறது என்று பார்க்கிறீர்கள்: தேவைப்படும், சிறப்புச்சொல், இயல்பிருப்பு, மாறும் நீளச் செயலுருபுகள். மதிப்புகள் செயற்கூறுகளுக்குள் வந்து போகத் தொடங்கியதும், ஒரு மாறியை எங்கே பயன்படுத்தலாம் என்ற கேள்வி எழுகிறது. அது உள்ளமை, உலகளாவிய வரையெல்லைக்கு இட்டுச் செல்கிறது. பிற செயற்கூறுகளை அழைக்கும் செயற்கூறுகள் (சேர்ப்பு), தன்னைத்தானே அழைக்கும் செயற்கூறுகள் (தற்சுழற்சி) ஆகியவற்றுடன் பாடம் முடிகிறது.

ஓர் அழைப்பில் உள்ள செயலுருபு வகையை அடையாளம் காண்பது, உள்ளமை மாறியும் உலகளாவிய மாறியும் ஒரே பெயரில் இருக்கும்போது வெளியீட்டைக் கணிப்பது, காரணியப் பெருக்கம் போன்ற தற்சுழற்சி செயற்கூறைப் பின்தொடர்வது போன்ற வினாக்களை எதிர்பாருங்கள். abs(), ord(), chr(), round(), math.ceil() போன்ற உள்ளிணைந்த செயற்கூறுகள் பற்றிய சிறு வினாக்களும் அடிக்கடி வரும்.

நீங்கள் கற்பவை

  • def கொண்டு செயற்கூறை வரையறுத்து அழைத்தல்; return மூலம் மதிப்பைத் திருப்பி அனுப்புதல்.
  • தேவைப்படும், சிறப்புச்சொல், இயல்பிருப்பு, மாறும் நீளச் செயலுருபுகளை அடையாளம் கண்டு பயன்படுத்துதல்.
  • எளிய லாம்டா செயற்கூறுகளை எழுதி filter() அல்லது map() உடன் பயன்படுத்துதல்.
  • உள்ளமை, உலகளாவிய மாறிகள் ஒரே பெயரில் இருக்கும்போது வெளியீட்டைக் கணித்தல்; global சிறப்புச் சொல்லைச் சரியாகப் பயன்படுத்துதல்.
  • abs(), ord(), chr(), round() போன்ற உள்ளிணைந்த செயற்கூறுகளையும், math தொகுதியின் sqrt(), ceil(), floor() ஐயும் பயன்படுத்துதல்.
  • சரியான அடிப்படை நிபந்தனையுடன் காரணியப் பெருக்கம் போன்ற தற்சுழற்சி செயற்கூறுகளை எழுதுதல்.

தொடங்குவதற்கு முன்

  • பைத்தான் மாறிகள், செயற்குறிகள், தரவு வகைகள்.
  • if கூற்றுகள், while மற்றும் for மடக்குகள்.
  • பைத்தானில் தொகுதிகளுக்கான உள்தள்ளல் விதிகள்.

இந்த அத்தியாயத்தில் உள்ள தலைப்புகள்

பயனர் வரையறுக்கும் செயற்கூறுகள் def, ஒரு பெயர், அடைப்புக்குறிக்குள் அளபுருக்கள், உள்தள்ளிய உடல், விருப்பத் தேர்வான return கூற்று கொண்டு நீங்கள் எழுதும் செயற்கூறுகள்.
தேவைப்படும் மற்றும் சிறப்புச்சொல் செயலுருபுகள் தேவைப்படும் செயலுருபுகள் அளபுருக்களுடன் வரிசையிலும் எண்ணிக்கையிலும் பொருந்த வேண்டும். சிறப்புச்சொல் செயலுருபுகள் அளபுருவின் பெயரைக் குறிப்பிடுவதால் வரிசை முக்கியமில்லை.
இயல்பிருப்பு மற்றும் மாறும் நீளச் செயலுருபுகள் மதிப்பு அனுப்பப்படாதபோது இயல்பிருப்புச் செயலுருபு வரையறையில் உள்ள மதிப்பை எடுக்கிறது. நட்சத்திரக் குறி கொண்ட அளபுரு எத்தனை மதிப்புகளையும் ஒரு டூபுளில் சேகரிக்கிறது.
லாம்டா செயற்கூறுகள் lambda கொண்டு உருவாக்கப்படும் பெயரில்லாச் செயற்கூறுகள். எத்தனை செயலுருபுகளையும் பெற்று, ஒரே கோவையின் மதிப்பைத் தருகின்றன.
உள்ளமை மற்றும் உலகளாவிய வரையெல்லை உள்ளமை மாறிகள் அவற்றை உருவாக்கும் செயற்கூறுக்குள் மட்டுமே வாழ்கின்றன. உலகளாவிய மாறிகள் எல்லாச் செயற்கூறுகளுக்கும் வெளியே வரையறுக்கப்பட்டு எங்கும் தெரிகின்றன.
global சிறப்புச் சொல் செயற்கூறுக்குள் செய்யும் அறிவிப்பு. இதனால் செயற்கூறு புதிய உள்ளமை மாறியை உருவாக்காமல் உலகளாவிய மாறியையே மாற்றுகிறது.
தற்சுழற்சியும் அடிப்படை நிபந்தனையும் சிறிய உள்ளீட்டில் தன்னைத்தானே அழைக்கும் செயற்கூறு. fact(0) = 1 போன்ற அடிப்படை நிலை அழைப்புகளை நிறுத்துகிறது.

பைத்தான் செயற்கூறுகள் — விரிவான விளக்கம்

பைத்தானில் செயற்கூறுகளை எழுதுதலும் பயன்படுத்துதலும்

செயற்கூறை வரையறுத்தலும் அழைத்தலும்

செயற்கூறு def சிறப்புச் சொல்லால் வரையறுக்கப்படுகிறது. அதைத் தொடர்ந்து செயற்கூறின் பெயர், அளபுருக்களைக் கொண்ட அடைப்புக்குறிகள், ஒரு முக்காற்புள்ளி வருகின்றன. உடல் அதற்குக் கீழே உள்தள்ளி எழுதப்படுகிறது. return கூற்று அழைத்த இடத்துக்கு ஒரு மதிப்பைத் திருப்பி அனுப்புகிறது. return இல்லையென்றாலோ, return உடன் கோவை இல்லையென்றாலோ செயற்கூறு None ஐத் தருகிறது. area(5) போல செயற்கூறை அழைக்கும்போது கட்டுப்பாடு உடலுக்குள் செல்கிறது; உடல் முடிந்ததும் அழைத்த கூற்றுக்குத் திரும்புகிறது.

செயலுருபுகளின் வகைகள்

பாடநூல் நான்கு வகைகளைத் தருகிறது. தேவைப்படும் செயலுருபுகள் (Required Arguments) அளபுருக்களின் அதே வரிசையிலும் அதே எண்ணிக்கையிலும் அனுப்பப்படுகின்றன. சிறப்புச்சொல் செயலுருபுகள் (Keyword Arguments) அழைப்பிலேயே அளபுருவின் பெயரைக் குறிப்பிடுகின்றன; எ.கா. show(name="Ravi"). எனவே வரிசை முக்கியமில்லை. இயல்பிருப்புச் செயலுருபுகள் (Default Arguments) அழைப்பவர் அவற்றை விட்டுவிட்டால், def info(name, salary=3500) போல வரையறையில் தரப்பட்ட மதிப்பை எடுத்துக்கொள்கின்றன. மாறும் நீளச் செயலுருபுகள் (Variable-Length Arguments) def printnos(*nos) போல நட்சத்திரக் குறியைப் பயன்படுத்துகின்றன; கூடுதல் மதிப்புகள் அனைத்தும் ஒரு டூபுளில் சேகரிக்கப்படுகின்றன.

பெயரில்லா (lambda) செயற்கூறுகள்

லாம்டா செயற்கூறுக்குப் பெயர் இல்லை; def க்குப் பதிலாக lambda சிறப்புச் சொல்லால் உருவாக்கப்படுகிறது. அது எத்தனை செயலுருபுகளையும் பெறலாம்; ஆனால் ஒரே ஒரு கோவை மட்டுமே கொண்டிருக்கும்; அந்தக் கோவையின் மதிப்பு திருப்பித் தரப்படும். எ.கா. sum = lambda arg1, arg2: arg1 + arg2 என்று எழுதினால், sum(30, 40) மூலம் 70 பெறலாம். லாம்டா செயற்கூறுகள் பெரும்பாலும் filter(), map(), reduce() உடன் பயன்படுத்தப்படுகின்றன.

மாறிகளின் வரையெல்லை

வரையெல்லை என்பது ஒரு மாறியைப் பயன்படுத்தக்கூடிய நிரலின் பகுதி. உள்ளமை (Local) மாறி செயற்கூறுக்குள் உருவாக்கப்படுகிறது; அந்தச் செயற்கூறு இயங்கும் வரை மட்டுமே இருக்கும்; வெளியே பயன்படுத்த முடியாது. உலகளாவிய (Global) மாறி எல்லாச் செயற்கூறுகளுக்கும் வெளியே உருவாக்கப்படுகிறது; அதை எங்கும் படிக்கலாம். ஒரு செயற்கூறு அதே பெயருள்ள மாறிக்கு மதிப்பிருத்தினால், பைத்தான் அதைப் புதிய உள்ளமை மாறியாகக் கருதுகிறது. செயற்கூறுக்குள் இருந்து உலகளாவிய மாறியை மாற்ற, முதலில் global x என அறிவியுங்கள்.

உள்ளிணைந்த மற்றும் கணிதச் செயற்கூறுகள்

பைத்தான் ஆயத்தச் செயற்கூறுகளைத் தருகிறது. abs() தனி மதிப்பைத் தருகிறது; ord() ஓர் எழுத்தின் Unicode மதிப்பைத் தருகிறது; chr() அதன் தலைகீழைச் செய்கிறது; bin() முழு எண்ணின் இரும வடிவத்தைத் தருகிறது; type() தரவு வகையைத் தருகிறது. min(), max(), sum(), round(), pow() ஆகியவையும் உள்ளிணைந்தவை. sqrt(), ceil(), floor() போன்ற செயற்கூறுகள் math தொகுதியைச் சேர்ந்தவை. எனவே import math என்று எழுதி, math.sqrt(49) என அழைக்க வேண்டும்.

சேர்ப்பும் தற்சுழற்சியும்

சேர்ப்பில் (Composition), ஒரு செயற்கூறு தரும் மதிப்பு நேரடியாக இன்னொரு செயற்கூறுக்கு அனுப்பப்படுகிறது; எ.கா. int(input()). தற்சுழற்சி செயற்கூறு (Recursive Function) அதே கணக்கின் சிறிய வடிவத்தைத் தீர்க்கத் தன்னைத்தானே அழைக்கிறது. காரணியப் பெருக்கம் வழக்கமான எடுத்துக்காட்டு: fact(n) ஆனது n * fact(n-1) ஐத் தருகிறது; fact(0) 1 ஐத் தருகிறது. அந்தக் கடைசி நிலையே அடிப்படை நிபந்தனை. அது இல்லையென்றால் அழைப்புகள் நிற்காது; அழைப்பு ஆழம் அதன் வரம்பை (இயல்பாக 1000) தாண்டியதும் பைத்தான் RecursionError தரும்.

தவிர்க்க வேண்டிய பொதுவான தவறுகள்

  • அளபுருக்களையும் செயலுருபுகளையும் குழப்புதல். அளபுருக்கள் def வரியில் உள்ள பெயர்கள்; செயலுருபுகள் அழைப்பில் தரப்படும் உண்மையான மதிப்புகள்.
  • அறிவிக்காமல் செயற்கூறுக்குள் உலகளாவிய மாறிக்கு மதிப்பிருத்துதல். அப்போது பைத்தான் அதை உள்ளமையாகக் கருதுகிறது; மதிப்பிருத்தும் முன் பயன்படுத்தினால் UnboundLocalError வரும். செயற்கூறின் தொடக்கத்தில் global x என்று எழுதுங்கள்.
  • greet() என்பதற்குப் பதிலாக greet என்று எழுதுதல். அடைப்புக்குறிகள் இல்லாவிட்டால் செயற்கூறு அழைக்கப்படாது; செயற்கூறுப் பொருளை மட்டுமே குறிப்பிடுகிறீர்கள்.
  • அடிப்படை நிபந்தனை இல்லாமல் தற்சுழற்சி செயற்கூறு எழுதுதல். பைத்தான் RecursionError தரும் வரை அது தன்னைத்தானே அழைத்துக்கொண்டே இருக்கும்.
  • def, class, return போன்ற ஒதுக்கப்பட்ட சிறப்புச் சொற்களைச் செயற்கூறின் பெயராகப் பயன்படுத்துதல். இது SyntaxError தரும்.

இவற்றை பயிற்சித் தேர்வு மூலம் சோதித்துப் பாருங்கள்; பிறகு விடையுடன் கூடிய வினாக்கள் பகுதியில் விரிவான விளக்கத்தைப் படியுங்கள்.

அடிக்கடி கேட்கப்படும் கேள்விகள்

அளபுருவுக்கும் செயலுருபுக்கும் என்ன வேறுபாடு?

அளபுரு என்பது செயற்கூறு வரையறையில் எழுதப்படும் மாறிப் பெயர்; def fact(n) இல் உள்ள n போல. செயலுருபு என்பது செயற்கூறை அழைக்கும்போது அனுப்பப்படும் உண்மையான மதிப்பு; fact(5) இல் உள்ள 5 போல. அழைப்பு நடக்கும்போது அளபுரு செயலுருபின் மதிப்பைப் பெறுகிறது.

செயற்கூறுக்குள் உலகளாவிய மாறியை எப்படி மாற்றுவது?

செயற்கூறுக்குள் நீங்கள் மதிப்பிருத்தும் எந்த மாறியும் இயல்பாக உள்ளமை மாறி. அதற்குப் பதிலாக உலகளாவிய மாறியை மாற்ற, செயற்கூறு உடலின் தொடக்கத்தில் global என்று எழுதி அதன் பெயரை எழுதுங்கள்; எ.கா. global c. அதன் பிறகு c க்குச் செய்யும் மதிப்பிருத்தல்கள் உலகளாவிய மாறியை மாற்றும்.

return உடன் மதிப்பு இல்லையென்றால் செயற்கூறு எதைத் தரும்?

return செயற்கூறை முடித்து, கட்டுப்பாட்டை அழைத்த இடத்துக்குத் திருப்பி அனுப்புகிறது. அதைத் தொடர்ந்து கோவை இல்லையென்றாலோ, செயற்கூறில் return கூற்றே இல்லையென்றாலோ, செயற்கூறு None ஐத் தரும்.

def க்குப் பதிலாக லாம்டா செயற்கூறை எப்போது பயன்படுத்த வேண்டும்?

ஒரே கோவையில் அடங்கும் சிறிய செயலுக்கு lambda பயன்படுத்துங்கள்; குறிப்பாக அதை நேரடியாக filter(), map() அல்லது reduce() க்கு அனுப்பும்போது. தருக்கத்துக்குப் பல கூற்றுகள், மடக்குகள் அல்லது docstring தேவைப்பட்டால் def கொண்டு வழக்கமான செயற்கூறு எழுதுங்கள்.

என் தற்சுழற்சி செயற்கூறு ஏன் RecursionError தருகிறது?

நிறுத்தும் நிலையை அடையாமல் செயற்கூறு தன்னைத்தானே அழைத்துக்கொண்டே இருக்கிறது. அடிப்படை நிபந்தனை இல்லாமல் இருக்கலாம், அல்லது செயலுருபு அதை நோக்கி நகராமல் இருக்கலாம்; எ.கா. fact(n-1) க்குப் பதிலாக fact(n) ஐ அழைப்பது. அழைப்பு ஆழம் தற்சுழற்சி வரம்பை (இயல்பாக 1000) தாண்டும்போது பைத்தான் நிரலை நிறுத்துகிறது.

எத்தனை செயலுருபுகளையும் ஏற்கும் செயற்கூறை எப்படி எழுதுவது?

def printnos(*nos) என்பது போல அளபுருவின் பெயருக்கு முன் நட்சத்திரக் குறியை இடுங்கள். அழைப்பில் அனுப்பப்படும் எல்லா மதிப்புகளும் nos என்ற டூபுளில் சேகரிக்கப்படுகின்றன; அதை for மடக்கு மூலம் ஒவ்வொன்றாக அணுகலாம்.

கடைசியாகப் புதுப்பிக்கப்பட்டது 17 செப்டெம்பர் 2026

கணினி அறிவியல் பாடத்தின் மற்ற பாடங்கள்

அனைத்தையும் பார்க்க
1 செயற்கூறு 2 தரவு அருவமாக்கம் 3 வரையெல்லை 4 நெறிமுறையின் யுத்திகள் 5 பைத்தான் அறிமுகம்—மாறிகள் மற்றும் செயற்குறிகள் 6 கட்டுப்பாட்டுக் கட்டமைப்புகள் 8 சரங்கள் மற்றும் சரங்களைக் கையாளுதல் 9 (List, Tuples, Set மற்றும் Dictionary) தொகுப்பு தரவினங்கள் 10 பைத்தான் இனக்குழுக்கள் மற்றும் பொருள்கள் 11 தரவுதள கருத்துருக்கள் 12 வினவல் அமைப்பு மொழி (SQL) 13 பைத்தான் மற்றும் CSV கோப்புகள் 14 பைத்தானில் C++ நிரல்களை தருவித்தல் 15 SQL மூலம் தரவுகளைக் கையாளுதல் 16 தரவுக் காட்சிப்படுத்துதல்: PYPLOT பயன்படுத்தி – கோட்டு வரைபடம், வட்ட வரைபடம் மற்றும் பட்டை வரைபடம் உருவாக்குதல்