محدوده (Scope)
در پایتون، یک متغیر (Variable) تنها در ناحیه ای در دسترس است که در آن ایجاد شده باشد. این ناحیه را محدوده یا Scope می نامیم. درک درست از محدوده متغیرها برای جلوگیری از خطاها و نوشتن کد تمیز ضروری است.
محدوده محلی (Local Scope)
متغیری که داخل یک تابع ایجاد می شود فقط در همان تابع قابل استفاده است:
def myfunc():
x = 300
print(x)
myfunc()
تابع داخل تابع
متغیر محلی برای توابع داخلی همان تابع هم در دسترس است:
def myfunc():
x = 300
def myinnerfunc():
print(x)
myinnerfunc()
myfunc()
محدوده سراسری (Global Scope)
متغیری که خارج از همه توابع تعریف شود، متغیر سراسری یا Global است و در کل برنامه در دسترس خواهد بود:
x = 300
def myfunc():
print(x)
myfunc()
print(x)
نام گذاری متغیرها
اگر متغیری با همان نام داخل و بیرون از تابع ایجاد کنید، پایتون آن ها را جداگانه در نظر می گیرد:
x = 300
def myfunc():
x = 200
print(x)
myfunc()
print(x)
کلیدواژه global
برای ایجاد یا تغییر یک متغیر سراسری از داخل تابع باید از کلیدواژه global
استفاده کنید:
def myfunc():
global x
x = 300
myfunc()
print(x)
همچنین برای تغییر مقدار متغیر سراسری از داخل تابع:
x = 300
def myfunc():
global x
x = 200
myfunc()
print(x)
کلیدواژه nonlocal
کلیدواژه nonlocal
برای استفاده از متغیرها در توابع تو در تو به کار می رود و متغیر را به تابع بیرونی نسبت می دهد:
def myfunc1():
x = "Jane"
def myfunc2():
nonlocal x
x = "hello"
myfunc2()
return x
print(myfunc1())
ادامه یادگیری
برای مطالعه بیشتر درباره چندریختی (Polymorphism) مراجعه کنید یا فصل ماژول ها (Modules) را بخوانید.