পাইথনে স্কোপ নিয়ে কাজ করার সূক্ষ্ম বিষয়সমূহ
স্থানীয় এবং গ্লোবাল ভেরিয়েবল নিয়ে কাজ করার গুরুত্বপূর্ণ সূক্ষ্ম বিষয়গুলি বিবেচনা করা যাক।
ধরুন আমাদের একটি গ্লোবাল ভেরিয়েবল num আছে।
আসুন একটি ফাংশন func তৈরি করি,
যেটি কনসোলে গ্লোবাল num প্রিন্ট করবে:
num = 1
def func():
print(num)
func() # 1 প্রিন্ট করবে
এখন print ফাংশনের এক লাইন নিচে একটি স্থানীয় num ডিক্লেয়ার করি।
কোড এক্সিকিউট হওয়ার পর কনসোলে একটি ত্রুটি দেখাবে।
এটি ঘটে কারণ পাইথন ফাংশনের ভিতরে num কে শুধুমাত্র একটি স্থানীয় ভেরিয়েবল হিসাবে বিবেচনা করে, যেটি এখনও ডিক্লেয়ার করা হয়নি:
num = 1
def func():
print(num) # ত্রুটি দেখাবে
num = 2
এখন ফাংশনের ভিতরের কোডটি এমনভাবে পুনরায় লিখি যাতে num ভেরিয়েবলের মান 2 দ্বারা বৃদ্ধি পায়:
num = 1
def func():
num += 2 # ত্রুটি দেখাবে
ত্রুটিটি ঘটেছে কারণ এক্সপ্রেশন num += 2 নিম্নলিখিত রেকর্ডটিকে উপস্থাপন করে:
num = num + 2
যাইহোক, যে স্থানীয় ভেরিয়েবলের সাথে যোগ করা হচ্ছে সেটি এখনও ডিক্লেয়ার করা হয়নি। এবং সেই অনুযায়ী পাইথন একটি ত্রুটি দেখায়, যেহেতু একটি অস্তিত্বহীন মানের সাথে একটি সংখ্যা যোগ করা যায় না।
নিম্নলিখিত কোডটি এক্সিকিউট করার ফলাফল কী হবে:
tst = '12'
def func():
tst = 12
return tst
print(tst)
নিম্নলিখিত কোডটি এক্সিকিউট করার ফলাফল কী হবে:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
নিম্নলিখিত কোডটি এক্সিকিউট করার ফলাফল কী হবে:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)