دامنه متغیرها در پایتون (Python Scope) محلی و سراسری یا عمومی

در همه زبان های برنامه نویسی بحث دسترسی به متغیرها وجود دارد، پایتون هم از این قضیه مستثنا نیست.

در برنامه نویسی دسترسی به متغیرها فقط از منطقه تعریف شده آن عملی است، در غیر این صورت دسترسی به آن متغیر ممکن نخواهد بود که به آن دامنه (Scope) یک متغیر گفته می شود.

دامنه ها در پایتون به دو بخش تقسیم می شوند:

  1. دامنه محلی (Local Scope)
  2. دامنه سراسری یا عمومی (Global Scope)
بهزاد میرزازاده بهزاد میرزازاده

زمان مطالعه

3 دقیقه

بازدید

253

پرسش و پاسخ

0
دامنه متغیرها در پایتون (Python Scope) محلی و سراسری یا عمومی

متغیر محلی (Local Scope) در پایتون

یک متغیر پایتون ایجاد شده در داخل یک تابع، مربوط به محدوده آن تابع است و دسترسی به آن فقط در داخل همان تابع امکان پذیر است.

مثال: در این مثال یک متغیر درون یک تابع ایجاد کرده ایم که فقط در داخل آن تابع به آن دسترسی داریم.

def myfunc():
  x = 300
  print(x)
myfunc()

متغیر محلی (Local Scope) در پایتون (Python)

تابعی درون تابع دیگر

همانطور که در بالا گفته شد متغیر x فقط در داخل تابع قابل دسترس است و نه خارج از آن، اما اگر در داخل آن تابع تابع دیگری داشته باشیم دسترسی به x در داخل تابع داخلی امکان پذیر است.

مثال: در این مثال یک تابع را درون تابع دیگری تعریف کرده ایم و دسترسی به تمام متغیرهای تابع بیرونی در داخل تابع داخلی امکان پذیر است.

def myfunc():
  x = 300
  def myinnerfunc():
    print(x)
  myinnerfunc()
myfunc()

تابعی درون تابع دیگر متغیر محلی (Local Scope) در پایتون (Python)

دامنه سراسری یا عمومی (Global Scope) در پایتون

به متغیرهایی که در بدنه اصلی کد تعریف می شوند متغیرهای سراسری یا عمومی (Global Scope) گفته می شوند که متعلق به دامنه سراسری هستند.

این متعیرها در تمام قسمت های برنامه قابل دسترس هستند چه در دامنه محلی و چه در دامنه سراسری.

مثال: در این مثال یک متغیر در محدوده سراسری تعریف کرده ایم که در کل محدوده ها (محلی و سراسری) قابلیت دسترسی را دارند.

x = 300
def myfunc():
  print(x)
myfunc()
print(x)

دامنه سراسری یا عمومی (Global Scope) در پایتون (Python)

نام گذاری متغیرها

اگر در داخل و خارج از یک تابع در تعریف یک متغیر از یک نام یکسان استفاده کنید، پایتون آن ها را به عنوان دو متغیر جداگانه می شناسد، یکی در محدوده محلی (درون دابع) و دیگری در محدوده سراسری (خارج از تابع).

مثال: در این مثال دو متغیر هم نام ایجاد کردیم که یکی در داخل تابع (دامنه محلی) است و دیگری در خارج از نابع (دامنه سراسری) که در آن print داخل تابع همان x محلی را چاپ می کند و print خارج تابع x سراسری را چاپ می کند.

x = 300
def myfunc():
  x = 200
  print(x)
myfunc()
print(x)

نام گذاری یکسان متغیرهای سراسری و محلی در پایتون (Python)

کلمه کلیدی Global

اگر نیاز دارید که در داخل یک تابع که محدوده محلی محسوب می شود، یک متغیر در محدوده سراسری ایجاد کنید، می توانید از کلمه کلیدی Global استفاده کنید.

کلمه کلیدی Global یک متغیر در داخل محدوده محلی را به یک متغیر سراسری تبدیل می کند.

مثال: در زیر با استفاده از کلمه کلیدی Global یک متغیر سراسری در درون یک تابع تعریف کرده ایم.

def myfunc():
  global x
  x = 300
myfunc()
print(x)

کلمه کلیدی Global در پایتون (Python)

همچنین برای تغییر در یک متغیر سراسری درون یک تابع هم می توانید از کلمه کلیدی Global استفاده کنید.

مثال: در این مثال ابتدا یک متغیر سراسری ایجاد کردیم و سپس در درون تابع با استفاده از کلمه کلیدی Global مقدار آن را تغییر داده ایم.

x = 300
def myfunc():
  global x
  x = 200
myfunc()
print(x)

کلمه کلیدی Global در پایتون (Python)