ভ্যারিয়েবল (Variable)

 

ভ্যারিয়েবলকে তুলনা করা যায় একটি বক্স বা কনটেইনার এর সাথে, যার মধ্যে কোন একটি টাইপের জিনিস রাখা যায়। পিজ্জা এর বক্স এ পিজ্জা থাকে, আইসক্রীম বক্স এ আইসক্রীম থাকে। আবার আইসক্রীম বক্সে চাইলে আইসক্রীম সরিয়ে অন্য খাবারও রাখা যায়। অর্থাৎ একই বক্সে বিভিন্ন টাইপের জিনিস রাখা যায়।

প্রোগ্রামিং এর সাথে তুলনা করলে,একটি বক্স এর নাম মনে করি X, এই X বক্সে Pizza খাবার রাখা বুঝতে, প্রোগ্রামিং এর ভাষায় আমরা লিখি X = Pizza । X নামক এই বক্সটি ই হচ্ছে একটি ভ্যারিয়েবল। ধরুন কম্পিটার আপনার কাছ থেকে দুইটি সংখ্যা নিবে এবং এদের যোগফল বের করে দিবে। যোগ করার প্রসেস টি যদি এভাবে কল্পনা করেন:
১। প্রথম সংখ্যা টি একটি বক্সে রাখলাম ১০।
২। দ্বিতীয় সংখ্যা টি অন্য একটি বক্সে রাখলাম ২০।
৩। তৃতীয় একটি বক্সে এই দুটি সংখ্যার যোগফল রাখলাম।

পাইথনে প্রোগ্রাম এ তো তার মত করে বুঝতে হবে যে যোগ করার প্রসেস টি লেখা হয়েছে।

first _box = ১০
second _box = ২০
third_box = first _box + second _box

আপনি ধরে নিতে পারেন পাইথনে এর ভিতরে কিছু একটা ম্যাজিক আছে যার কারনে ” third_box = first _box + second _box” লিখলেই third_box এর মধ্যে ৩০ রেখে দেয়।

 

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

 

পাইথন এ ভ্যারিয়েবল

পাইথনে ভ্যারিয়েবল তৈরী করতে কোনো আলাদা কমান্ড দেওয়ার প্রয়োজন নেই। ভ্যারিয়েবল এ কোনো ভ্যালু এসাইন করলেই ভ্যারিয়েবল হিসাবে এটি ব্যবহার করার যায়।

ভ্যারিয়েবল লেখার কিছু নিয়ম:
 
১। Variable এর নাম লেটার(A….Z)/(a…z) অথবা আন্ডার স্কোর (_) দিয়ে শুরু করতে হবে।
২। Variable এর নাম কখনোই শুরুতে সংখ্যা(0….9) দিয়ে শুরু করা যাবে না।
৩। Variable এর নাম (_,0..9,A…z,_) এই তিন ধরনের ক্যারেক্টর বহন করবে এবং কেইস সেন্সিটিভ। (Age এবং age দুটি
     ভিন্ন variable) ।
৪। পাইথনে কিছু reserved keywords রয়েছে যেগুলা ভ্যারিয়েবল নাম হিসেবে ব্যবহার করা যাবে না ।
     reserved keywords গুলা  দেওয়া হলো :-
 
 
 
 
 
 
Python Keywords
False def if raise
None del import return
True elif in try
and else is while
as except lambda with
assert finally nonlocal yield
break for not  
class from or  
continue global pass  

 

Example:
 
Age = 10

এখানে Age হচ্ছে ভ্যারিয়েবল বা বক্স এর নাম, 10 হচ্ছে ভ্যালু। ভ্যালু (10) এর টাইপ হচ্ছে ইন্টিজার। এখন কোড টি যদি এভাবে লেখা হয়ঃ

 
Age = 10
Age = "Ten"

তাহলে অনেকটা পিজ্জা এর বক্সে আইসক্রীম রাখার মত হয়ে গেলো। এই Age নামের ভ্যারিয়েবলটিই এখন ইন্টিজার টাইপ এর পরিবর্তে স্ট্রিং টাইপ এর ভ্যালু রেখেছে। এখানে কোটেশন (“Ten”) এর মাধ্যমে টাইপটা পরিবর্তন করে স্ট্রিং করা হল। (“Ten”) এর পরিবর্তে (‘Ten’) লিখলেও পাইথন এটিকে স্ট্রিং হিসাবে ধরে নেয়।

 

চাইলে ভ্যারিয়েবলে ভ্যালু এসাইন করার সময় এর টাইপ বলে দেয়া যায়।

x: str = str(3) # স্ট্রিং টাইপের ভ্যালু
y: int = int(3) # ইন্টিজার টাইপের ভ্যালু
z: float = float(3) # ডাবল টাইপের ভ্যালু

পাইথনে ভ্যরিয়েবল এর আউটপুট দেখতে print() ফাংশন ব্যবহার করা হয়। আর একটা ভ্যারিয়েবল কোন টাইপের, তা জানার ফাংশন type()
print(type(x))

 
 
