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