محمداحمد
لائبریرین
Function Design Recipe
پائتھون میں یوں تو فنکشن عمومی انداز میں بھی بنایا جا سکتا ہے، تاہم فنکشن بنانے کے لئے اگر باقاعدہ طریقہ کار استعمال کیا جائے تو اس سے فنکشن بنانے میں آسانی بھی ہوتی ہے اور یہ فنکشن روا روی میں بنے فنکشن سے بہتر ہوتا ہے۔
اس recipe کی مدد سے ایک فنکشن درج ذیل چھ مرحلوں میں بنایا جائے گا۔
ان مراحل کو سمجھنے کے لئے ہم ایک ایسا فنکشن بنائیں گے جو دو نمبر پیرامیٹر بطور input لے گا اور اُن کی اوسط (Average) ریٹرن کرے گا۔ مثلاً اگر ہم پہلا نمبر 40 اور دوسرا 60 دیتے ہیں تو یہ فنکشن ہمیں ان دونوں کی اوسط یعنی 50 ریٹرن کرے گا۔
1 ۔ مثالیں (Example) :
پہلے مرحلے میں ہم ایسی مثالیں بنائیں گے جو فنکشن کال اور اس کے مطلوبہ نتیجے کو ظاہر کرے گی۔ ہماری مطلوبہ فنکشن کی مثالیں کچھ یوں ہوں گی۔
کوڈ:
>>> average(20,30)
25.0
>>> average(40,60)
50.0
2۔ ٹائپ کونٹریکٹ (Type Contract)
ٹائپ کونٹریکٹ ہمیں یہ بتاتا ہے کہ فنکشن پیرامیٹرز میں کس ٹائپ کی ویلو لے گا اور فنکشن کے اختتام پر کس ٹائپ کی ویلیو ریٹرن ہوگی۔ ہماری مثال میں یہ input کے طور پر نمبر ویلیوز لے گا اور جواب میں فلوٹ ویلیو ریٹرن کرے گا۔ (نمبر ٹائپ میں integer اور float دونوں شامل ہیں جبکہ تقسیم کے عمل کے نتیجے میں ہمیشہ float ویلیو حاصل ہوگی)
اب ٹائپ کونٹریکٹ کے اضافے کے ساتھ ہمارا فنکشن کچھ ایسا لگے گا۔
کوڈ:
(number, number ) -> float
>>> average(20,30)
25.0
>>> average(40,60)
50.0
3۔ ہیڈر (Header)
فنکشن ڈیزائن ریسیپی کا تیسرا مرحلہ ہیڈر لکھنا ہے۔ یعنی فنکشن اور پیرامیٹر زکے بامعنی (جہاں تک ممکن ہو ) نام رکھنا۔
ہم نےمثال میں فنکشن کا نام average رکھا ہے پیرامیٹرز num1 اور num2 دئے ہیں۔
ہیڈر سمیت فنکشن کچھ ایسا لگے گا۔
کوڈ:
def average(num1,num2):
'''
(number, number ) -> float
>>> average(20,30)
25.0
>>> average(40,60)
50.0
'''
4۔ تفصیل / وضاحت (Description )
چوتھے مرحلے میں ہم فنکشن کی ڈسکرپشن دیں گے کہ یہ فنکش کیا کام کرتا ہے۔
اب فنکشن کچھ یوں ہوجائے گا۔
PHP:
def average(num1,num2):
'''
This function takes two number parameters and return thier average value.
(number, number ) -> float
>>> average(20,30)
25.0
>>> average(40,60)
50.0
'''
5۔ فنکشن باڈی (Function Body)
اس مرحلے میں ہم آخر کار فنکشن کی باڈی بنائیں گے یا مطلوبہ کمانڈز لکھیں گے۔
فنکشن باڈی سمیت اب ہمارا فنکشن کچھ ایسا لگے گا۔
PHP:
def average(num1,num2):
'''
This function takes two number parameters and return thier average value.
(number, number ) -> float
>>> average(20,30)
25.0
>>> average(40,60)
50.0
'''
return (num1+num2)/2
اب ہمارا فنکشن تو تیار ہوگیا ہے لیکن آخری مرحلہ ابھی باقی ہے اور وہ ہے Test.
6۔ فنکشن کی جانچ Test:
فنکشن ٹیسٹ کرنے کے لئے ہم فنکشن کو رن کریں گے اور اپنی مثالوں کو شیل پر کاپی کرکے رن کریں گے اگر شیل ہماری مثالوں کے مطابق جواب دے تو اس کا مطلب یہ ہوا کہ ہمارا فنکشن ٹھیک کام کر رہا ہے، اگر نہیں تو ہم اپنے فنکشن ، خاص طور پر فنکشن باڈی کو پھر سے دیکھیں گے اور مطلوبہ / ممکنہ تبدیلیاں کریں گے۔ اسی طرح ٹرائل اینڈ ایرر بیس پر مستقل کام کرنے پر جب ہمارا فنکشن مثالوں کے عین مطابق جواب دینے لگے تو سمجھ لیں کہ فنکشن بالکل ٹھیک بن گیا ہے۔
یہ تھی فنکشن ڈیزائن ریسیپی۔
-------------
فنکشن کی docstring میں آپ جو بھی کچھ لکھیں گے وہ تفصیلات آپ یا کوئی اور فنکشن استعمال کرنے والا help کے ذریعے جان سکے گا اور اسے فنکشن استعمال کرنے میں آسانی رہے گی۔
مثلاً اس فنکشن کا نام اگر ہم help میں لکھیں گے تو ہمیں درج ذیل نتائج حاصل ہوں گے۔
PHP:
>>> help(average)
Help on function average in module __main__:
average(num1, num2)
This function takes two number parameters and return thier average value.
(number, number ) -> float
>>> average(20,30)
25.0
>>> average(40,60)
50.0
>>>
یہی معلومات آپ کو فنکش لکھتے ہوئے hint میں بھی مل جائیں گی۔