লোকাল ও গ্লোবাল ভ্যারিয়েবল

লিখেছেন: কাজী মুশফিকুর রহমান || সফটওয়্যার প্রকৌশলী, টেকনিয়াস (সফটওয়্যার নির্মাণ প্রতিষ্ঠান) || তারিখঃ 29 এপ্রি., 2024


লোকাল ও গ্লোবাল ভ্যারিয়েবল (Local & Global Variable)

ভ্যারিয়েবল যখন ফাংশনের ভেতরে ডিফাইন করা  হয় তখন তাকে লোকাল ভ্যারিয়েবল বলে। এবং এর স্কোপ (ব্যবহারের পরিধি) নির্দিষ্ট ফাংশনের মধ্যে সীমাবদ্ধ। অর্থাৎ তাকে কেবলমাত্র ফাংশনের ভেতরেই এক্সেস (ব্যবহার) করা যায়, ফাংশনের বাইরে ব্যবহার করা যায় না। আর ভ্যারিয়েবল যখন ফাংশনের বাইরে ডিফাইন করা হয় তখন তাকে গ্লোবাল ভ্যারিয়েবল বলে, এবং তাকে প্রোগ্রামের যেকোন জায়গায় ব্যবহার করা যায়।

 

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

ভ্যারিয়েবল যখন ফাংশনের ভেতরে ডিফাইন করা  হয় তখন তাকে লোকাল ভ্যারিয়েবল বলে। এবং এর স্কোপ (ব্যবহারের পরিধি) নির্দিষ্ট ফাংশনের মধ্যে সীমাবদ্ধ। অর্থাৎ তাকে কেবলমাত্র ফাংশনের ভেতরেই ব্যবহার করা যায়, ফাংশনের বাইরে ব্যবহার করা যায় না। এখন আমি লোকাল ভ্যারিয়েবল  ব্যবহার করে একটি কোড লিখব।

কোড:

def show():

     # local variable

     str = 'Python is a computer programing language.'

     print('str: ', str)

show()

 

উপরের কোডের প্রথম লাইনে show() নামে একটি ফাংশন ডিফাইন করেছি, এবং পঞ্চম লাইনে এটি কল করেছি। তৃতীয় লাইনে একটি লোকাল ভ্যারিয়েবল str ডিফাইন করেছি। চতুর্থ লাইনে ভ্যারিয়েবলটি ব্যবহার করেছি। যেহেতু এটি লোকাল ভ্যারিয়েবল তাই একে ফাংশনের ভেতরে ব্যবহার করা যাবে, ফাংশনের বাইরে নয়। এখন উপরের কোডটি রান করলে নিচের মত আউটপুট পাব।

আউটপুট:

str:  Python is a computer programing language.

 

এখন আমি যদি এই লোকাল ভ্যারিয়েবল  ফাংশনের বাইরে ব্যবহার করতে চাই, তাহলে পাইথন একটি এরর দিবে।

কোড:

def show():

     text = 'Python is a computer programing language.'

     print('Inside function: ' , text)

show()

print('Outside of function: ' , text)

 

উপরের কোডের প্রথম লাইনে show() নামে একটি ফাংশন ডিফাইন করেছি, এবং চতুর্থ লাইনে এটি কল করেছি। দ্বিতীয় লাইনে একটি লোকাল ভ্যারিয়েবল text ডিফাইন করেছি। তৃতীয় লাইনে ভ্যারিয়েবলটি ব্যবহার করেছি। পঞ্চম লাইনে (ফাংশনের বাইরে) উপরের ভ্যারিয়েবলটি পুনরায়  ব্যবহার করেছি। কিন্তু যেহেতু লোকাল ভ্যারিয়েবল  ফাংশনের বাইরে ব্যাবহার করা যায় না, তাই পাইথন একটি এরর (name 'text' is not defined) দিয়েছে। অর্থাৎ text ভ্যারিয়েবলটি ডিফাইন করা হয় নাই, পাইথন এটি খুঁজে পাচ্ছে না। এখন উপরের কোডটি রান করলে নিচের মত আউটপুট পাব।

আউটপুট:

Inside function:  Python is a computer programing language.

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'text' is not defined

 

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

