بازگشت به دوره

آموزش رایگان صفر تا صد پایتون (Python) به زبان ساده

0% تکمیل‌شده
0/0 مرحله
  1. معرفی پایتون
  2. شروع کار با پایتون
  3. دستور زبان پایتون (Python Syntax)
  4. توضیح کامنت‌ها در پایتون
  5. متغیرها در پایتون
  6. نام‌های متغیر در پایتون
  7. معرفی متغیرها در پایتون و اختصاص چندین مقدار به آن‌ها
  8. معرفی متغیرها در خروجی با استفاده از پایتون
  9. متغیرهای سراسری (Global Variables) در پایتون
  10. انواع داده‌ها در پایتون
  11. انواع اعداد در پایتون
  12. تبدیل نوع داده در پایتون (Python Casting)
  13. رشته‌ها در پایتون (Python Strings)
  14. برش دادن رشته‌ها در پایتون (Python - Slicing Strings)
  15. تغییر رشته‌ها در پایتون
  16. ترکیب رشته‌ها در پایتون (String Concatenation)
  17. آشنایی با فرمت‌بندی رشته‌ها در پایتون
  18. کاراکترهای Escape در پایتون
  19. مقدمه‌ای بر بولی‌ها (Booleans) در پایتون
  20. عملگرها در پایتون
  21. لیست‌ها در پایتون
  22. دسترسی به آیتم‌های لیست در پایتون
  23. تغییر مقدار آیتم‌های لیست در پایتون
  24. افزودن آیتم به لیست در پایتون
  25. حذف آیتم‌ها از لیست در پایتون
  26. حلقه زدن در لیست‌ها در پایتون
  27. معرفی List Comprehension در پایتون
  28. مرتب‌سازی لیست‌ها در پایتون
  29. کپی کردن لیست‌ها در پایتون
  30. اتصال (Join) لیست‌ها در پایتون
  31. آشنایی با Tuple در پایتون
  32. دسترسی به آیتم‌های یک Tuple در پایتون
  33. بروزرسانی Tuple در پایتون
  34. باز کردن (Unpacking) Tuple در پایتون
  35. حلقه‌ها در Tupleها در پایتون
  36. آموزش ترکیب و تکرار تاپل‌ها در پایتون (Join Tuples)
  37. مجموعه‌ها (Set) در پایتون
  38. دسترسی به آیتم‌های مجموعه (Set) در پایتون
  39. افزودن آیتم به Set در پایتون
  40. حذف آیتم‌ها از Set در Python
  41. حلقه در مجموعه‌ها (Set) در پایتون
  42. روش‌های ترکیب مجموعه‌ها در پایتون (Join Sets)
  43. دیکشنری‌ها در پایتون
  44. دسترسی به آیتم‌های دیکشنری در پایتون
  45. تغییر مقادیر دیکشنری در پایتون
  46. اضافه کردن آیتم‌ها به دیکشنری در پایتون
  47. حذف آیتم‌ها از دیکشنری در پایتون
  48. استفاده از حلقه‌ها در دیکشنری‌ها در پایتون
  49. کپی کردن دیکشنری در پایتون
  50. دیکشنری‌های تو در تو در پایتون (Nested Dictionaries)
  51. شرط‌ها و دستور If در پایتون
  52. حلقه‌های while در پایتون
  53. حلقه‌های for در پایتون
  54. توابع در پایتون
  55. معرفی فانکشن‌های لامبدا در پایتون
  56. آرایه‌ها (Arrays) در پایتون
  57. کلاس‌ها و اشیا در پایتون
  58. وراثت (Inheritance) در پایتون
  59. ایتریتور (یکی یکی پیش رفتن) در پایتون
  60. چندریختی (Polymorphism) در پایتون
  61. محدوده (Scope) در پایتون
  62. ماژول در پایتون چیست؟
  63. کار با تاریخ در پایتون
  64. ریاضیات در پایتون
  65. JSON در پایتون به زبان ساده
  66. عبارات منظم (RegEx) در پایتون
  67. Python PIP
  68. معرفی Try-Except در پایتون
  69. ورودی کاربر در پایتون
  70. فرمت‌بندی رشته‌ها در پایتون

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

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

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

مثال: متغیر محلی

def myfunc():
    x = 300  # متغیر x فقط در این تابع قابل استفاده است
    print(x)

myfunc()

# print(x)   این خط خطا می‌دهد چون x خارج از تابع وجود ندارد.

📌 نکته: متغیر x فقط داخل myfunc() شناخته می‌شود و بیرون از آن نامعتبر است.


🔄 ۲. تابع داخل تابع (Nested Functions)

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

مثال: دسترسی به متغیر محلی از داخل تابع داخلی

def myfunc():
    x = 300  # این متغیر محلی است

    def myinnerfunc():
        print(x)  # اینجا x قابل دسترسی است

    myinnerfunc()

myfunc()

📌 نکته: تابع داخلی (myinnerfunc()) می‌تواند از x که در تابع myfunc() تعریف شده استفاده کند.


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

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

مثال: متغیر سراسری

x = 300  # این یک متغیر سراسری است

def myfunc():
    print(x)  # اینجا x قابل دسترسی است

myfunc()

print(x)  # اینجا هم x همچنان در دسترس است

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


⚠️ ۴. اگر اسم متغیر درون تابع و بیرون آن یکی باشد؟

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

مثال: متغیر محلی و سراسری با نام مشابه

x = 300  # متغیر سراسری

def myfunc():
    x = 200  # متغیر محلی (متفاوت از x سراسری)
    print(x)  # مقدار 200 چاپ می‌شود

myfunc()

print(x)  # مقدار 300 چاپ می‌شود (چون این x سراسری است)

📌 نکته: x داخل تابع با x خارج از تابع فرق دارد و مقدار آن‌ها روی هم تأثیر نمی‌گذارد.


🔥 ۵. دستور global برای تغییر متغیر سراسری

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

مثال: تغییر مقدار متغیر سراسری با global

x = 300  # متغیر سراسری

def myfunc():
    global x  # اعلام می‌کنیم که می‌خواهیم x سراسری را تغییر دهیم
    x = 200   # مقدار جدید برای x

myfunc()

print(x)  # مقدار 200 چاپ می‌شود

📌 نکته: بدون global، مقدار x فقط داخل تابع تغییر می‌کرد و مقدار سراسری آن ثابت می‌ماند.


🔄 ۶. دستور nonlocal برای تغییر متغیر درون تابع داخلی

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

مثال: استفاده از nonlocal

def myfunc1():
    x = "Jane"  # متغیر در تابع بیرونی

    def myfunc2():
        nonlocal x  # اجازه می‌دهیم مقدار x تغییر کند
        x = "hello"

    myfunc2()
    return x

print(myfunc1())  # خروجی: hello

📌 نکته: بدون nonlocal، x در myfunc2() به یک متغیر جدید تبدیل می‌شد و مقدار x در myfunc1() تغییر نمی‌کرد.


🎯 چالش برای شما!

۱. یک متغیر سراسری به نام count بساز و مقدار آن را درون یک تابع با global تغییر بده.
۲. یک تابع تو در تو بساز که مقدار متغیر تابع بیرونی را با nonlocal تغییر دهد.