افعال
اب تک، ہم اپنا تمام کوڈ app.py میں لکھتے رہے ہیں، لیکن جیسے جیسے ہمارے پروگرام بڑھ رہے ہیں، ہمیں اپنے کوڈ کو ترتیب دینے کے لیے ایک بہتر طریقے کی ضرورت ہے۔ ہمیں اپنے کوڈ کو چھوٹے، زیادہ قابل انتظام، اور زیادہ قابل انتظام حصوں میں تقسیم کرنے کی ضرورت ہے جسے ہم فنکشن کہتے ہیں۔ فنکشن کوڈ کی چند لائنوں کا ایک کنٹینر ہے جو ایک مخصوص کام انجام دیتا ہے۔
مثال کے طور پر، آپ Python میں پہلے ہی کچھ بلٹ ان فنکشنز کے بارے میں جان چکے ہیں۔ print()
اور input()
. ہر فنکشن کا ایک مقصد ہوتا ہے اور وہ کسی مخصوص کام کو انجام دینے کا طریقہ جانتا ہے۔ لہذا، جب ہم بڑے پیچیدہ پروگرام بناتے ہیں، تو ہمیں اپنے کوڈ کو دوبارہ استعمال کے قابل چھوٹے حصوں یعنی فنکشنز میں توڑ دینا چاہیے۔
آئیے اس تصور کو مبارکباد کے پیغام کو پرنٹ کرنے کے لیے ایک پروگرام بنا کر سمجھیں۔
print('Hi there!')
print('Welcome aboard!')
یہاں ہمارے پاس ایک سادہ پروگرام ہے جس میں کوڈ کی صرف دو لائنیں ہیں۔ اب، ہم کہتے ہیں، ہمیں دوسرے پروگراموں میں ان کی ضرورت پڑے گی تاکہ انہیں ایک فنکشن میں رکھا جا سکے جسے ہم دوبارہ استعمال کر سکتے ہیں۔
مجھے ایک محفوظ مطلوبہ لفظ متعارف کرانے دو def
Python میں، جو define کے لیے مختصر ہے اور کسی فنکشن کی وضاحت کے لیے استعمال ہوتا ہے۔
def greet_user():
print('Hi there!')
print('Welcome aboard!')
اب کوڈ کا یہ بلاک ایک فنکشن کی وضاحت کرے گا "greet_user
اس کے بعد کوڈز کی لائنوں کے ساتھ۔ جب بھی اس فنکشن کو بلایا جائے گا، ان دو لائنوں کو عمل میں لایا جائے گا۔ آئیے اسے استعمال کریں:
print('start')
greet_user()
print('finish')
پروگرام کو ترتیب وار عمل میں لایا جاتا ہے، یعنی آپ کو کسی فنکشن کو پروگرام میں کال کرنے سے پہلے اس کی وضاحت کرنی ہوگی۔
پیرامیٹر
متعین فنکشنز Python کے بلٹ ان فنکشنز سے تھوڑا سا مختلف کام کرتے ہیں۔ مثال کے طور پر، کے معاملے میں print()
ایک فنکشن، یہ کچھ معلومات لیتا ہے جسے ہم پرنٹ کرنا چاہتے ہیں، لیکن ہمارا سلام فنکشن کوئی معلومات نہیں لیتا ہے۔ کیا یہ اچھا نہیں ہوگا کہ آپ صارف کا نام یہاں پاس کر دیں اور پھر "ہیلو وہاں" کہنے کے بجائے، آپ صارف کا نام پرنٹ کر سکیں؟
آپ متعین فنکشن کے قوسین کے اندر پیرامیٹرز شامل کرکے ایسا کرسکتے ہیں۔ مجھے دکھانے دیجئے:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
اب "name
قوسین کے اندر ایک مقامی متغیر کی طرح کام کرے گا اور ہم اسے کال کرتے وقت صارف کا نام پاس کر سکتے ہیں۔
greet_user('Shahbaz')
اب نام کا پیرامیٹر سیٹ ہے "Shahbaz
" آئیے اس کو استعمال کرنے کے لیے پروگرام کو تبدیل کرتے ہیں۔
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
نوٹ کرنے والی ایک اہم بات یہ ہے کہ پہلی سطر میں "نام" کو پیرامیٹر کہا جاتا ہے جبکہ فراہم کردہ نام یعنی شہباز کو دلیل کہا جاتا ہے۔
آئیے آگے بڑھیں اور اس پروگرام کو چلائیں۔
تو ان پیرامیٹرز کے ساتھ، ہم اپنے افعال میں معلومات حاصل کر سکتے ہیں۔
اب، آئیے کچھ دلچسپ کرتے ہیں۔ فرض کریں کہ آپ مبارکباد کے پیغام میں دوسرا نام شامل کرنا چاہتے ہیں۔ یہ آسان ہے.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
اب نوٹ کریں کہ جب کسی فنکشن کا پیرامیٹر ہوتا ہے تو ہم اس پیرامیٹر کے لیے ایک ویلیو پاس کرنے کے پابند ہوتے ہیں۔ اگر آپ فنکشن سے نام ہٹا کر پروگرام چلاتے ہیں تو ہمیں ایک ایرر آئے گا۔ آپ ایک فنکشن میں متعدد پیرامیٹرز بھی استعمال کر سکتے ہیں، کوما سے الگ کر کے۔
مثال کے طور پر، greet_user(first_name, last_name):
. دلائل کو بھی اسی طرح فارمیٹ کیا جائے گا۔
مطلوبہ الفاظ کے دلائل
اب تک، ہم نے سیکھا ہے کہ جب بھی ہم اپنے فنکشنز کے لیے پیرامیٹرز کی وضاحت کرتے ہیں تو ہمیں ہمیشہ اقدار کی فراہمی کرنی چاہیے ورنہ ہمیں ایک غلطی ہو جائے گی۔ گزشتہ پروگرام میں دلائل 'Shahbaz'
اور 'Bhatti'
پوزیشنی دلائل کہلاتے ہیں، یعنی پروگرام میں ان کی پوزیشن یا ترتیب کے معاملات۔
Python میں، ہمارے پاس ایک اور قسم کی دلیل ہے جسے مطلوبہ الفاظ کے دلائل کہتے ہیں، جس کے لیے پوزیشن سے کوئی فرق نہیں پڑتا۔ میں آپ کو دکھاتا ہوں کہ وہ کیسے کام کرتے ہیں۔
آخری پروگرام دیکھیں۔ ہم اسے اس طرح تبدیل کر سکتے ہیں:
def greet_user(first_name, last_name):
print(f'Hi {first_name} {last_name}')
print('Welcome aboard!')
print('start')
greet_user(first_name='Shahbaz', last_name='Bhatti')
print('finish')
اب first_name
اور last_name
مطلوبہ الفاظ کے پیرامیٹرز ہیں۔ آپ ان کی جگہوں کو تبدیل کر سکتے ہیں اور نتیجہ ایک ہی ہو گا۔
اب اس کا مطلب یہ نہیں ہے کہ ہمیں ہمیشہ مطلوبہ الفاظ کے دلائل کا استعمال کرنا چاہیے۔ زیادہ تر وقت ہم پوزیشنی دلائل استعمال کرتے ہیں، لیکن بعض حالات میں، یہ مطلوبہ الفاظ کے دلائل ہمارے کوڈ کی پڑھنے کی اہلیت کو بہتر بنانے میں ہماری مدد کرتے ہیں۔
مطلوبہ الفاظ کے دلائل کے بارے میں آپ کو ایک اور چیز جاننے کی ضرورت ہے۔ کلیدی الفاظ کے دلائل ہمیشہ پوزیشنی دلائل کے بعد آنے چاہئیں۔
واپسی کا بیان
اب تک ہم نے سیکھا ہے کہ فنکشنز کیسے بنائے جاتے ہیں اور ان کے پیرامیٹرز کا استعمال کرتے ہوئے انہیں معلومات بھیجتے ہیں۔ اب آئیے سیکھتے ہیں کہ ایسے فنکشنز بنانے کا طریقہ جو ویلیو واپس کرتے ہیں۔ یہ خاص طور پر مفید ہے اگر آپ کسی قسم کے حساب کتاب کر رہے ہیں اور آپ نتیجہ اس شخص کو واپس کرنا چاہتے ہیں جو آپ کا فنکشن استعمال کر رہا ہے۔ مجھے دکھانے دیجئے.
آئیے ایک فنکشن کی وضاحت کریں جو ایک عدد کے مربع کا حساب لگائے گا۔
def square(number):
return number*number
ہم نے فنکشن سے باہر اس نمبر کو واپس کرنے کے لیے واپسی کا بیان استعمال کیا ہے۔ اب، اگر ہم اس فنکشن کو کہتے ہیں، تو یہ ایک قدر لوٹاتا ہے جیسے کہ input()
فنکشن آئیے اسے ٹرمینل پر پرنٹ کریں۔
آپ بحث کر سکتے ہیں کہ واپسی کے بیان کا استعمال کیے بغیر بھی وہی نتیجہ حاصل کیا جا سکتا ہے۔ آئیے اسے چیک کریں۔
ہم دو چیزیں دیکھتے ہیں، نمبر 9، اور کوئی نہیں۔ یہاں کیا ہو رہا ہے؟
جب Python انٹرپریٹر اس کوڈ پر عمل کرتا ہے، تو سب سے پہلے یہ مربع فنکشن کو کال کرے گا اور کنٹرول فنکشن میں چلا جائے گا۔ یہاں ہم اس دیے گئے نمبر کے مربع کا حساب لگاتے ہیں اور پھر اسے ٹرمینل پر پرنٹ کرتے ہیں۔
اب، ڈیفالٹ کے طور پر، تمام فنکشنز کوئی بھی قدر واپس نہیں کرتے ہیں۔ لہذا اگر ہمارے پاس یہاں واپسی کا بیان نہیں ہے تو، ڈیفالٹ ازگر کوئی بھی واپس نہیں کرتا ہے۔ کوئی بھی ایسی چیز نہیں ہے جو قدر کی عدم موجودگی کی نمائندگی کرتی ہو۔ یہ C، C++، جاوا اور جاوا اسکرپٹ میں کچھ بھی نہیں یا کالعدم ہے۔
لپیٹ!
مجھے امید ہے کہ آپ فنکشنز کی اہمیت کو سمجھ گئے ہوں گے۔
اگر آپ اپنے کوڈنگ کیریئر کے دوران بڑے اور پیچیدہ پروگرام لکھنے کی منصوبہ بندی کر رہے ہیں تو یہ Python سیکھنے کا ایک اہم پہلو ہیں۔
جواب دیجئے