দুই ধরনের ভেরিয়েবল রয়েছে: গ্লোবাল ভেরিয়েবল এবং লোকাল ভেরিয়েবল।
গ্লোবাল ভেরিয়েবলের স্কোপ হলো পুরো প্রোগ্রাম, যখন লোকাল ভেরিয়েবলের স্কোপ সীমিত থাকে সেই ফাংশনে যেখানে এটি ডিফাইন করা হয়েছে।
def func():
x = "Python"
print(x)
print(s)
s = "Tutorialspoint"
print(s)
func()
print(x)
উপরের প্রোগ্রামে - x একটি লোকাল ভেরিয়েবল এবং s একটি গ্লোবাল ভেরিয়েবল। আমরা লোকাল ভেরিয়েবলকে শুধু সেই ফাংশনের ভেতরে অ্যাক্সেস করতে পারি যেখানে এটি ডিফাইন করা হয়েছে (উপরে func()) এবং স্কোপের বাইরে (func()) লোকাল ভেরিয়েবল কল করলে এরর দেবে। কিন্তু আমরা গ্লোবাল ভেরিয়েবলকে প্রোগ্রামের যেকোনো জায়গা থেকে কল করতে পারি, এমনকি প্রোগ্রামে ডিফাইন করা ফাংশন (func()) থেকেও।
লোকাল ভেরিয়েবল
লোকাল ভেরিয়েবল শুধু তাদের স্কোপের ভেতরে (যেমন উপরে func()) elér্যাগ্যबल।
নিচের প্রোগ্রামে - দুটি লোকাল ভেরিয়েবল আছে - x এবং y।
def sum(x, y):
sum = x + y
return sum
print(sum(5, 10))
আউটপুট
15
ভেরিয়েবল x এবং y শুধু sum() ফাংশনের ভেতরে কাজ করবে/ব্যবহৃত হবে এবং ফাংশনের বাইরে সেগুলো অস্তিত্ব থাকবে না। তাই লোকাল ভেরিয়েবলকে তাদের স্কোপের বাইরে ব্যবহার করার চেষ্টা করলে NameError দিতে পারে। সুতরাং নিচের লাইনটি কাজ করবে না।
print(x)
গ্লোবাল ভেরিয়েবল
একটি গ্লোবাল ভেরিয়েবল প্রোগ্রামের যেকোনো জায়গা থেকে ব্যবহার করা যায় কারণ এর স্কোপ পুরো প্রোগ্রাম।
গ্লোবাল ভেরিয়েবল বুঝতে একটি খুব সহজ উদাহরণ:
z = 25
def func():
global z
print(z)
z = 20
func()
print(z)
আউটপুট
25 20
func() কল করলে, গ্লোবাল ভেরিয়েবলের মান পুরো প্রোগ্রামের জন্য পরিবর্তন হয়ে যায়।
নিচের উদাহরণে লোকাল এবং গ্লোবাল ভেরিয়েবল এবং ফাংশন প্যারামিটারর কম্বিনেশন দেখানো হলো:
def func(x, y):
global a
a = 45
x, y = y, x
b = 33
b = 17
c = 100
print(a, b, x, y)
a, b, x, y = 3, 15, 3, 4
func(9, 81)
print(a, b, x, y)
আউটপুট
45 17 81 9 45 15 3 4