பைதான் – 10

6.4 Package

பைதான் மாடியூல்களில் பலரும் பங்களிக்கும் போது ஒரே variable அல்லது function பெயரை பலரும் உருவாக்கும் நிலை நேரிடலாம். அப்போது ஏற்படும் பெரும் குழப்பத்தை தவிர்க்க packageஎன்ற முறை பயன்படுகிறது.

‘dotted module name’ அதாவது ‘பெயர்களை புள்ளி மூலம் பிரித்தல்’ என்ற முறையால், பல்வேறு பெயர்களை எளிதாக கையாள முடியும். உதாரணமாக A.Bஎன்பது Aஎன்ற package-ல் உள்ள B என்ற மாடியூலை குறிக்கிறது. இவ்வாறு பல மாடியூல்களை ஒரே package-ல் சேர்க்க முடியும். இதனால் global variable nameஅல்லது பிறர் பயன்படுத்தும் name பற்றி கவலை இல்லாமல், நமக்கு தேவையான பெயர்களை நமது package-க்குள் பயன்படுத்தலாம்.

Numpy, python Imaging Libraryபோன்றவை பல்வேறு மாடியூல்களை கொண்ட packages. இவற்றை package-ஆக பயன்படுத்துவதால், பெயர் குழப்பம் அறவே தவிர்க்கப்படுகிறது.

ஒரு உதாரணத்தை பார்ப்போம். இப்போது நீங்கள் sound file மற்றும் sound dataபற்றிய ஒரு மென்பொருளை எழுதுகிறீர்கள். இதில் .wov, .aiff, .au, .mp3 போன்ற பல வகையான sound file-களை பயன்படுத்தலாம். Mixing, echo, equlizer, stereo effect என பலவகை effect-களையும் சேர்க்கலாம். ஒரு வகை file-ல் இருந்து வேறு வகை file-ஆகவும் மாற்றலாம்.
இதற்கு ஒவ்வொரு செயலுக்கும் ஒரு மாடியூல் எழுதுவோம். அவை அனைத்தையும் sound என்ற ஒரு package-ஆக அமைக்கலாம்.

sound/                          Top-level package
      __init__.py               Initialize the sound package
      formats/                  Subpackage for file format conversions
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  Subpackage for sound effects
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      filters/                  Subpackage for filters
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
              ...

 

Package-ஐ import செய்யும்போது, sys.path-ல் உள்ள directory மற்றும் அவற்றின் subdirectory-களிலும் தேடுகிறது.

ஒரு directory-ஐ ஒரு package-ஆக கருத –init–.pyஎன்ற file பயன்படுகிறது. பொதுவான வார்த்தைகளான stringஎன்று ஒரு file-ன் பெயர் இருந்தால், –init–.pyஆனது, இதனால் ஏற்படும் குழப்பத்தை தவிர்க்கிறது. இது காலியான empty file-ஆக கூட இருக்கலாம்; அல்லது package-க்கு தேவையான ஆரம்ப நிரலாக இருக்கலாம்; அல்லது –all–என்ற variable-ஐ பற்றி கூறலாம்.

ஒரு package-ல் இருந்து மாடியூல்களை நமது தேவைக்கேற்றபடி தனியாக கூட import செய்யலாம். உதாரணம்.

import sound.effects.echo

 

இது sound.effects.echo என்ற துணை மாடியூலை (sub module) மட்டும் import செய்கிறது. அதன் முழுப்பெயரை வைத்து மட்டுமே பயன்படுத்த வேண்டும்.

sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

 

 

இன்னொரு வழியிலும் இதை import செய்யலாம்.
from sound.effects import echo

இதுவும் echo என்ற sub module-ஐ import செய்கிறது. ஆனால் package-ன் prefix இல்லாமல், தனியாகவே பயன்படுத்தலாம்.

echo.echofilter(input, output, delay=0.7, atten=4)

இவை மட்டுமின்றி, நமக்கு தேவையான function-ஐ மட்டும் கூட தனியாக செய்து கொள்ளலாம்.
from sound.effects.echo import echofilter

 

இது echo என்ற sub module-ஐ import செய்கிறது. ஆனால் echofilter() என்ற function-ஐ நேரடியாக பயன்படுத்த முடியும்.

 echofilter(input, output, delay=0.7, atten=4)

 

from package import item. இதை பயன்படுத்தும்போது, item என்பது sub module, sub package, function, class அல்லது variableஎன இருக்கலாம்.

import ஆனது ite, defineசெய்யப்பட்டுள்ளதா என ஆராய்கிறது; இல்லையெனில் அது ஒரு module எனக் கருதி load செய்ய முயல்கிறது. செய்ய முடியவில்லை என்றால் import exception என்ற பிழைச் செய்தி கிடைக்கிறது.

மேலும் import item.subitem.subsubitemஎன பயன்படுத்தும்போது, கடைசி item தவிர மற்றது எல்லாம் ஒரு package-ஆக மட்டுமே இருக்க வேண்டும். கடைசி item-ஆனது ஒரு package அல்லது module-ஆக இருக்கலாம். ஆனால் class அல்லது functionஅல்லது variable-ஆக இருக்கக் கூடாது.

            தொடரும்

%d bloggers like this: