حوزه متغیرها (Python Scope)
حوزه متغیرها: متغیر من کجاست؟ (Scope) 🔭📍
یک متغیر فقط در منطقهای که ایجاد شده است قابل دسترسی است. به این منطقه حوزه (Scope) گفته میشود. درک درست حوزه متغیرها برای جلوگیری از باگهای عجیب و غریب حیاتی است.
۱. حوزه محلی (Local Scope)
متغیری که در داخل یک تابع ایجاد میشود، متعلق به حوزه محلی آن تابع است و فقط در داخل همان تابع قابل استفاده است.
۲. حوزه سراسری (Global Scope)
متغیری که در بدنه اصلی کد پایتون ایجاد میشود، یک متغیر سراسری است و از هر جایی (حتی داخل توابع) قابل دسترسی است.
۳. کلمه کلیدی Global 🌍
اگر بخواهید یک متغیر سراسری را از داخل یک تابع تغییر دهید، باید از کلمه کلیدی global استفاده کنید. در غیر این صورت، پایتون فکر میکند شما در حال ساخت یک متغیر محلی جدید با همان نام هستید.
x = 300
def myfunc():
global x
x = 200
myfunc()
print(x) # 200
۴. حوزه غیرمحلی (Nonlocal Scope)
این کلمه کلیدی در "توابع تو در تو" استفاده میشود. اگر بخواهید متغیری که در تابع بیرونی تعریف شده را در تابع داخلی تغییر دهید، از nonlocal استفاده میکنیم.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
متغیری به نام count = 0 در خارج تابع دارید. کدی بنویسید که داخل تابع increment با استفاده از کلمه کلیدی مناسب، مقدار این متغیر سراسری را به 1 تغییر دهد.
count = 0
def increment():
global count
count = 1
increment()
print(count)
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.