سبق Modules

اگر ایک یا ایک سے زائد فنکشن کو بار بار استعمال کرنا ہو تو اسے بجائے ہر پروگرام میں دوبارہ لکھنے کے ایک علیحدہ ماڈیول (module) میں لکھ کر محفوظ کر لیتے ہیں اور پھر اس ماڈیول (module) کے ڈیٹا اور فنکشن کو استعمال کیا جا سکتا ہے دوسرے پروگرام میں۔

عمومی طور پر یہ وہ طریقہ کار ہوتا ہے جس میں مہارتوں کو چھوٹی چھوٹی اکائیوں میں تبدیل کر کے محفوظ کر لیا جاتا ہے اور پھر انہیں حسب ضرورت استعمال کر لیا جاتا ہے۔ پروگرامنگ میں خصوصا یہ طریقہ کار اور ڈیٹا اسٹرکچر (Data structure ) کا ایک مجموعہ ہوتا ہے جو ایک خاص فعل سر انجام دیتا ہے یا کوئی خاص تجریدی (abstract) ڈیٹا ٹائپ (data type) کو لاگو کرتا ہے۔

جو کوڈ منطقی اعتبار سے ایک جگہ رکھنے کی ضرورت ہو اسے ماڈیول میں لکھ کر محفوظ کر لیا جاتا ہے تاکہ کوڈ سمجھنے اور استعمال کرنے میں آسانی ہو۔سادہ زبان میں ماڈیول ایک فائل ہوتی ہے جو پائتھون کوڈ پر مشتمل ہوتی ہے۔ ایک ماڈیول میں کئی فنکشن ، کلاس اور متغیر ہو سکتے ہیں۔

چند مشہور اور کارآمد ماڈیول

Date and Time

OS Module
 
ویسے تو
ماڈیول (​
module​
) لکھنے کے کئی طریقے ہیں مگر سب سے آسان ہے کسی فائل میں فنکشن اور متغیر کو لکھ کر اسے py. توسیع (​
extension​
) کے ساتھ محفوظ کر لیا جائے۔​
ماڈیول (module) اس زبان میں بھی لکھا جا سکتا ہے جس میں خود پائتھون انٹرپریٹر (interpreter) لکھا گیا ہے یعنی C programming language۔ ماڈیول لکھنے اور کمپائل کرنے کے بعد امپورٹ کرکے پائتھون کوڈ میں استعمال کیا جا سکتا ہے۔​

ماڈیول (module) کو امپورٹ کیا جا سکتا ہے اور ہم اسی طرح معیاری لائبریری (standard library ) کو استعمال کرتے ہیں۔​

PHP:
import sys
 
print('The command line arguments are:')
for i in sys.argv:
    print(i)
 
print('The PYTHON PATH is', sys.path, '\n')
 
 
The command line arguments are:
module1
The PYTHONPATH is ['C:\\Program Files\\PyScripter\\Lib\\rpyc.zip', 'C:\\windows\\system32\\python32.zip', 'C:\\Python32\\DLLs', 'C:\\Python32\\lib', 'C:\\Python32', 'C:\\Python32\\lib\\site-packages']
 
اس کوڈ میں سب سے پہلے تو ہم نے sys ماڈیول کو درآمد کیا ہے import بیان استعمال کرکے جو کہ پائتھون انٹرپریٹر (interpreter) کو بتاتا ہے کہ ہم اس ماڈیول کو استعمال کرنا چاہتے ہیں۔
sys ماڈیول میں پائتھون انٹرپریٹر (interpreter) اور اس کے ماحول (environment) سے متعلقہ مفید معلومات فنکشن اور متغیر کی شکل میں موجود ہوتی ہے۔
یہ ماڈیول چونکہ پائتھون کے ساتھ ہی آتا ہے اس لیے اسے ڈھونڈنے میں انٹرپریٹر (interpreter) کو کوئی مشکل نہیں ہوتی اور اسے پتہ ہوتا ہے کہ یہ کہاں سے ملے گا۔ اگر کوئی ماڈیول کمپائل شدہ نہیں ہے یعنی پائتھون میں لکھا گیا ہے تو پائتھون اسے sys.path متغیر میں مذکور ڈائریکٹریوں میں ڈھونڈے گا ۔ اگر ماڈیول مل جاتا ہے تو اس میں موجود بیانات کو چلایا جاتا ہے اور وہ ماڈیول استعمال کے لیے مہیا ہو جاتا ہے۔ پہلی دفعہ ماڈیول کو درآمد کرتے ہوئے اسے initialize کیا جاتا ہے اس کے بعد اس کی ضرورت نہیں پڑتی۔

argv متغیر تک رسائی کے لیے sys کے بعد ڈاٹ لگایا جاتا ہے جس سے ظاہر ہوتا ہے کہ یہ sys ماڈیول کا حصہ ہے اور یہ ایک اور namespace(حدود اسم) کا حصہ ہے ۔ sys.argv اسٹرنگ کی ایک لسٹ ہے جو کہ کمانڈ لائن دلائل (command line arguments ) پر مشتمل ہوتی ہے ایسے دلائل جو کہ پروگرام کو کمانڈ لائن سے بھیجے جاتے ہیں۔

