Python Statements
Python global Statement
Python Global Statement তৈরির জন্য global keyword ব্যবহার করা হয়। global keyword হল একটি keyword যা ইউজার কে current scope এর বাইরে একটি variable কে পরিবর্তন করতে দেয়। এটি একটি non-global scope থেকে পাইথনে global variable তৈরি করতে ব্যবহৃত হয়, এবং সেটা হতে পারে একটি ফাংশনের ভিতরে। global keyword শুধুমাত্র একটি ফাংশনের ভিতরে ব্যবহার করা হয় যখন আমরা অ্যাসাইনমেন্ট করতে চাই বা যখন আমরা একটি ভেরিয়েবল কে বাহির থেকে পরিবর্তন করতে চাই। তবে মনে রাখতে হবে মুদ্রণ এবং অ্যাক্সেসের জন্য global keyword প্রয়োজন নেই।
Python global Statement এর Rules:
- যদি একটি ভেরিয়েবলকে ফাংশনের বডির মধ্যে যেকোনো জায়গায় একটি মান বরাদ্দ করা হয়, তবে এটিকে local বলে ধরে নেওয়া হয় যদি না স্পষ্টভাবে global হিসাবে ঘোষণা করা হয়।
- আমরা একটি ফাংশনের ভিতরে একটি variable কে global করার জন্য global keyword ব্যবহার করতে হবে।
- ফাংশনের বাইরে global keyword ব্যবহার করার দরকার নেই।
- ফাংশনের ভিতরে একটি global variable এ অ্যাক্সেস করতে, global keyword ব্যবহার করার প্রয়োজন নেই।
Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django
উদাহরণ ১৩.১: একটি ফাংশনের ভিতর থেকে গ্লোবাল ভেরিয়েবল অ্যাক্সেস করা
# global variable
a = 15
b = 10
# function to perform addition
def add():
c = a + b
print(c)
# calling a function
add()
Output:
25
যদি আমাদের global ভেরিয়েবলের জন্য একটি নতুন value assign করার দরকার হয়, তাহলে আমরা ভেরিয়েবলটিকে global হিসাবে ঘোষণা করে তা করতে পারি।
উদাহরণ ১৩.২: ফাংশনের ভিতরে থেকে গ্লোবাল ভেরিয়েবল পরিবর্তন করা
a = 15
# function to change a global value
def change():
# increment value of a by 5
b = a + 5
a = b
print(a)
change()
Output:
UnboundLocalError: local variable 'a' referenced before assignment
এই output টি একটি error, কারণ আমরা outer scope এর একটি ভেরিয়েবলে একটি value assign করার চেষ্টা করছি। আর এই কাজটি করতে হলে আমাদেরকে একটি গ্লোবাল ভেরিয়েবল ডিক্লেয়ার করে করা যেতে পারে।
Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django
উদাহরণ ১৩.৩: global ব্যবহার করে একটি ফাংশনের ভিতর থেকে Global Variable পরিবর্তন করা
x = 15
def change():
# using a global keyword
global x
# increment value of a by 5
x = x + 5
print("Value of x inside a function :", x)
change()
print("Value of x outside a function :", x)
Output:
Value of x inside a function : 20 Value of x outside a function : 20
উপরের উদাহরণে, আমরা প্রথমে x ফাংশন change() এর ভিতরে একটি global keyword হিসাবে সংজ্ঞায়িত করি। তারপর x এর মান 5 দ্বারা increment করা হয়, অর্থাৎ x=x+5 এবং তাই আমরা 20 হিসাবে আউটপুট পাই। আমরা যেমন ফাংশন change() এর ভিতরে মান পরিবর্তন করে দেখতে পারি, পরিবর্তনটি মানের বাইরের global variable মানের মধ্যেও প্রতিফলিত হয়।
global Mutable Objects (পরিবর্তনযোগ্য অবজেক্ট) পরিবর্তন করা
উদাহরণ ১৩.৪: global keyword ব্যবহার না করে list element গুলোকে পরিবর্তন করা:
এখানে, আমরা global keyword ব্যবহার না করেই global scope এ ডিফাইন করা list element গুলি পরিবর্তন করতে পারি। কারণ আমরা variable arr এর সাথে যুক্ত object কে পরিবর্তন করছি না, কিন্তু আমরা list এ থাকা আইটেমগুলি পরিবর্তন করছি। যেহেতু list গুলি mutable বা পরিবর্তনযোগ্য ডেটা স্ট্রাকচার, তাই আমরা এর contents পরিবর্তন করতে পারি।
arr = [10, 20, 30]
def fun():
for i in range(len(arr)):
arr[i] += 10
print("'arr' list before executing fun():", arr)
fun()
print("'arr' list after executing fun():", arr)
Output:
'arr' list before executing fun(): [10, 20, 30] 'arr' list after executing fun(): [20, 30, 40]
উদাহরণ ১৩.৫: global keyword ব্যবহার করে list variable পরিবর্তন করা:
এখানে আমরা global variable এর জন্য একটি নতুন তালিকা বরাদ্দ করার চেষ্টা করছি। সুতরাং, একটি নতুন অবজেক্ট তৈরি হওয়ার সাথে সাথে আমাদের global keyword ব্যবহার করতে হবে। এখানে, যদি আমরা global keyword ব্যবহার না করি, তাহলে নতুন list element গুলোর সাথে একটি নতুন local variable arr তৈরি করা হবে। কিন্তু global variable arr অপরিবর্তিত থাকবে।
arr = [10, 20, 30]
def fun():
global arr
arr = [20, 30, 40]
print("'arr' list before executing fun():", arr)
fun()
print("'arr' list after executing fun():", arr)
Output:
'arr' list before executing fun(): [10, 20, 30] 'arr' list after executing fun(): [20, 30, 40]
Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django
পাইথন module সমূহ জুড়ে Global variables
একই প্রোগ্রামের মধ্যে বিভিন্ন module জুড়ে global variable গুলো শেয়ার করার সর্বোত্তম উপায় হল একটি special module তৈরি করা (যেটি প্রায়ই config বা cfg নামে পরিচিত)। আপনার অ্যাপ্লিকেশনের সমস্ত মডিউলে config module ইম্পোর্ট করুন; মডিউলটি তখন একটি global নাম হিসাবে এভেইল্যাবল হয়। প্রতিটি মডিউলের শুধুমাত্র একটি instance রয়েছে এবং তাই মডিউল অবজেক্টে করা যেকোনো পরিবর্তন সর্বত্র প্রতিফলিত হয়। উদাহরণস্বরূপ, মডিউল সমূহ জুড়ে global variable গুলো শেয়ার করা।
উদাহরণ ১৩.৬:
কোড ১: global variable সমূহ store করার জন্য একটি config.py ফাইল তৈরি করুন:
x = 0 y = 0 z = "none"
কোড ২: global variable পরিবর্তন করতে একটি modify.py ফাইল তৈরি করুন:
import config config.x = 1 config.y = 2 config.z = "w3programmers"
এখানে আমরা x, y, এবং z এর মান পরিবর্তন করেছি। এই ভেরিয়েবলগুলি config.py মডিউলে define করা হয়েছিল, তাই আমাদের config মডিউল import করতে হবে এবং এই ভেরিয়েবলগুলি অ্যাক্সেস করতে config.variable_name ব্যবহার করতে পারি।
\
global variable পরিবর্তন করতে একটি main.py ফাইল তৈরি করুন
import config import modify print(config.x) print(config.y) print(config.z)
Output:
1 2 w3programmers
১৩.৭.Nested function সমূহে global
একটি Nested ফাংশনের ভিতরে global ব্যবহার করার জন্য, আমাদের একটি Nested ফাংশনের ভিতরে একটি global keyword সহ একটি ভেরিয়েবল ঘোষণা করতে হবে
# Python program showing a use of
# global in nested function
def add():
x = 15
def change():
global x
x = 20
print("Before making changing: ", x)
print("Making change")
change()
print("After making change: ", x)
add()
print("value of x", x)
Output:
Before making changing: 15 Making change After making change: 15 value of x 20
উপরের উদাহরণে change() করার আগে এবং পরে, ভেরিয়েবল x local variable এর মান নেয় যেমন x = 15, তারপর add() ফাংশনের বাইরে, ভ্যারিয়েবল x change() ফাংশনে ডিফাইন করা মান নেবে, যেমন x = 20. কারণ আমরা change() ফাংশনের (local scope) ভিতরে একটি গ্লোবাল ভেরিয়েবল তৈরি করতে x-এ global keyword ব্যবহার করেছি।