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 - آرایه‌ها (Arrays)

JavaScript – آرایه‌ها (Arrays)

آرایه در جاوااسکریپت متغیری خاص است که می‌تواند بیش از یک مقدار را ذخیره کند. const cars = ["Saab",...

بیشتر بخوانید
JavaScript - ویژگی‌های عدد (Number Properties)

JavaScript – ویژگی‌های عدد (Number Properties)

در جاوااسکریپت، شیء Number شامل ویژگی‌هایی از پیش تعریف‌شده است که برای کار با اعداد مفید هستند. این ویژگی‌ها...

بیشتر بخوانید
JavaScript - متدهای عدد (Number Methods)

JavaScript – متدهای عدد (Number Methods)

در جاوا اسکریپت، متدهایی برای کار با اعداد ارائه شده‌اند که می‌توانند روی تمامی اعداد استفاده شوند. متدهای مربوط...

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

نظرات

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

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