পাইথন স্কোপের মধ্যে, কোনও স্ক্র্যাপের মধ্যে ইতিমধ্যে ঘোষিত না হওয়া কোনও ভেরিয়েবলের যে কোনও অ্যাসাইনমেন্ট একটি নতুন স্থানীয় ভেরিয়েবল তৈরি করে, যদি না যে ভেরিয়েবলটি মূল শব্দটির সাথে বিশ্বব্যাপী স্কোপযুক্ত ভেরিয়েবলের উল্লেখ হিসাবে ফাংশনটিতে আগে ঘোষিত না হয় unlessglobal
।
আসুন কী ঘটে তা দেখতে আপনার সিউডোকোডের একটি পরিবর্তিত সংস্করণ দেখুন:
# Here, we're creating a variable 'x', in the __main__ scope.
x = 'None!'
def func_A():
# The below declaration lets the function know that we
# mean the global 'x' when we refer to that variable, not
# any local one
global x
x = 'A'
return x
def func_B():
# Here, we are somewhat mislead. We're actually involving two different
# variables named 'x'. One is local to func_B, the other is global.
# By calling func_A(), we do two things: we're reassigning the value
# of the GLOBAL x as part of func_A, and then taking that same value
# since it's returned by func_A, and assigning it to a LOCAL variable
# named 'x'.
x = func_A() # look at this as: x_local = func_A()
# Here, we're assigning the value of 'B' to the LOCAL x.
x = 'B' # look at this as: x_local = 'B'
return x # look at this as: return x_local
প্রকৃতপক্ষে, আপনি func_B
নামটির সাথে চলকটি আবার লিখতে পারেন x_local
এবং এটি অভিন্নভাবে কাজ করবে।
আপনার ক্রিয়াকলাপগুলি যে ক্রিয়াকলাপটি গ্লোবাল এক্স এর মান পরিবর্তন করে তা ক্রম হিসাবে কেবল অর্ডারটি গুরুত্বপূর্ণ। আমাদের উদাহরণস্বরূপ, func_B
কলগুলি যেহেতু অর্ডার কোনও বিষয় নয় func_A
। এই উদাহরণে, আদেশ অর্থে গুরুত্বপূর্ণ:
def a():
global foo
foo = 'A'
def b():
global foo
foo = 'B'
b()
a()
print foo
# prints 'A' because a() was the last function to modify 'foo'.
নোট করুন যা global
কেবলমাত্র বৈশ্বিক অবজেক্টগুলিকে সংশোধন করার জন্য প্রয়োজনীয়। আপনি এখনও কোনও ঘোষণা ছাড়াই কোনও ফাংশন থেকে এগুলিতে অ্যাক্সেস করতে পারেন global
। সুতরাং, আমাদের আছে:
x = 5
def access_only():
return x
# This returns whatever the global value of 'x' is
def modify():
global x
x = 'modified'
return x
# This function makes the global 'x' equal to 'modified', and then returns that value
def create_locally():
x = 'local!'
return x
# This function creates a new local variable named 'x', and sets it as 'local',
# and returns that. The global 'x' is untouched.
কল না করা সত্ত্বেও গ্লোবাল এক্স অ্যাক্সেস করা create_locally
এবং access_only
- এর মধ্যে পার্থক্যটি লক্ষ্য করুন এবং এটি কোনও ব্যবহার না করেও এটি একটি স্থানীয় কপি তৈরি করে যেহেতু এটি একটি মূল্য নির্ধারণ করে ।access_only
global
create_locally
global
এখানে বিভ্রান্তি হ'ল কেন আপনার বৈশ্বিক ভেরিয়েবলগুলি ব্যবহার করা উচিত নয়।