اہم بات یہ ہے کہ ‘ٹاپ لیول’ (top-level) اسٹیٹمنٹس ‘امپورٹ’ (import) کے وقت ہی چل جاتی ہیں، لہٰذا ‘مین گارڈ’ (main guard) کا استعمال اس وقت غیر ارادی ضمنی اثرات (side effects) کو روکتا ہے جب کوئی دوسری فائل آپ کے ماڈیول کو امپورٹ کرتی ہے۔
عام طور پر ایک ابتدائی اسکرپٹ تین حصوں پر مشتمل ہوتی ہے۔ یہ ویری ایبلز (variables) میں ویلیوز کو محفوظ کرتی ہے، input() کے ذریعے صارف سے ٹیکسٹ حاصل کرتی ہے، اور print() کے ذریعے نتائج ظاہر کرتی ہے۔ چونکہ input() ایک اسٹرنگ (string) لوٹاتا ہے، اس لیے کسی حسابی عمل (expression) کو حل کرنے سے پہلے عددی حساب کتاب کے لیے int() یا float() کے ذریعے اسے تبدیل کرنا ضروری ہوتا ہے۔
اس کا سنٹیکس (syntax) سادہ اور واضح ہے، اور اس میں ترتیب بہت اہم ہے کیونکہ ہر لائن ان ویلیوز کو استعمال کرتی ہے جو پہلے بنائی گئی تھیں۔
name = input("Name: ")
age = int(input("Age: "))
next_year = age + 1
print(f"{name} will be {next_year} next year.")
ایک ایسی مختصر اسکرپٹ مکمل کریں جو نام اور عمر پوچھے، اور پھر ایک ترتیب شدہ خلاصہ (formatted summary) پرنٹ کرے۔
Python ایک عمومی مقصد (general-purpose) والی پروگرامنگ زبان ہے جو آٹومیشن اسکرپٹس، ڈیٹا کے کام، ویب بیک اینڈز، اور چھوٹے یوٹیلیٹی پروگرامز (جو مختلف سسٹمز کو آپس میں جوڑتے ہیں) کے لیے استعمال ہوتی ہے۔ اس کورس میں، آپ Python کا استعمال کرتے ہوئے ایسے چھوٹے پروگرام لکھیں گے جو فائل سے چلتے ہیں، ان پٹ (input) پڑھتے ہیں، اور آؤٹ پٹ (output) فراہم کرتے ہیں۔
Python کوڈ کو ایک انٹرپریٹر (interpreter) کے ذریعے چلاتی ہے۔ جب آپ کوئی فائل چلاتے ہیں، تو انٹرپریٹر فائل کو اوپر سے نیچے تک پڑھتا ہے، ہدایات (statements) کو ترتیب وار چلاتا ہے، اور فائل ختم ہونے یا کوئی خرابی (error) پیش آنے پر رک جاتا ہے۔ اسکرپٹ (script) دراصل ایک ایسی Python فائل ہوتی ہے جسے کسی مخصوص کام کو انجام دینے کے لیے چلایا جاتا ہے، نہ کہ کسی دوسرے کوڈ کے لیے بطور لائبریری امپورٹ (import) کیا جاتا ہے۔
اپنے آپریٹنگ سسٹم کے لیے آفیشل انسٹالر سے Python 3.12 انسٹال کریں، اور پھر تصدیق کریں کہ یہ آپ کے ٹرمینل پر دستیاب ہے۔ اس کی جانچ آسان ہے کیونکہ یہ پورے عمل (chain) کی تصدیق کرتی ہے؛ یعنی آپ کا شیل (shell) Python کو تلاش کر سکتا ہے اور Python اپنا ورژن بتا سکتی ہے۔
python3 --version
اگر آپ کے سسٹم پر یہ کمانڈ کام نہ کرے، تو یہ آزما کر دیکھیں:
python --version
ایسا ایڈیٹر منتخب کریں جو فولڈرز کھول سکے، سادہ ٹیکسٹ (plain text) میں ترمیم کر سکے، اور Python کوڈ چلا سکے۔ اہم شرط یہ ہے کہ یہ فائلز کو .py ایکسٹینشن کے ساتھ محفوظ کرے اور ایسی فارمیٹنگ شامل نہ کرے جس سے کوڈ تبدیل ہو جائے۔
ورچوئل انوائرمنٹ (virtual environment) ایک الگ تھلگ فولڈر ہوتا ہے جس میں اس کا اپنا Python انٹرپریٹر اور انسٹال شدہ پیکجز موجود ہوتے ہیں؛ یہ ایک پروجیکٹ کی ڈیپینڈینسیز (dependencies) کو دوسرے پروجیکٹ پر اثر انداز ہونے سے روکتا ہے۔ ہر پروجیکٹ کے لیے ایک ورچوئل انوائرمنٹ بنائیں، اسے فعال (activate) کریں، اور پھر pip (جو Python کا پیکج انسٹالر ہے) کے ذریعے پیکجز انسٹال کریں۔
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
عام اصول (Rule of thumb) اگر آپ دیکھیں کہ پیکجز عالمی سطح پر (globally) انسٹال ہو رہے ہیں، تو ایک ورچوئل انوائرمنٹ بنائیں اور اس کے اندر
python -m pip ...چلائیں۔
Python کی فائل ایک ماڈیول (module) ہوتی ہے۔ جب آپ python path/to/file.py چلاتے ہیں، تو Python ماڈیول کا نام __main__ مقرر کرتی ہے اور پھر فائل کا ٹاپ لیول (top-level) کوڈ چلاتی ہے۔ جب آپ اسی فائل کو کسی دوسرے ماڈیول سے امپورٹ کرتے ہیں، تو Python اسے امپورٹ کے وقت ایک بار چلاتی ہے اور اس کا نام فائل کے نام کے مطابق مقرر کرتی ہے؛ اس عمل سے یہ تبدیل ہو جاتا ہے کہ آپ کو قابلِ عمل (executable) کوڈ کی ساخت کیسے ترتیب دینی چاہیے۔
__name__ ویری ایبل ماڈیول کو یہ پتہ لگانے کی سہولت دیتا ہے کہ آیا اسے براہِ راست چلایا جا رہا ہے یا امپورٹ کیا جا رہا ہے۔ مین گارڈ (main guard) وہ پیٹرن ہے جو صرف چلائے جانے والے (run-only) کوڈ کو امپورٹ کے دوران چلنے سے روکتا ہے۔
if __name__ == "__main__":
main()
ایک چھوٹا سا ماڈیول چلا کر دیکھیں اور __name__ == "__main__" والے گارڈ (guard) کے ساتھ اور اس کے بغیر حاصل ہونے والے آؤٹ پٹ کا موازنہ کریں۔