ভ্যারিয়েবল যখন ফাংশনের বাইরে ডিফাইন করা হয় তখন তাকে গ্লোবাল ভ্যারিয়েবল বলে, এবং তাকে প্রোগ্রামের যেকোন জায়গায় ব্যাবহার করা যায়।

এখন আমি গ্লোবাল ভ্যারিয়েবল  ব্যবহার করে একটি কোড লিখব।

কোড:

def show():

     print('Inside function: ', text)

 

# Global variable

text = 'Python is a computer programing language.'

show()

print('Outside of function: ', text)

 

উপরের কোডের প্রথম লাইনে show() নামে একটি ফাংশন ডিফাইন করেছি, এবং ষষ্ঠ লাইনে এটি কল করেছি। দ্বিতীয় লাইনে গ্লোবাল ভ্যারিয়েবলটি ব্যাবহার করেছি, যা পঞ্চম লাইনে (ফাংশনের বাইরে) ডিফাইন করেছি। পঞ্চম লাইনে একটি গ্লোবাল ভ্যারিয়েবল text ডিফাইন করেছি। যেহেতু এটি গ্লোবাল ভ্যারিয়েবল, তাই একে ফাংশনের বাইরে এবং ভেতরে উভয় জায়গায় ব্যাবহার করা যাবে। সপ্তম লাইনে (ফাংশনের বাইরে) ভ্যারিয়েবলটি ব্যবহার করেছি। এখন উপরের কোডটি রান করলে নিচের মত আউটপুট পাব।

আউটপুট:

Inside function:  Python is a computer programing language.

Outside of function:  Python is a computer programing language.

 

এখন আমি ফাংশনের বাইরে (উপরে) একটি গ্লোবাল ভ্যারিয়েবল ডিফাইন করব এবং এটি ফাংশনের ভেতরে ব্যবহার করব। নিচে কোডের সাহায্যে ব্যাপারটি দেখানো হলো:

কোড:

message = 'Python is one of the best programing lnguage throughout the world.'

def display():

     print('message: ', message)

display()

 

উপরের কোডের প্রথম লাইনে message নামে একটি গ্লোবাল ভ্যারিয়েবল  ডিফাইন করেছি। দ্বিতীয় লাইনে display() নামে একটি ফাংশন ডিফাইন করেছি, এবং চতুর্থ লাইনে এটি কল করেছি। তৃতীয় লাইনে (ফাংশনের ভেতরে) গ্লোবাল ভ্যারিয়েবলটি ব্যবহার করেছি। যেহেতু এটি গ্লোবাল ভ্যারিয়েবল, তাই একে ফাংশনের বাইরে এবং ভেতরে উভয় জায়গায়ই ব্যবহার করা যায়। এখন উপরের কোডটি রান করলে নিচের মত আউটপুট পাব।

আউটপুট:

message:  Python is one of the best programing lnguage throughout the world.

 

গ্লোবাল ভ্যারিয়েবলের নামে লোকাল ভ্যারিয়েবল ডিক্লেয়ার করা

যদি গ্লোবাল ভ্যারিয়েবলের নামে আরেকটি লোকাল ভ্যারিয়েবল  ডিক্লেয়ার করা হয়, তাহলে এই ভ্যারিয়েবলটি লোকাল হিসাবে গণ্য হবে এবং কেবলমাত্র ফাংশনের ভেতরই (লোকাল স্কোপে) তাকে ব্যবহার করা যাবে। আর (একই নামের) গ্লোবাল ভ্যারিয়েবলেরটি আগের মত গ্লোবাল হিসাবেই বিবেচিত হবে, এবং তার ভ্যালু ও অপরিবর্তিত থাকবে।

কোড:

# Declare a Global variable.

message = 'Python is favorite in the field of artificial intelligence.'

def display():

     # Declare a local variable with the same name of Global variable.

     message = 'Python is popular in the field of Data Science.'

     print('message: ', message)

display()

print('message: ', message)

 

