Python Variables & Data Types | পাইথন ভেরিয়েবল ও ডাটা টাইপ

Python Variables & Data Types

ভূমিকা (Introduction) :

প্রােগ্রামে সাধারণত ডাটা নিয়ে কাজ করা হয়। প্রােগ্রামে ব্যবহারের জন্য ডাটাকে প্রথমে মেমরিতে সংরক্ষণ করা হয় এবং

প্রয়ােজনে মেমরিতে থেকে ডাটা উত্তোলণ করে কাজে লাগানাে হয়। নিম্ন পর্যায়ের ভাষায় মেমরিতে ডাটা রাখার জন্য সরাসরি বিট,

বাইট এবং মেমরি অ্যাড্রেস ব্যবহার করা হয়, যা বড় বড় প্রােগ্রামের জন্য জটিল এবং কষ্টকর। কারণ লক্ষ লক্ষ অ্যাড্রেসের মধ্যে

কখন কোন অ্যাড্রেসে কোন ডাটা রাখা হলাে তা মনে রাখা অসম্ভব। এ অসুবিধা দূর করার জন্য এবং প্রােগ্রামকে সহজ করার লক্ষ্যে

হাই লেভেল ল্যাংগুয়েজ বিট বা বাইট ও মেমরি অ্যাড্রেসের পরিবর্তে ভেরিয়েবল ব্যবহার করা হয়। ভেরিয়েবল হলাে প্রােগ্রামার

কর্তৃক দেয়া কয়েকটি বিট বা বাইট সংরক্ষণের জন্য মেমরি স্পেসের নাম, যে নামের অধীনে ডাটা রাখা হয়। এক্ষেত্রে প্রােগ্রামার বা

প্রোগ্রাম ব্যবহারকারীর জানার দরকার নেই যে মেমরির কোন অ্যাড্রেসে কোন ডাটা রাখা হয়। কেবল সঠিক নিয়মে উপযুক্ত ডাটা

টাইপসহ প্রয়ােজনমতাে ভেরিয়েবল ঘােষণা করে ডাটা রাখা যায় এবং প্রয়ােজনে তা সংরক্ষণ করে পরবর্তীতে ব্যবহার করা যায় ।

উল্লেখ্য, কোনাে ভেরিয়েবলে যে-কোনাে সময় কেবল একটি মাত্র ডাটা রাখা সম্ভব। ভেরিয়েবলের পুরাতন মান সর্বদাই নতুন মান

দ্বারা প্রতিস্থাপিত হয়।

অন্যান্য প্রোগ্রামের মতাে প্রতিটি পাইথন প্রােগ্রাম এক গুচ্ছ এক্সপ্রেশন বা স্টেটমেন্টের সমন্বয়ে গঠিত। প্রতিটি এক্সপ্রেশন

আবার কতগুলাে প্রতীক, সংকেত, ভেরিয়েবল তথা টোকেন, কী-ওয়ার্ড, অপারেটর, অপারেন্ড ইত্যাদির সমন্বয়ে গঠিত। এদের

কোনােটি প্রােগ্রামে ব্যবহৃত ডাটা ধারণ করে, কোনােটি ডাটার গাণিতিক যৌক্তিক ক্রিয়া সম্পন্ন করে, কোনােটি প্রােগ্রামে ব্যবহৃত

অন্যান্য স্টেটমেন্ট নিয়ন্ত্রণ করে, আবার কোনােটি বিশেষ প্রােগ্রাম কোড উৎপন্ন করে।

ডাটা ও টোকেন (Data & Token) :

প্রােগ্রামে ব্যবহৃত যে-কোনাে মানই (value) ডাটা। প্রােগ্রামিং এ বিভিন্ন প্রকার ডাটা নিয়ে কাজ করা হয়। 

প্রােগ্রাম চালনার সময় সব ডাটাই মেমরিতে সংরক্ষিত হয় এবং বিভিন্ন টাইপের ডাটাই মেমরিতে ভিন্ন ভিন্ন বাইটের জায়গা দখল করে। 

কোন ধরনের Data মেমরিতে কত বাইট জায়গা নেবে তা কম্পাইলারের উপর নির্ভর করে।

উদাহরণঃ

