Python – محدوده دسترسی (Scope)

در پایتون، Scope (محدوده دسترسی) تعیین می‌کند که متغیرها در کدام قسمت از برنامه قابل دسترسی و استفاده هستند. این موضوع به دو نوع اصلی محدوده محلی (Local) و محدوده سراسری (Global) تقسیم می‌شود.

1. محدوده محلی (Local Scope)

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

مثال:

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

myfunc()

در این مثال، متغیر x فقط در داخل تابع myfunc قابل استفاده است.

2. تابع داخل تابع (Function Inside Function)

متغیر محلی (مثل x) می‌تواند توسط توابع داخلی (nested) در همان تابع اصلی استفاده شود.

مثال:

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

myfunc()

اینجا، تابع myinnerfunc می‌تواند به متغیر x که در تابع بیرونی تعریف شده دسترسی داشته باشد.

3. محدوده سراسری (Global Scope)

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

مثال:

x = 300

def myfunc():
    print(x)

myfunc()
print(x)

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

4. نام‌گذاری متغیرها (Naming Variables)

اگر متغیری هم در محدوده سراسری و هم در محدوده محلی تعریف شود، پایتون این دو را به عنوان دو متغیر جداگانه در نظر می‌گیرد.

مثال:

x = 300

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

myfunc()
print(x)

در این مثال، x داخل تابع مقدار ۲۰۰ دارد، اما x در خارج از تابع مقدار ۳۰۰ را نگه می‌دارد.

5. کلمه کلیدی global

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

مثال:

def myfunc():
    global x
    x = 300

myfunc()
print(x)

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

6. کلمه کلیدی nonlocal

از کلمه کلیدی nonlocal برای دسترسی به متغیرهای تعریف شده در توابع خارجی (بیرونی) استفاده می‌شود.

مثال:

def myfunc1():
    x = "Jane"
    def myfunc2():
        nonlocal x
        x = "hello"
    myfunc2()
    return x

print(myfunc1())

در این مثال، متغیر x از تابع myfunc1 در داخل تابع myfunc2 با استفاده از nonlocal تغییر می‌کند.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.