উপরের কোডের দ্বিতীয় লাইনে message নামে একটি গ্লোবাল ভ্যারিয়েবল  ডিক্লেয়ার করেছি। তৃতীয় লাইনে display() নামে একটি ফাংশন ডিফাইন করেছি, এবং সপ্তম লাইনে এটি কল করেছি। পঞ্চম লাইনে গ্লোবাল ভ্যারিয়েবলের একই নামে আরেকটি লোকাল ভ্যারিয়েবল (message)  ডিক্লেয়ার করেছি। এটি লোকাল হিসাবেই আচরণ করবে এবং তাকে শুধুমাত্র (লোকাল স্কোপেই) ব্যবহার করা যাবে। অষ্টম লাইনে গ্লোবাল ভ্যারিয়েবলটি প্রিন্ট করেছি এবং এর ভ্যালু অপরিবর্তিত রয়েছে। এখন উপরের কোডটি রান করলে নিচের মত আউটপুট পাব।

আউটপুট:

message:  Python is popular in the field of Data Science.

message:  Python is favorite in the field of artificial intelligence.

 

লোকাল ভ্যারিয়েবলকে গ্লোবাল ভ্যারিয়েবলে কনভার্ট করা

সাধারণত ফাংশনের ভেতরে যে ভ্যারিয়েবল ডিক্লেয়ার করা হয় তা হচ্ছে লোকাল এবং লোকাল স্কোপেই ব্যবহৃত হয়। কিন্তু যদি এর পূর্বে global কিওয়ার্ড ব্যবহার করা হয় তাহলে এটি গ্লোবাল ভ্যারিয়েবলে কনভার্ট হয়ে যায়, তখন তাকে প্রোগ্রামের যেকোন অংশেই কল করা যায়। এখন আমরা নিচের কোডে global কিওয়ার্ড প্রয়োগ করব।

কোড:

def global_keyword():

     # Use ‘global’ keyword to convert local variable into global one. 

     global msg

     msg = 'Python is used in research field.'

global_keyword()

print('msg: ', msg)

 

উপরের কোডের প্রথম লাইনে global_keyword() নামে একটি ফাংশন ডিফাইন করেছি, এবং পঞ্চম লাইনে এটি কল করেছি। চতুর্থ লাইনে msg নামে একটি লোকাল ভ্যারিয়েবল  ডিক্লেয়ার করেছি, এবং এর পূর্বের লাইনে (তৃতীয় লাইনে) ‘global’ কিওয়ার্ড ব্যবহার করে তাকে গ্লোবাল ভ্যারিয়েবলে কনভার্ট করেছি। ষষ্ঠ লাইনে (ফাংশনের বাইরে) গ্লোবাল ভ্যারিয়েবলটি ব্যবহার করেছি। এখন উপরের কোডটি রান করলে নিচের মত আউটপুট পাব।

আউটপুট:

msg:  Python is used in research field.

 

গ্লোবাল ভ্যারিয়েবলের ভ্যালু আপডেট করা

ফাংশনের ভেতরে গ্লোবাল ভ্যারিয়েবলের ভ্যালু আপডেট করতে ‘global’ কিওয়ার্ড ব্যবহৃত হয়। নিচের কোডে প্রথমে আমি ফাংশনের বাইরে একটি গ্লোবাল ভ্যারিয়েবল ডিক্লেয়ার করব, তারপর ফাংশনের ভেতরে ‘global’ কিওয়ার্ড ব্যবহার করে এর ভ্যালু আপডেট করব।

কোড:

# Global variable

string = 'This is the age of science & Technology.'

def update_value():

     # update the value of global variable insine the function.

     global string

     string = 'The contribution of science in the development of civilization is unbelievable.'

 

update_value()

print('string: ', string)

 

উপরের কোডের দ্বিতীয় লাইনে string নামে একটি গ্লোবাল ভ্যারিয়েবল  ডিক্লেয়ার করেছি। তৃতীয় লাইনে update_value() নামে একটি ফাংশন ডিফাইন করেছি, এবং নবম লাইনে এটি কল করেছি। ষষ্ঠ লাইনে গ্লোবাল ভ্যারিয়েবলের ভ্যালু আপডেট করেছি। দশম লাইনে (ফাংশনের বাইরে) গ্লোবাল ভ্যারিয়েবলটি ব্যবহার করেছি। এখন উপরের কোডটি রান করলে আপডেট ভ্যালুটি প্রিন্ট হবে, এবং নিচের মত আউটপুট দিবে।

আউটপুট:

string:  The contribution of science in the development of civilization is unbelievable.