বড় নামের ভ্যরিয়েবল লেখার কিছু প্রচলিত রীতি
 
MyVariableName = "John" # প্যাসকেল কেইস
myVariableName = "John" # ক্যামেল কেইস
my_variable_name = "John" # স্নেক কেইস

 

ভ্যরিয়েবলের নাম লিখতে পাইথনে বেশিরভাগ ক্ষেত্রে স্নেইক কেইস ব্যবহার হয়।

চাইলে অনেকগুলি ভ্যরিয়েবল এক লাইনে লিখে ডিক্লেয়ার করা যায়ঃ

x, y, z = "Orange", "Banana", "Cherry"
print("x = ",x) 
print("y = ",y) 
print("x = ",z)

 

আউটপুট

x =  Orange
y =  Banana
x =  Cherry

 

 

একই ভ্যালু সবগুলি ভ্যরিয়েবেল এ এসাইন করতে চাইলে,

x = y = z = "Orange" 
print("x = ",x) 
print("y = ",y) 
print("x = ",z)

 

আউটপুট

x =  Orange
y =  Orange
x =  Orange

 

কোনো লিস্ট (list) বা টাপল (tuple) থেকে ভ্যালুগুলি আলাদা আলাদা ভ্যারিয়েবল এ রাখতে চাইলে, আনপ্যাক (unpack) অপশন ব্যবহার করা যায়

fruits = ["apple", "banana", "cherry"] 
x, y, z = fruits
print("x = ",x) 
print("y = ",y) 
print("x = ",z)

আউটপুট

x =  apple
y =  banana
x =  cherry

 

“+” অপারেটর এর মাধ্যমে দুইটি একই ডাটা টাইপের ভ্যরিয়েবল এর ভ্যালু যোগ করা যায়। টাইপ অনুসারে আউটপুট ভিন্ন হবে

 
x = "Python is "
y = "awesome"
z = x + y
print(z)

আউটপুট

Python is awesome

 

x = 5 
y = 7 
sum = x + y 
print("sum  = ", sum)

আউটপুট

sum  =  12

 

 

গ্লোবাল এবং লোকাল ভ্যরিয়েবলঃ

ফাংশনের ভিতরে ডিক্লেয়ার করা ভ্যরিবেল গুলোকে লোকাল ভ্যরিয়েবল বলা হয়। ফাংশনের বাইরে ডিক্লেয়ার করলে গ্লোবাল ভ্যরিয়েবল বলা হয়।

 
x = "This is global variable"


def myfunc():
    y = "This is local variable"
    print("x= " + x)


myfunc()

 

আউটপুট
x= This is global variable

 

 

 

