دوره‌ها / آموزش پایتون (Python) / حوزه متغیرها (Python Scope)

حوزه متغیرها (Python Scope)

15 دقیقه Article

حوزه متغیرها: متغیر من کجاست؟ (Scope) 🔭📍

یک متغیر فقط در منطقه‌ای که ایجاد شده است قابل دسترسی است. به این منطقه حوزه (Scope) گفته می‌شود. درک درست حوزه متغیرها برای جلوگیری از باگ‌های عجیب و غریب حیاتی است.

۱. حوزه محلی (Local Scope)

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

۲. حوزه سراسری (Global Scope)

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

۳. کلمه کلیدی Global 🌍

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

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

myfunc()
print(x) # 200

۴. حوزه غیرمحلی (Nonlocal Scope)

این کلمه کلیدی در "توابع تو در تو" استفاده می‌شود. اگر بخواهید متغیری که در تابع بیرونی تعریف شده را در تابع داخلی تغییر دهید، از nonlocal استفاده می‌کنیم.

استفاده بیش از حد از Global: سعی کنید تا حد امکان از متغیرهای Global کمتر استفاده کنید. استفاده زیاد از آن‌ها باعث می‌شود ردیابی تغییرات متغیر در پروژه‌های بزرگ بسیار سخت شود.
قانون LEGB: پایتون برای پیدا کردن یک متغیر به این ترتیب جستجو می‌کند: 1. Local (داخلی) 2. Enclosing (توابع دربرگیرنده) 3. Global (سراسری) 4. Built-in (توکار پایتون).

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تغییر متغیر سراسری Medium
سوال تمرین

متغیری به نام count = 0 در خارج تابع دارید. کدی بنویسید که داخل تابع increment با استفاده از کلمه کلیدی مناسب، مقدار این متغیر سراسری را به 1 تغییر دهد.

پاسخ تمرین
PYTHON
count = 0
def increment():
  global count
  count = 1

increment()
print(count)

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.