آموزش رایگان صفر تا صد پایتون (Python) به زبان ساده
-
معرفی پایتون
-
شروع کار با پایتون
-
دستور زبان پایتون (Python Syntax)
-
توضیح کامنتها در پایتون
-
متغیرها در پایتون
-
نامهای متغیر در پایتون
-
معرفی متغیرها در پایتون و اختصاص چندین مقدار به آنها
-
معرفی متغیرها در خروجی با استفاده از پایتون
-
متغیرهای سراسری (Global Variables) در پایتون
-
انواع دادهها در پایتون
-
انواع اعداد در پایتون
-
تبدیل نوع داده در پایتون (Python Casting)
-
رشتهها در پایتون (Python Strings)
-
برش دادن رشتهها در پایتون (Python - Slicing Strings)
-
تغییر رشتهها در پایتون
-
ترکیب رشتهها در پایتون (String Concatenation)
-
آشنایی با فرمتبندی رشتهها در پایتون
-
کاراکترهای Escape در پایتون
-
مقدمهای بر بولیها (Booleans) در پایتون
-
عملگرها در پایتون
-
لیستها در پایتون
-
دسترسی به آیتمهای لیست در پایتون
-
تغییر مقدار آیتمهای لیست در پایتون
-
افزودن آیتم به لیست در پایتون
-
حذف آیتمها از لیست در پایتون
-
حلقه زدن در لیستها در پایتون
-
معرفی List Comprehension در پایتون
-
مرتبسازی لیستها در پایتون
-
کپی کردن لیستها در پایتون
-
اتصال (Join) لیستها در پایتون
-
آشنایی با Tuple در پایتون
-
دسترسی به آیتمهای یک Tuple در پایتون
-
بروزرسانی Tuple در پایتون
-
باز کردن (Unpacking) Tuple در پایتون
-
حلقهها در Tupleها در پایتون
-
آموزش ترکیب و تکرار تاپلها در پایتون (Join Tuples)
-
مجموعهها (Set) در پایتون
-
دسترسی به آیتمهای مجموعه (Set) در پایتون
-
افزودن آیتم به Set در پایتون
-
حذف آیتمها از Set در Python
-
حلقه در مجموعهها (Set) در پایتون
-
روشهای ترکیب مجموعهها در پایتون (Join Sets)
-
دیکشنریها در پایتون
-
دسترسی به آیتمهای دیکشنری در پایتون
-
تغییر مقادیر دیکشنری در پایتون
-
اضافه کردن آیتمها به دیکشنری در پایتون
-
حذف آیتمها از دیکشنری در پایتون
-
استفاده از حلقهها در دیکشنریها در پایتون
-
کپی کردن دیکشنری در پایتون
-
دیکشنریهای تو در تو در پایتون (Nested Dictionaries)
-
شرطها و دستور If در پایتون
-
حلقههای while در پایتون
-
حلقههای for در پایتون
-
توابع در پایتون
-
معرفی فانکشنهای لامبدا در پایتون
-
آرایهها (Arrays) در پایتون
-
کلاسها و اشیا در پایتون
-
وراثت (Inheritance) در پایتون
-
ایتریتور (یکی یکی پیش رفتن) در پایتون
-
چندریختی (Polymorphism) در پایتون
-
محدوده (Scope) در پایتون
-
ماژول در پایتون چیست؟
-
کار با تاریخ در پایتون
-
ریاضیات در پایتون
-
JSON در پایتون به زبان ساده
-
عبارات منظم (RegEx) در پایتون
-
Python PIP
-
معرفی Try-Except در پایتون
-
ورودی کاربر در پایتون
-
فرمتبندی رشتهها در پایتون
محدوده (Scope) در پایتون
وقتی یک متغیر را تعریف میکنی، فقط در همان محدودهای که ساخته شده قابل استفاده است. به این محدوده 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
تغییر دهد.