Skip to content
Home » மலைப்பாம்பு மொழி 30 – உலகளாவிய உள்ளூர்

மலைப்பாம்பு மொழி 30 – உலகளாவிய உள்ளூர்

ஒரு செயல்பாட்டுக்கு நிரலிலிருந்து உள்ளீடு வழங்கும்போது அதன் எண்ணிக்கையை மாற்றித்தரும் பட்சத்தில் பிழை தோன்றுகிறது அல்லவா? நான்கு அளவுருக்களைக் கொண்டிருக்கும் ஒரு செயல்பாட்டிற்கு ஐந்து உள்ளீடுகளை நாம் நிரலிலிருந்து அனுப்பிக்கொண்டிருக்க முடியாது. இது ஒருவகையில் நிரலாளரை குறிப்பிட்ட ஒரு வரம்பிற்குள் வைப்பதுபோல உள்ளது. இருப்பினும் வரம்பைக் கீழ்க்கண்ட உத்திகளைப் பயன்படுத்தி மீறமுடியும்.

நிரல் 1: மாறும் உள்ளீடுகளைச் செயல்பாட்டிற்கு அனுப்புதல்

நிரலிலிருந்து இருமுறை செயல்பாட்டை அழைத்திருக்கிறோம். முதன்முறை 3 உள்ளீடுகள் மற்றும் இரண்டாம் முறை 4 உள்ளீடுகள் என எண்ணிக்கையை மாற்றித் தந்திருக்கிறோம். இருப்பினும் செயல்பாடு எந்த சலிப்பும் இல்லாமல் இயங்குகிறது, அதற்குக் காரணம் பயன்படுத்தப்பட்டிருக்கும் *args என்கிற அளவுரு. பைத்தானில் இதுவொரு முதன்மைச்சொல் என்பதால் குறிப்பிடப்பட்டிருப்பதைப் போல மட்டுமே பயன்படுத்த முடியும். இந்த உத்தியில் எண்ணிக்கை குறித்த கவலையின்றி உள்ளீடுகளைச் செயல்பாட்டிற்கு சமர்ப்பிக்க இயலும்.

argsன் தரவுவகை மாறா பட்டியல். எனவே for loopன் துணைகொண்டு ஒவ்வொரு உள்ளீடாக அணுகி அதன் மதிப்பைக் கூட்டி நிரலுக்கு அனுப்பி வைக்கிறோம்.

முதல் அழைப்பில் 3 உள்ளீடுகளின் கூட்டுத்தொகை 1+2+3=6. இரண்டாவது அழைப்பில் 4 உள்ளீடுகளின் கூட்டுத்தொகை 4+5+6+7=22.

நிரல் 2: மாறும் முதன்மைச்சொல் அளவுருக்களை உருவாக்குதல்

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

செயல்பாட்டை நிரலிலிருந்து அழைக்கும் வரியை ஒருகணம் கவனியுங்கள். காற்புள்ளிக்கு முன்வருவது ஒரு சாவி, தரவு இணை, அதைப்பெற்றுக்கொண்டு எப்போதும்போல for loopஐ கொண்டு ஒவ்வொரு இணையாக அணுகமுடியும்.

0

காவல் நிலையங்களுக்கு என்று அதிகார வரம்பு இருக்கும். ஒரு புகாரளிக்கச் சென்றால், “இது எங்க எல்லையில வராது. அண்ணா நகர் ஜூரிஸ்டிக்சன். அங்க போங்க” என்று அனுப்பிவைப்பார்கள் இல்லையா? செயல்பாடுகளில் பயன்படுத்தப்படும் அடையாளங்காட்டிகளுக்கும் இதுபோல அதிகாரவரம்பு உண்டு. மல்டிப்ளக்ஸ் தியேட்டர்களில் எடுக்கும் டிக்கெட், அங்கிருக்கும் 4 திரைகளில் ஒன்றுக்கு மட்டும், அதுவும் குறிப்பிட்ட நேரத்திற்கு மட்டும்தான் செல்லும் இல்லையா? கிட்டத்தட்ட அதேதான்.

செயல்பாட்டோடு கூடிய நிரலில் உருவாக்கப்படும் அடையாளங்காட்டிகளை அதன் நோக்கத்தின் அடிப்படையில் இரண்டாகப் பிரிக்கலாம்.

1) உள்ளூருக்கு மட்டும்
2) உலகளாவிய நோக்கம்

அது என்ன உள்ளூர்? உலகளாவிய?

நிரல் 3: உலகளாவிய நோக்கத்திற்காக ஒரு அடையாளங்காட்டியை உருவாக்குதல்

ஒரு அடையாளங்காட்டியை உருவாக்குகிறீர்கள், அது செயல்பாட்டிற்கானது அல்லது நிரலுக்கானதா என்பதை எப்படி வேறுபடுத்திக் காட்டுவது? எளிமையாக ஒரே வரியில் இப்படிச் சொல்லலாம்.

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

இந்நிரலில் x என்ற அடையாளங்காட்டிய உருவாக்கியிருக்கிறோம், அது நிரலுக்கு வெளியே இருக்கிறது. ஆனால் அதன் மதிப்பைச் செயல்பாட்டிற்கு உள்ளே மாற்றுகிறோம், அம்மாற்றம் நிரலுக்கு வெளியேயும் பிரதிபலிக்க வேண்டுமில்லையா? அதுதானே நியாயம். அப்போது தானே அது உலகளாவிய? ஆகவே செயல்பாட்டுக்கு உள்ளே xஐ global என்று சொல்லிவிடுகிறோம். இதன் அர்த்தம் என்ன? குறிப்பிட்ட அந்த அடையாளங்காட்டி ஏற்கனவே நிரலுக்கு வெளியே உருவாக்கப்பட்டு விட்டது. அதன் மதிப்பை மட்டும் தான் செயல்பாட்டிற்கு உள்ளே மாற்றுகிறோம் என்பதை நிரலுக்குத் தெரியப்படுத்துகிறோம்.