sys.path میں تمام ڈائریکٹریوں کے نام ہیں جہاں سے ماڈیول کو درآمد کیا گیا ہے ۔
 
ماڈیول (module) کو مکمل بھی درآمد کیا جا سکتا ہے اور اس کے مخصوص فنکشن اور حصوں کو بھی۔

PHP:
from math import sqrt

اس میں ہم math کے ماڈیول سے صرف sqrt کا فنکشن امپورٹ کر رہے ہیں جبکہ ہم چاہیں تو ایک سے زائد فنکشن یا پورا ماڈیول بھی درآمد کر سکتے ہیں۔

کوڈ:
from math import sqrt, pi
 
>>>math.sqrt(4)
2
 
>>>math.pi
3.1415926535897931
 
Locating Module
جب ہم کوئی ماڈیول امپورٹ کرتے ہیں تو پائتھون انٹرپریٹر (interpreter) مندرجہ ذیل ترتیب سے اسے ڈھونڈنے کی کوشش کرتا ہے
موجودہ ڈائریکٹری میں

اگر موجودہ ڈائریکٹری میں نہ ملے تو پھر PYTHONPATH نامی شیل متغیر (shell variable) میں موجود ہر ڈائریکٹری میں


اگر کسی میں بھی نہ ملے تو پھر ڈیفالٹ path میں ڈھونڈتا ہے جو آپریٹنگ سسٹم کے لحاظ سے مختلف ہوتا ہے
 
PYTHONPATH variable
PYTHONPATH ایک ماحولیاتی متغیر (environmental variable) ہے جس میں تمام ڈائریکٹریوں کی لسٹ موجود ہوتی ہے۔ اسے اس طرح سے سیٹ کیا جا سکتا ہے

PHP:
#In Windows
set PYTHONPATH=C:\Python32

#In Linux
set PYTHONPATH=/usr/local/lib/python
 
آخری تدوین:
dir function

ڈائریکٹری فنکشن (dir ) کی مدد سے ہم پتہ کر سکتے ہیں کہ کسی بھی ماڈیول میں کون کون سے فنکشن ، متغیر (variable) اور کلاسیں موجود ہیں۔ اگر فنکشن کو کسی ماڈیول کا نام دیا جائے تو اس میں موجود تمام فنکشن اور ناموں کی لسٹ فراہم کر دیتا ہے اور اگر بغیر کسی ماڈیول کے نام کے اسے چلایا جائے تو موجودہ ماڈیول میں موجود فنکشن اور دیگر ناموں کی فہرست مل جاتی ہے۔

PHP:
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__s
tderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_g
etframe', '_mercurial', '_xoptions', 'api_version', 'argv', 'builtin_module_name
s', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllha
ndle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executab
le', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'get
defaultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'g
etrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion',
'hash_info', 'hexversion', 'int_info', 'intern', 'maxsize', 'maxunicode', 'meta_
path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'pref
ix', 'ps1', 'ps2', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setsw
itchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version',
'version_info', 'warnoptions', 'winver']
 
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'sys']
 
Packages
پروگرام کو کس طرح طبقاتی طور پر منظم کرنا ہے اس کے لیے پیکج کا استعمال کیا جاتا ہے۔
متغیر عموما کسی فنکشن کے اندر جگہ پاتے ہیں۔
فنکشن اور گلوبل متغیر ماڈیول کے اندر ہوتے ہیں۔
اور اگر کئی ماڈیول ہو اور انہیں ترتیب دینا ہو تو اسے پیکج کی ضرورت پڑتی ہے۔

پیکج کو ایک ماڈیول کا ایک فولڈر سمجھا جا سکتا ہے جس میں ایک خاص فائل __init__.py پائتھون کو یہ بتاتی ہے کہ یہ فولڈر خاص ہے کیونکہ اس میں ماڈیول موجود ہیں۔
معیاری لائبریری میں ہمیں ماڈیول اور پیکج کی بہت سی مثالیں دیکھنے کو ملتی ہیں۔

اگر ہمیں ایک پیکج دنیا بنانا ہو اور اس میں ذیلی پیکج ایشیا اور افریقہ بنانے ہوں اور پھر ان میں ماڈیول انڈیا ، مڈگاسکر ہو تو کچھ ایسا نقشہ ہوگا فولڈر کا۔

کوڈ:
  - world/
          - __init__.py
          - asia/
              - __init__.py
              - india/
                  - __init__.py
                  - foo.py
          - africa/
              - __init__.py
              - madagascar/
                  - __init__.py
                  - bar.py

ایک اور مثال ساؤنڈ ڈیٹا اور فائلوں کی پیکج کے حوالے سے مندرجہ ذیل ہے

PHP:
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
              ...
 
Top