উদাহরন
  • আমরা একটি ভ্যারিবেল ‘a’ ডিক্লিয়ার করবো এবং তার ভ্যালু প্রিন্ট করবো –
    a = 500
    print(a)

    আউটপুট

    100

     

  • রিডিক্লিয়ার ভ্যারিবেল একটি উদাহরণ দেখা যাক –
    # প্রথমে আমরা একটি ভ্যারিবেল x ডিক্লায়ার করলাম এবং তার ভ্যালু এসাইন করলাম ৫০০ 
    x = 500
    print(x)
    
    # অই ভ্যারিবেল x কে রি-ডিক্লিয়ার করে তার ভ্যালু এসাইন করলাম "vivasoft" এবং তা প্রিন্ট করে তার আউটপুট দেখি 
    
    x = "vivasoft"
    print(x)

    আউটপুট

    500
    vivasoft

     

  • পাইথনে স্টিং সংমিশ্রণ একটি উদাহরণ দেখা যাক –
    x="Vivasoft"
    y = 99
    """
    এখানে আমরা দুই টা ভ্যারিবেল x কে স্টিং হিসাবে  এবং y কে ইন্টিজার হিসাবে ডিক্লিয়ার করেছি । এখন আমরা দুই টা ভ্যারিবেল কে স্টিং হিসাবে যুক্ত করতে হলে আমরা ডিরেক্ট addition অপেরেটর ব্যবহার করে যুক্ত করতে পারবো নাহ সেই জন্য আমাদের প্রথমে ইন্টিজার ভ্যারিবেল কে স্টিং এ কনর্ভাট করে তারপর addition অপেরেটর ব্যবহার করতে হবে । 
    """
    print(x+str(y))

     

    আউটপুট

    Vivasoft99

     

  • লোকাল এবং গ্লোবাল ভ্যারিবেল একটি উদাহরণ দেখা যাক –
    # আমরা গ্লোবাল ভ্যারিবেল x ডিক্লিয়ার করলাম 
    x = "global variable"
    
    def todo(): 
        # আমরা লোকাল ভ্যারিবেল y ডিক্লিয়ার করলাম 
        y = "local variable"
        # এই ফাংশনের লোকাল ভ্যারিবেল y মান প্রিন্ট করলাম এবং আউটপুট হিসাবে পাবো "local variable"
        print(y)
        # আমরা কোন ফাংশনের ভিতর কোন গ্লোবাল ভ্যারিবেল এক্সেস করতে এই ভাবে ডিক্লিয়ার করতে হবে 
        global x
        # আমরা গ্লোবাল ভ্যারিবেল  মান প্রিন্ট করলাম এবং আউটপুট হিসাবে পাবো "global variable"
        print(x)
        # গ্লোবাল ভ্যারিবেল ভ্যালু চেজ্ঞ করলাম 
        x = "changing global variable"
    # যেহেতু আমরা todo ফাংশন এ গ্লোবাল ভ্যারিবেল ভ্যালু চেজ্ঞ করেছি আর এখন আমরা todo ফাংশন কল করি নাই তাই প্রথমে আমারা যে ভ্যালু এস্যাইন করেছিলাম তাই প্রিন্ট করছে 
    print(x)
    todo()
    # উপরে todo ফাংশন এ আমরা গ্লোবাল ভ্যারিবেল ভ্যালু  চেজ্ঞ করে যে ভ্যালু বসিয়েছি  আমাদের আউটপুট তা প্রিন্ট করছে 
    print(x)
    
    

     

    আউটপুট –

    global variable
    local variable
    global variable
    changing global variable

     

  • আমরা ইচ্ছা করলে কোন ভ্যারিবেল ডিলিট করতে পারবো –
    # আমরা একটি ভ্যারিবেল x ডিক্লিয়ার করলাম এবং তা ভ্যালু ১০০ এস্যাইন করলাম 
    x = 100
    # আমরা x ভ্যালু প্রিন্ট করে দেখছি যে আউটপুট ঠিক ভাবে আসছে 
    print(x)
    # আমরা del keywords ব্যবহার করে x ভ্যারিবেল মান ডিলেট করে দিলাম 
    del x
    # যেহেতু x ভ্যারিবেল মান ডিলেট করে দিয়েছি তাই এখন আমাদের কোড এ x নামে ভ্যারিবেল কোন ভ্যারিবেল খুঁজে পাবে নাহ এবং নিচের কোডে "NameError" ইরর দেখাবে আমাদের  
    print(x)

    আউটপুট

    100
    Traceback (most recent call last):
      File "<string>", line 4, in <module>
    NameError: name 'x' is not defined

     

এসো নিজে করি
অনুশীলনঃ
  • company নামে একটি ভ্যারিবেল তৈরি করুন এবং এটিতে “vivaSoft” ভ্যালু এসাইন করুন।
  •  A=10 দিয়ে একটি গ্লোবাল ভ্যারিয়েবল তৈরি করুন এবং B=20 লোকাল ভ্যরিয়েবল এর সাথে যোগ করুন।
  • একটি ভ্যারিয়েবল x এ একটি integer ভ্যালু এস্যাইন করে তার মান প্রিন্ট করো তার পর অই একই ভ্যারিয়েবল এ একটি string data type ভ্যালু এস্যাইন করে অই x ভ্যারিয়েবল প্রিন্ট করে দেখাও । 
  • একটি  floating এবং একটি integer  ভ্যারিয়েবল ডিক্লিয়ার করে অই ভ্যারিয়েবল দুইটি কে এক সাথে string ভ্যারিয়েবল হিসাবে যুক্ত করো ?
  • একটি todo ফাংশন তৈরি করা তার মধ্যে global ভ্যারিয়েবল ডিক্লিয়ার করো এবং অই global ভ্যারিয়েবল মান অই একটি ফাংশন থেকে প্রিন্ট করো । 
 
ইন্টারভিউ প্রশ্নোত্তর
  • ভ্যরিয়েবলের ডিক্লিয়ার ক্ষেত্রে প্রথম ক্যারেক্টার কি কি ধরনের হয়ে থাকে ?
  • নিচের কোড টা দেখো –
    i_am_string = "hello_world"
    i_am_string = 14
    i_am_string = True

    উপরের তিনটি ভ্যরিয়েবলের নাম একই কিন্তু তাদের data type change করার পরেও কোড কোন ভুলে দেখাচ্ছে এবং খুব সুন্দর ভাবে রান হচ্ছে কেনো ?

  • নিচের কোড টা দেখো –
    x = 5 + 3 * 8

    উপরের x ভ্যরিয়েবলের রেজাল্ট কি হবে এবং এই রেজাল্ট হবার কারণ কি ?

  • আমাদের কে দুই টি integer data type value দিলে এবং তাদের মধ্যে ভাগ করতে বলল । অই ভাগ ফল সাধারণত কি ধরনের data type হয় ?
  • একটি বুলিয়ান ভ্যরিয়েবলের ডিক্লিয়ার করে তার ভ্যালু আমরা True assign করলাম । এখন যদি আমরা তার সাথে 7 দিয়ে গুন করে তাহলে আমাদের টার্মিনাল এ আউটপুট হিসাবে কি পাবো ?