> পূর্ণ সংখ্যা (0,1,2,15,25,100)
> প্রকৃত সংখ্যা (10.25,30.25,100.20)
> বিভিন্ন বর্ণ (a........z,A........z,@#&........) প্রভৃতি।

পাইথনে ব্যবহৃত বিভিন্ন ধরনের ডাটাসমূহ মূলত ক্যারেক্টার ব্যবহার করেই লিখতে হয়। এ সকল ক্যারেক্টারসমূহকে নিম্নলিখিত

৪টি গ্রুপে বিভক্ত করা হয়, যথা
> বর্ণ (Letters)
> সংখ্যা (Digits)
> বিশেষ ধরনের ক্যারেক্টার (Special character)
> হােয়াইট স্পেস (White spaces)

টোকেন (Token) :  

'Token' ইংরেজি শব্দটির বাংলা অর্থ হচ্ছে প্রতীক বা চিহ্ন। যে-কোনাে প্রােগ্রাম কতকগুলাে Statement নিয়ে গঠিত। 

আবার প্রতিটি Statement কতকগুলাে Word এবং Character-এর সমষ্টি। 

পাইথন প্রােগ্রামে ব্যবহৃত এরূপ Word বা Character ও Symbol সমূহকে একত্রে Token বলে। পাইথনে ব্যবহৃত টোকেনসমূহ নিম্নরূপ-

টোকেন ব্যবহার
কী ওয়ার্ড (Keyword) প্রােগ্রামে কোড লেখার জন্য ব্যবহৃত হয়।
আইডেন্টিফায়ার (Identifier) ভেরিয়েবল, ফাংশন, স্ট্রাকচার, ক্লাস ইত্যাদি নামকরণের জন্য ব্যবহৃত হয়।
স্ট্রিং (String) প্রােগ্রামে একগুচ্ছ ক্যারেক্টার নিয়ে কাজ করার জন্য ব্যবহৃত হয়।
পাঙ্কচুয়েটর (Punctuator) কী-ওয়ার্ড, অপারেটর, অপারেন্ডর, আইডেন্টিফায়ারের মধ্যে পার্থক্য করার জন্য।
স্পেশাল সিম্বল (Special symbol) বিশেষ কাজে ব্যবহার করার জন্য।
অপারেটর, অপারেন্ড এবং এক্সপ্রেশন বিভিন্ন গাণিতিক ও যৌক্তিক অপারেশন সম্পন্ন করার জন্য।

ভেরিয়েবল ও ভেরিয়েবলের মান নির্ধারণ (Variables & assigning values to variables) ঃ


ভেরিয়েবল (Variables) ভেরিয়েবল হচ্ছে কম্পিউটার মেমরির সেই নির্ধারিত জায়গা যেখানে বিভিন্ন মান (value) জমা করে ব্যথা হয়। 

ভেরিয়েবল তৈরি করা মানেই কম্পিউটারের মেমরিতে একটা নির্দিষ্ট স্পেস সঞ্চয় করে রাখা। 

কোন ভেরিয়েবল কী অন্তরে জট ব্রেকর্ড বা স্টোর করবে সেটা ঐ ভেরিয়েবলের উপর নির্ভর করে। 

আমরা যখন কোনাে ভেরিয়েবল ডিক্লেয়ার করি তখন কম্পিউটাৰ সেই ভেরিয়েবলের জন্য কিছু নির্দিষ্ট মেমরি নির্ধারণ করে দেয়। প্রতিটি ভেরিয়েবল এর মেমরি অ্যাড্রেস ইউনিক হয়।

প্রেমের প্রয়ােজনে ওই ভেরিয়েবল তথা নাম সম্পূর্ণ মেমরি লােকেশনে ভ্যালু জমা করে রাখা যায়। 

আবার প্রয়ােজনের সময় সেই নাম ব্যবহার করে ওই লোকেশনের ভ্যালুকে অ্যাক্সেস করা যায় এবং কাজে লাগানাে যায়।

এ জন্য অবশ্যই ভেরিয়েবল-এর নামটি অর্থপূর্ণ হওয়া উচিত।
যেমন- number 1 = 10
name = "Asad"
একটি ভেরিয়েলের মধ্যে কোনাে ভ্যালু জমা রাখার জন্য একটি সমান (=) চিহ্ন ব্যবহার করা হয়। 

আমরা যদি কোনাে ভ্যালু কোনাে একটা ভেরিয়েবলে স্টোর করি (সমান চিহ্ন দিয়ে) এবং এন্টার প্রেস করি তখন সমান চিহ্নের ডান পাশের ভ্যালুটি সমান চিহ্নের বাম পাশের ভেরিয়েবলে জমা হয়ে যাবে, যেটাকে আমরা পরবর্তী স্টেটমেন্টে নাম উল্লেখপূর্বক ব্যবহার করতে পারব।

ভেরিয়েবলের মান নির্ধারণ (Assigning values to variables) : 

পাইথনে সমতা চিহ্নের (=) মাধ্যমে কোনাে ধরনের
মান (value) ভেরিয়েবল হিসেবে স্টোর করা যায়, এক্ষেত্রে আলাদা করে কোনাে ডিক্লারেশনের প্রয়ােজন নেই। সমতা চিহ্নের বাম পাশে ব্যবহৃত শব্দটি ভেরিয়েবলের নাম এবং ডান পাশের সংখ্যাটি ভেরিয়েবলের মান নির্দেশ করে। যেমন -
>>> num = 10 
>>> print(num)
10
>>> print(num*2)
20
>>> print(num+5)
15
উপরােক্ত উদাহরণে প্রথমে ভেরিয়েবল num এর মান ১০ জমা রাখা হয়েছে। 

এরপরের লাইনে print() ফাংশনের আগ্রুমেন্ট হিসেবে সেই num কেই পাঠানাে হয়েছে। 

প্রিন্ট ফাংশনের আগ্রুমেন্ট হিসেবে কিছু পাঠালে তাই প্রিন্ট হয়। সেজন্য num এর মান হিসেবে জিনে ১০ প্রিন্ট হয়েছে। 

পরবর্তী লাইনে num এর মানকে ২ দিয়ে গুণ করলে ২০ পাওয়া যায়। তাই আউটপুটে ২০ দেখাচ্ছে।
এমনিভাবে পরবর্ত লাইনের আউটপুট ১৫ দেখানাে হয়েছে।

ভেরিয়েবলের মান পুনঃনির্ধারণ (Re-assignment of values to variables) ঃ 


পাইথনে কোনাে ভেরিয়েবলের মধ্যে একাধিকবার নতুন নতুন ভ্যালু স্টোর করা যায়। এভাবে কোনাে ভেরিয়েবলের মান বার বার নির্ধারণ করার এই প্রক্রিয়াকে রিঅ্যাসাইনমেন্ট অফ ভেরিয়েবল বা ভেরিয়েবলের মান পুনঃনির্ধারণ বলে। তবে এক্ষেত্রে সর্বশেষ স্টোরকৃত মানটিই ভেরিয়েবলের মান হিসেবে জমা থাকে। যেমন-  
>>> x=110 
>>> x 
110 
>>> x=154.32 
>>> x
154.32 
>>> x = "Rohan" 
>>> x  
Rohan
উপরােক্ত উদাহরণে x এর মান হিসেবে একটি পূর্ণ সংখ্যা ১১০ প্রিন্ট হবে। পরবর্তী দুটো কমান্ডে এর x মান পরিবর্তিত হয়ে যথাক্রমে দশমিক সংখ্যা ১৫৪.৩২ এবং স্ট্রিং Rohan-কে আউটপুট হিসেবে প্রিন্ট করার জন্য ব্যবহার করা হয়েছে।  পাইথনে ভেরিয়েবলে নির্দিষ্ট কোনাে ডাটা টাইপ নেই। তাই একই ভ্যারিয়েবল প্রথমে একটি নাম্বার এবং পরবর্তীতে সেটাতে একটি স্ট্রিং জমা রাখা গেছে।  
 
উল্লেখ্য যে, আমরা প্রথম যখন কোনাে একটা ভেরিয়েবলে কোনাে ভ্যালু এসাইন করি তখন সেই ভেরিয়েবলটা initialize হয় । পরবর্তীতে আমরা ঐ ভেরিয়েবলটাতেই আবার বিভিন্ন ভ্যালু রেখে কাজ করতে পারি। কিন্তু আমরা যদি ভ্যালু এসাইন না করে ঐ ভেরিয়েবল নিয়ে কাজ করার চেষ্টা করি তাহলে প্রােগ্রামে এরর দেখাবে। যেমন-  >>> variable Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'variable' is noi defined

পাইথন ভেরিয়েবল নামকরণের নিয়মাবলি (Naming convension of python variable) ঃ 


কম্পাইলারের সীমাবদ্ধতার কারণে পাইথনে ভেরিয়েবল লেখার সময় বেশ কিছু নিয়ম কানুন মেনে ভেরিয়েবল ডিক্লেয়ার করতে হয়। তাই পাইথনে ভেরিয়েবল নামকরণের ক্ষেত্রে নিম্নবর্ণিত নিয়মসমূহ অবশ্যই মেনে চলতে হবে। যেমন- 
১। ভেরিয়েবলের নামের মধ্যে কোনাে খালি জায়গা বা স্পেস ব্যবহার করা যাবে না। যেমন- Rectangle area, First  number, Summation value ইত্যাদি। 
 
২। ভেরিয়েবলের নাম লেখার ক্ষেত্রে প্রথম অক্ষর অবশ্যই একটি alphabetic letter (uppercase or lowercase) অথবা  underscore (-) হবে। যেমন- Number, Length, Width, _Length লেখা যাবে কিন্তু 1stNumber, @Number, 20Number, %Base লেখা যাবে না। যদিও ভেরিয়েবলের শুরুতে underscore ব্যবহার করা যায়, কিন্তু পাইথনের কনভেনশন হচ্ছে ভেরিয়েবলের নাম সবসময় Lowercase letter দিয়ে শুরু করা।  

৩। প্রথম অক্ষরের পর যে-কোনাে letter, underscore, number ব্যবহার করা যাবে। যেমন- Number1,  Rectangle_Area, Area_of_The_Rectangle। 

৪। ভেরিয়েবলে underscore () ছাড়া অন্য কোনাে বিশেষ চিহ্ন (!, @#$%^&*,<>?..}..]) ব্যবহার করা যাবে।  । যেমন- H#, R#, email@, Age! ইত্যাদি ব্যবহার করা যাবে না।

৫। পাইথন একটি Case sensitive language । তাই এতে Uppercase letter ও lowercase letter এর ভিন্ন ভিন্ন  অর্থ বিদ্যমান। অর্থাৎ Area, area, Area ইত্যাদিকে ভিন্ন ভিন্ন ভেরিয়েবল হিসেবে ডিক্লেয়ার করা যাবে কিন্তু Area,  Area-কে দুটি আলাদা ভেরিয়েবল হিসেবে ডিক্লেয়ার করা যাবে না। 

৬। পাইথনে ভেরিয়েবলর নাম হিসেবে এর কী-ওয়ার্ডসমূহক ব্যবহার করা যাবে না। যেমন- if, else, elif, for, while,  break, continue, except, as, in, is, True, False, yield, None, def, del, class ইত্যাদি। 

৭। ভেরিয়েবলের নাম হিসেবে অর্থবােধক নাম ব্যবহার করাই যুক্তিযুক্ত। অনর্থক নাম পরিহার করাই শ্রেয়। যেমনঃ  আয়তক্ষেত্রের ক্ষেত্রফল নির্ণয় করার জন্য Length, Width, Rectangle_Area ব্যবহার করাই শ্রেয়; A, B,R নয়।

একাধিক ভেরিয়েবলের মান নির্ধারণ (Multiple variable assignment) ঃ  


পাইথন একই লাইনে একাধিক ভেরিয়েবল ডিক্লারেশনের সুবিধা প্রদান করে। এতে একাধিক ভেরিয়েবলের জন্য একটি নির্দিষ্ট মান স্টোর করা যায়। আবার একাধিক ভেরিয়েবলের জন্য যথাক্রমে একাধিক মানও একসাথে স্টোর করা যায়। পাইথনে ভেরিয়েবল ডিক্লারেশনের এই পদ্ধতিকে মাল্টিপল ভেরিয়েবল অ্যাসাইনমেন্ট বলে। যেমন-  
a = b = c = 10 এবং  a, b, c = 10, 20, "Rohan" প্রথমােক্ত উদাহরণে a, b এবং c প্রতিটি ভেরিয়েবলের মান ১০ কিন্তু দ্বিতীয় উদাহরণে a, b এবং c এর মান যথাক্রমে ১০, ২০ এবং Rohan নির্ধারণ করা হয়েছে। 

উদাহরণঃ 
>>> x, y =2, 3  
>>> x
2 
>>>y
3