உலகளாவிய நோக்கத்திற்காக உருவாக்கப்பட்ட அடையாளங்காட்டிக்கு, நிரலில் ஒருமுறை மட்டுமே கணினியின் மெமரி ஒதுக்கீடு செய்யப்படும்.

நிரலின் வெளியீட்டை ஒருகணம் பார்த்துவிடுங்கள். செயல்பாட்டை அழைப்பதற்கு முன்பும், பின்பும் xன் மதிப்பை அச்சிட்டிருக்கிறோம்.

உலகத்திற்கு ஒன்றென்றால், உள்ளூருக்கு ஒன்று இல்லாமலா போய்விடும்.

நிரல் 4: உள்ளூர் நோக்கத்திற்காக ஒரு அடையாளங்காட்டியை உருவாக்குதல்

போன நிரலுக்கு நேரெதிர் உத்தியை இதில் பயன்படுத்தியிருக்கிறோம். செயல்பாட்டிற்கு வெளியே xஐ உருவாக்கி அதன் மதிப்பாக 10ஐ ஒதுக்கீடு செய்து தந்திருக்கிறோம். ஆக இதன் நோக்கம் உலகலாவியது, இப்போது செயல்பாடு அழைக்கப்படுகிறது. அதனுள்ளே மீண்டும் x என்ற பெயரில் ஒரு அடையாளங்காட்டி உருவாக்கப்படுகிறது.

இப்போது ஒரு எளிமையான கேள்வி, அதன் நோக்கம் உள்ளூரா? உலகளாவியதா?

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

நிரலின் xற்கும், செயல்பாட்டின் xற்கும் நிரலில் தனித்தனியே கணினியில் மெமரி செல்கள் உருவாக்கப்பட்டிருக்கும். இதனை உறுதிசெய்ய நிரலின் வெளியீட்டை ஒருகணம் பாருங்கள், xன் மதிப்பு செயல்பாட்டை அழைப்பதற்கு முன்பும் பின்பும் அச்சிடப்பட்டிருக்கிறது.

0

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

நிரல் 5: அநாமதேய செயல்பாட்டை உருவாக்குதல்

0

சரத்தில் ஏற்கனவே பார்த்த நிரல்களை அப்படியே செயல்பாட்டைப் பயன்படுத்தி எழுதிப் பார்ப்போம்.

நிரல் 6: ஒரு சரத்தை அனுப்பி அதன் தலைகீழ் வடிவத்தை அச்சிடுதல்

“Python” என்ற சரத்தைச் செயல்பாட்டிற்கு அனுப்பி for loopன் மூலம் அதன் ஒவ்வொரு உறுப்பாக எடுத்து, புதிதாக உருவாக்கப்பட்டுள்ள அடையாளங்காட்டியின் இறுதியில் இணைக்கப்படும். ஒவ்வொரு செய்கையின் முடிவிலும் பின்வருமாறு முடிவுகள் அமைந்திருக்கும்.

“P”+””
“y”+”P”
“t”+”yP”
“h”+”tyP”
“o”+”htyP”
“n”+”ohtyP”
“nohtyP”

நிரல் 7: பாலின்ட்றோமா என்பதைக் கண்டறிதல்

ஒரு வாக்கியத்தைச் செயல்பாட்டிற்கு அனுப்பி அதன் தலைகீழ் வடிவமும், மூலச்சரமும் ஒன்றாக இருக்கும் பட்சத்தில் “ஆம்”, பாலின்றோம் தான் என்று அச்சிடுகிறோம். முதலில் சரத்தின் அனைத்து உறுப்புகளையும் சிறிய எழுத்துக்களாக மாற்றி, அதன் இடைவெளிகளை அழித்தபிறகு எதிர்மறை குறியீட்டு எண்களின் மூலம் சரத்தைத் தலைகீழாக்கி, ஒப்பிட்டுப் பார்த்து முடிவை அச்சிடுகிறோம்.

நிரல் 8: இரண்டு சரங்களின் உறுப்புகளை ஒப்பிடுதல்

“listen”,”silent” ஆகிய 2 சரங்களுமே ஒரே உறுப்புகளைக் கொண்டுதான் உருவாக்கப்பட்டு இருக்கின்றன. அதை ஒரு செயல்பாட்டின் மூலம் உறுதிசெய்து கொள்கிறோம். அவை சிறிய எழுத்துக்களாக மாற்றப்பட்டு பிறகு அகரவரிசையில் சீரமைக்கப்படுகின்றன. இப்போது இரண்டு சரங்களையும் ஒப்பிட்டுப் பார்த்து முடிவினை அச்சிடுகிறோம்.

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

(தொடரும்)

பகிர:
ரிஷிகேஷ் ராகவேந்திரன்

ரிஷிகேஷ் ராகவேந்திரன்

நாமக்கல் மாவட்டம் இராசிபுரத்தை அடுத்த புதுப்பாளையம் என்னும் கிராமத்தைச் சேர்ந்தவர். தொழில்நுட்பத் துறை சார்ந்து தொடர்ந்து எழுதிவருபவர். இவர் எழுதிய ‘தமிழ் ராக்கர்ஸ் தோற்றமும் மறைவும்‘ என்னும் மின்னூல் பரவலான கவனத்தைப் பெற்றது. ரூபியா ரிஷி என்ற பெயரில் புனைவுகள் எழுதி வருகிறார்.View Author posts

பின்னூட்டம்

Your email address will not be published. Required fields are marked *