গ্লোবাল ভেরিয়েবল কি?
একটি গ্লোবাল ভেরিয়েবল হলো এমন একটি ভেরিয়েবল যা ফাংশনের বাইরে ডিক্লেয়ার করা হয় কিন্তু আমাদের ফাংশনের ভেতরে ব্যবহার করতে হয়।
উদাহরণ
def func():
print(a)
a = 10
func()
আউটপুট
10
এখানে, ভেরিয়েবল a গ্লোবাল। কারণ এটি ফাংশনের বাইরে ডিক্লেয়ার করা হয়েছে এবং ফাংশনের ভেতরেও ব্যবহার করা যায়। তাই ভেরিয়েবল a-র স্কোপ (scope) গ্লোবাল।
আমরা দেখব কী হয় যদি আমরা গ্লোবাল ভেরিয়েবলের মতো একই নামে ফাংশনের ভেতরে একটি ভেরিয়েবল তৈরি করি।
উপরের উদাহরণে, ভেরিয়েবল a ফাংশনের বাইরে ডিক্লেয়ার করা হয়েছে এবং তাই গ্লোবাল।
যদি আমরা ফাংশনের ভেতরে একই নামে আরেকটি ভেরিয়েবল ডিক্লেয়ার করি অন্য কোনো মানের সাথে। সেই ভেরিয়েবলটি ফাংশনের লোকাল ভেরিয়েবল (local variable) হিসেবে কাজ করবে এবং এর স্কোপ ফাংশনের ভেতরেই সীমাবদ্ধ থাকবে। ফাংশনের বাইরে গ্লোবাল ভেরিয়েবল তার মূল মান ধারণ করবে।
এটি একটি উদাহরণ দিয়ে ভালোভাবে বুঝা যাবে।
উদাহরণ
a = 10
def func():
a = 5
print("Inside function:", a)
func()
print("Outside function:", a)
আউটপুট
Inside function: 5 Outside function: 10
উপরের উদাহরণে, a হলো গ্লোবাল ভেরিয়েবল যার মান ১০। পরে func() কল করা হয়েছে।
func()-এর ভেতরে আরেকটি ভেরিয়েবল a ডিক্লেয়ার করা হয়েছে ভিন্ন মানের সাথে যার স্কোপ শুধু ফাংশনের ভেতরেই সীমাবদ্ধ। তাই পরে ফাংশনের বাইরে a-এর মান প্রিন্ট করলে, এটি গ্লোবাল ভেরিয়েবলের মতো একই মূল মান ১০ ধারণ করে।
কিওয়ার্ড: global
global কিওয়ার্ডটি তখন ব্যবহার করা হয় যখন আপনাকে একটি ফাংশনের ভেতরে একটি গ্লোবাল ভেরিয়েবল ডিক্লেয়ার করতে হয়।
ফাংশনের ভেতরে ডিক্লেয়ার করা সাধারণ ভেরিয়েবলের স্কোপ শুধু ফাংশনের শেষ পর্যন্ত।
তবে, আপনি যদি ভেরিয়েবলটি ফাংশনের বাইরেও ব্যবহার করতে চান, তবে ভেরিয়েবল ডিক্লেয়ার করার সময় global কিওয়ার্ড ব্যবহার করুন।
উদাহরণ ইমপ্লিমেন্টেশন দিয়ে দুটির পার্থক্য বুঝুন।
উদাহরণ
def func():
a = 5
print("Inside function:", a)
func()
print("Outside function:", a)
আউটপুট
Inside function: 5
Traceback (most recent call last):
print("Outside function:", a)
NameError: name 'a' is not defined
উপরের উদাহরণে, a-এর মান ফাংশনের বাইরে অ্যাক্সেস করা যাবে না, কারণ এটি একটি লোকাল ভেরিয়েবল। তাই ফাংশনের বাইরে এর মান অ্যাক্সেস করলে এক্সেপশন ফেলে।
global কিওয়ার্ড ব্যবহার করুন
উপরের উদাহরণে উত্থাপিত এক্সেপশন সমাধান করা যাবে যদি আমরা ভেরিয়েবল a global কিওয়ার্ড ব্যবহার করে ডিক্লেয়ার করি।
উদাহরণ
def func():
global a
a = 5
print("Inside function:", a)
func()
print("Outside function:", a)
আউটপুট
Inside function: 5 Outside function: 5
উপরের উদাহরণে, ভেরিয়েবল a গ্লোবাল এবং তাই এর মান ফাংশনের বাইরেও অ্যাক্সেস করা যায়।