🧑🏻💻 Decorators Quiz
خروجی کد زیر چیست؟
خروجی کد زیر چیست؟
def deco1(func):
def wrapper():
return "A" + func()
return wrapper
def deco2(func):
def wrapper():
return func() + "B"
return wrapper
@deco1
@deco2
def hello():
return "Hello"
print(hello())
👏13
📸 زوم کن و جزئیات رو ببین!
🔑 فرق دو عکس فقط یه چیزه: بلد بودن تکنیکهای پرامپتنویسی! عکس بالا با 15 کلمه و عکس دوم 180 کلمه است که جزئیات رو توضیح داده.
فرقی نداره طراح باشی، معلم، تولیدکننده محتوا، فریلنسر یا حتی صاحب کسبوکار
درسته که هوش مصنوعی کارت رو سریعتر، خلاقانهتر و حرفهایتر میکنه، ولی به شرطی که بلد باشی چطوری باهاش صحبت کنی.
💻 توی دوره پرامپتنویسی، نه تنها یاد میگیری عکس و محتوا بسازی، بلکه روشهای درست کار با هوش مصنوعی رو به شکل شخصیسازیشده با شغل و هدفت یاد میگیری.
لینک ثبتنام در دوره پرامپت تخصصی
پشتیبانی: @pythopia
🔑 فرق دو عکس فقط یه چیزه: بلد بودن تکنیکهای پرامپتنویسی! عکس بالا با 15 کلمه و عکس دوم 180 کلمه است که جزئیات رو توضیح داده.
فرقی نداره طراح باشی، معلم، تولیدکننده محتوا، فریلنسر یا حتی صاحب کسبوکار
درسته که هوش مصنوعی کارت رو سریعتر، خلاقانهتر و حرفهایتر میکنه، ولی به شرطی که بلد باشی چطوری باهاش صحبت کنی.
💻 توی دوره پرامپتنویسی، نه تنها یاد میگیری عکس و محتوا بسازی، بلکه روشهای درست کار با هوش مصنوعی رو به شکل شخصیسازیشده با شغل و هدفت یاد میگیری.
لینک ثبتنام در دوره پرامپت تخصصی
پشتیبانی: @pythopia
❤15
جنریتور (generator) درپایتون چیست؟
< قسمت 1 >
فرض کن میخوای از ۱ تا ۵۰ رو بشماری. به جای اینکه همهی عددها رو توی یه لیست بزرگ بنویسی و بعد یکی یکی به کسی بدی، میتونی از یه خط تولید استفاده کنی.
جنریتور دقیقا مثل این خط تولید عمل میکنه:
بهش میگی: "عدد اول رو تولید کن."
اون عدد "۱" رو تولید میکنه و بهت میده.
اونجا وایمیسته و منتظر میمونه.
بهش میگی: "عدد بعدی."
اون "۲" رو تولید میکنه و بهت میده.
و همینطور ادامه میده تا تموم بشه.
این کار باعث میشه حافظه (RAM) کامپیوترت پر نشه، چون نیازی نیست تمام اعداد رو از اول تا آخر توی حافظه نگهداری کنی. در هر لحظه، فقط یک عدد در حال تولید یا استفاده است.
چطور یک جنریتور بسازیم؟
جنریتور در پایتون یک تابع خیلی شبیه به توابع عادیه، فقط به جای کلمه return از کلمه کلیدی yield استفاده میکنه.
مثال: ساختن دنباله اعداد
< قسمت 1 >
فرض کن میخوای از ۱ تا ۵۰ رو بشماری. به جای اینکه همهی عددها رو توی یه لیست بزرگ بنویسی و بعد یکی یکی به کسی بدی، میتونی از یه خط تولید استفاده کنی.
جنریتور دقیقا مثل این خط تولید عمل میکنه:
بهش میگی: "عدد اول رو تولید کن."
اون عدد "۱" رو تولید میکنه و بهت میده.
اونجا وایمیسته و منتظر میمونه.
بهش میگی: "عدد بعدی."
اون "۲" رو تولید میکنه و بهت میده.
و همینطور ادامه میده تا تموم بشه.
این کار باعث میشه حافظه (RAM) کامپیوترت پر نشه، چون نیازی نیست تمام اعداد رو از اول تا آخر توی حافظه نگهداری کنی. در هر لحظه، فقط یک عدد در حال تولید یا استفاده است.
چطور یک جنریتور بسازیم؟
جنریتور در پایتون یک تابع خیلی شبیه به توابع عادیه، فقط به جای کلمه return از کلمه کلیدی yield استفاده میکنه.
مثال: ساختن دنباله اعداد
def my_generator():
yield 1
yield 2
yield 3
# استفاده از جنریتور
for number in my_generator():
print(number)
# خروجی:
# 1
# 2
# 3
👍10❤5
جنریتور (generator) چیست؟
< قسمت2 >
همونطور که در مثال بالا دیدیم، تابع my_generator هر بار که yield رو میبینه، یک مقدار رو برمیگردونه و متوقف میشه. بعدش وقتی for میخواد مقدار بعدی رو بگیره، جنریتور از همانجا که متوقف شده بود دوباره شروع به کار میکنه.
میتونی از جنریتورا برای کارهای بزرگ و پیچیده استفاده کنی که اگر با روشهای معمولی انجام بشن، کامپیوترت رو کند یا حتی هنگ میکنه.
مثال: خواندن یک فایل خیلی بزرگ
فرض کن یک فایل لاگ داری که حجمش ۱ ترابایته! اگر بخوای کل فایل رو توی یک لیست بخونی، کامپیوترت قطعاً از کار میافته.
بیا یه جنریتور بنویسیم که خط به خط فایل رو بخونه و بهت بده.
این کد فقط یک خط رو در هر لحظه به حافظه میآره، که باعث سرعت و بهینه شدن برنامه میشه
< قسمت2 >
همونطور که در مثال بالا دیدیم، تابع my_generator هر بار که yield رو میبینه، یک مقدار رو برمیگردونه و متوقف میشه. بعدش وقتی for میخواد مقدار بعدی رو بگیره، جنریتور از همانجا که متوقف شده بود دوباره شروع به کار میکنه.
میتونی از جنریتورا برای کارهای بزرگ و پیچیده استفاده کنی که اگر با روشهای معمولی انجام بشن، کامپیوترت رو کند یا حتی هنگ میکنه.
مثال: خواندن یک فایل خیلی بزرگ
فرض کن یک فایل لاگ داری که حجمش ۱ ترابایته! اگر بخوای کل فایل رو توی یک لیست بخونی، کامپیوترت قطعاً از کار میافته.
بیا یه جنریتور بنویسیم که خط به خط فایل رو بخونه و بهت بده.
def read_large_file(file_path):
with open(file_path, 'r') as file:
for line in file:
yield line.strip()
# حالا میشه روی هر خط کار کرد بدون اینکه کل فایل رو در حافظه نگه داری
log_lines = read_large_file('my_gigantic_log.txt')
for line in log_lines:
if 'ERROR' in line:
print(f"Error found: {line}")
این کد فقط یک خط رو در هر لحظه به حافظه میآره، که باعث سرعت و بهینه شدن برنامه میشه
❤11👍2
روز جهانی برنامه نویس مبارک🥳
به همین مناسبت میتونید تا ساعت ۲۳:۵۹ روز ۲۳ شهریور از تخفیف پنجاه درصدی روی دوره های خصوصی پایتون و طراحی سایت بهره مند بشید.
🎁کارگاه پرامپت نویسی(آموزش هوش مصنوعی) هم برای همه اعضای این کانال با تخفیف ویژه، فقط ۸۰ هزار تومن میباشد.
ثبتنام و اطلاعات بیشتر: @pythopia
@pythopiachannel
به همین مناسبت میتونید تا ساعت ۲۳:۵۹ روز ۲۳ شهریور از تخفیف پنجاه درصدی روی دوره های خصوصی پایتون و طراحی سایت بهره مند بشید.
🎁کارگاه پرامپت نویسی(آموزش هوش مصنوعی) هم برای همه اعضای این کانال با تخفیف ویژه، فقط ۸۰ هزار تومن میباشد.
ثبتنام و اطلاعات بیشتر: @pythopia
@pythopiachannel
❤13👍3
🛠 Git چیه و چرا هر برنامهنویس حرفهای باید عاشقش باشه
Git
یه سیستم کنترل نسخه است. یعنی هر تغییری
روی کدهات انجام بدی، ثبت میشه و هر وقت بخوای میتونی برگردی. دیگه نگران خراب شدن پروژه یا گم شدن فایلها نیستی.
مثال عملی:
برگشت به نسخه قبل:
همکاری تیمی امن: هر نفر روی بخشی کار میکنه، Git همه تغییرات رو هماهنگ میکنه:
چرا مهمه؟
💠مدیریت پروژه راحتتر میشه
💠همکاری تیمی امن و بدون دردسره
💠اشتباهات قابل بازیابی هستن
💠پروژهها رو راحت با دنیا به اشتراک میذاری
@pythopiachannel
Git
یه سیستم کنترل نسخه است. یعنی هر تغییری
روی کدهات انجام بدی، ثبت میشه و هر وقت بخوای میتونی برگردی. دیگه نگران خراب شدن پروژه یا گم شدن فایلها نیستی.
مثال عملی:
برگشت به نسخه قبل:
git checkout HEAD~1
همکاری تیمی امن: هر نفر روی بخشی کار میکنه، Git همه تغییرات رو هماهنگ میکنه:
git add .
git commit -m "Add login feature"
git push origin main
چرا مهمه؟
💠مدیریت پروژه راحتتر میشه
💠همکاری تیمی امن و بدون دردسره
💠اشتباهات قابل بازیابی هستن
💠پروژهها رو راحت با دنیا به اشتراک میذاری
@pythopiachannel
❤11🔥2
آخر این GET و POST توی وب دقیقا چی ان؟
تصور کن رفتی داروخانه:
میگی: «قرص سردرد دارین؟» ✅ داروساز فقط جواب میده بله/خیر. این میشه GET. فقط اطلاعات میگیری، چیزی نمیدی.
حالا میگی: «این نسخه رو دارم، لطفاً داروهاشو برام بیارین.» 📝 این میشه POST. داری اطلاعات جدید میدی (نسخهت)، داروساز بر اساس اون برات کاری انجام میده.
🔑 توی وب هم همینه:
وقتی آدرس سایت رو توی مرورگر میزنی داری GET میکنی. فقط میخوای اطلاعات بگیری (مثل لیست مقالات).
وقتی فرم پر میکنی (مثلاً ثبتنام یا لاگین) داری POST میکنی. داری یه چیزی میفرستی سمت سرور تا ثبت بشه یا بررسی بشه.
👨💻 حالا چرا مهمه؟
باید بدونی GET سادهست و آدرسش توی URL دیده میشه (خطر لو رفتن اطلاعات حساس).
اماPOST امنتره چون دیتا توی body درخواست میره، نه توی URL. برای همین همیشه برای فرمهای لاگین و ثبتنام از POST استفاده میکنیم.
@pythopiachannel
تصور کن رفتی داروخانه:
میگی: «قرص سردرد دارین؟» ✅ داروساز فقط جواب میده بله/خیر. این میشه GET. فقط اطلاعات میگیری، چیزی نمیدی.
حالا میگی: «این نسخه رو دارم، لطفاً داروهاشو برام بیارین.» 📝 این میشه POST. داری اطلاعات جدید میدی (نسخهت)، داروساز بر اساس اون برات کاری انجام میده.
🔑 توی وب هم همینه:
وقتی آدرس سایت رو توی مرورگر میزنی داری GET میکنی. فقط میخوای اطلاعات بگیری (مثل لیست مقالات).
وقتی فرم پر میکنی (مثلاً ثبتنام یا لاگین) داری POST میکنی. داری یه چیزی میفرستی سمت سرور تا ثبت بشه یا بررسی بشه.
👨💻 حالا چرا مهمه؟
باید بدونی GET سادهست و آدرسش توی URL دیده میشه (خطر لو رفتن اطلاعات حساس).
اماPOST امنتره چون دیتا توی body درخواست میره، نه توی URL. برای همین همیشه برای فرمهای لاگین و ثبتنام از POST استفاده میکنیم.
@pythopiachannel
❤10
Pythopia
آخر این GET و POST توی وب دقیقا چی ان؟ تصور کن رفتی داروخانه: میگی: «قرص سردرد دارین؟» ✅ داروساز فقط جواب میده بله/خیر. این میشه GET. فقط اطلاعات میگیری، چیزی نمیدی. حالا میگی: «این نسخه رو دارم، لطفاً داروهاشو برام بیارین.» 📝 این میشه POST. داری اطلاعات…
📌 مثال واقعی از جنگو:
اینجا:
وقتی کاربر برای اولین بار وارد /login/ میشه، یه GET اتفاق افتاده (فقط صفحه رو میبینه).
وقتی فرم رو پر میکنه و میزنه روی دکمه ورود، یه POST میره سمت سرور.
@pythopiachannel
# urls.py
path("login/", views.login_view)
# views.py
from django.shortcuts import render
from django.http import HttpResponse
def login_view(request):
if request.method == "POST":
# یعنی کاربر فرم لاگین رو فرستاده
username = request.POST.get("username")
password = request.POST.get("password")
return HttpResponse(f"سلام {username}، وارد شدی ✅")
else:
# یعنی کاربر فقط صفحه لاگین رو میخواد
return render(request, "login.html")
اینجا:
وقتی کاربر برای اولین بار وارد /login/ میشه، یه GET اتفاق افتاده (فقط صفحه رو میبینه).
وقتی فرم رو پر میکنه و میزنه روی دکمه ورود، یه POST میره سمت سرور.
@pythopiachannel
❤12
Forwarded from انجمن مهندسی کامپیوتر دانشگاه الزهرا(س)تهران
┄┄┅┅┅🌷⃟🇮🇷 ┅┅┅┄┄
انجمن علمی دانشجویی مهندسی کامپیوتر معاونت فرهنگی اجتماعی دانشگاه الزهرا(س) با همکاری پایتوپیا برگزار میکند:
«دوره جامع و پروژهمحور تحلیل داده با پایتون»
با تحلیل داده، به دنیای ناشناخته قدم بذار!
👤مدرس دوره:
• سارا پورخلیل
دانش آموخته علوم کامپیوتر از دانشگاه علم و صنعت
📜 معرفی دوره:
قراره توی این دوره از صفر با دنیای داده آشنا بشیم؛ از کار با فایلها و پاکسازی تا تحلیل، مصورسازی و حتی ساخت یه مدل رگرسیون خطی ساده. همهی این کارها رو با NumPy، Pandas و Matplotlib انجام میدیم.
🔔 تاریخ شروع دوره:
۲۵ مهر
⏳ مدت زمان دوره:
۱۲ جلسه – آنلاین در بستر اسکایروم
دسترسی به فیلمها و جزوات دوره
💸 هزینه ثبتنام:
دانشجویان دانشگاه الزهرا(س) و علموصنعت: ۱,۱۰۰,۰۰۰ تومان
سایر دانشجویان و دانشآموزان: ۱,۶۰۰,۰۰۰ تومان
عموم افراد: ۱,۸۰۰,۰۰۰ تومان
📌 همراه با ارائه گواهی دوزبانه معتبر انجمن دانشگاه
جهت ثبتنام و کسب اطلاعات بیشتر به @ace_sso در تلگرام یا بله مراجعه کنید.
💻 https://www.tgoop.com/ACSS0
❅ معاونت فرهنگی و اجتماعی دانشگاه الزهرا (س) ❅
https://eitaa.com/farhangialzahraplans
انجمن علمی دانشجویی مهندسی کامپیوتر معاونت فرهنگی اجتماعی دانشگاه الزهرا(س) با همکاری پایتوپیا برگزار میکند:
«دوره جامع و پروژهمحور تحلیل داده با پایتون»
با تحلیل داده، به دنیای ناشناخته قدم بذار!
👤مدرس دوره:
• سارا پورخلیل
دانش آموخته علوم کامپیوتر از دانشگاه علم و صنعت
📜 معرفی دوره:
قراره توی این دوره از صفر با دنیای داده آشنا بشیم؛ از کار با فایلها و پاکسازی تا تحلیل، مصورسازی و حتی ساخت یه مدل رگرسیون خطی ساده. همهی این کارها رو با NumPy، Pandas و Matplotlib انجام میدیم.
🔔 تاریخ شروع دوره:
۲۵ مهر
⏳ مدت زمان دوره:
۱۲ جلسه – آنلاین در بستر اسکایروم
دسترسی به فیلمها و جزوات دوره
💸 هزینه ثبتنام:
دانشجویان دانشگاه الزهرا(س) و علموصنعت: ۱,۱۰۰,۰۰۰ تومان
سایر دانشجویان و دانشآموزان: ۱,۶۰۰,۰۰۰ تومان
عموم افراد: ۱,۸۰۰,۰۰۰ تومان
📌 همراه با ارائه گواهی دوزبانه معتبر انجمن دانشگاه
جهت ثبتنام و کسب اطلاعات بیشتر به @ace_sso در تلگرام یا بله مراجعه کنید.
💻 https://www.tgoop.com/ACSS0
❅ معاونت فرهنگی و اجتماعی دانشگاه الزهرا (س) ❅
https://eitaa.com/farhangialzahraplans
🔥8👍1
📌 معرفی کتابخونه typing در پایتون
شاید برات پیش اومده باشه که وقتی کدی مینویسی، بعد از یه مدت یادت میره یه تابع دقیقا چه ورودی میگرفت یا خروجیش چی بود 🤔
توی اینجور مواقع کتابخونهی typing به دادت میرسه!
یکی از پرکاربردترینها: List
با List میگی که لیستت دقیقا چه نوع دادهای رو نگه میداره.
🔹 مثال ۱: لیست از عدد صحیح
🔹 مثال ۲: لیست از رشتهها
🔹 مثال ۳: لیست توی لیست
⚡️ نکته مهم:
از پایتون ۳.۹ به بعد لازم نیست از typing.List استفاده کنی، میتونی راحتتر بنویسی:
@pythopiachannel
شاید برات پیش اومده باشه که وقتی کدی مینویسی، بعد از یه مدت یادت میره یه تابع دقیقا چه ورودی میگرفت یا خروجیش چی بود 🤔
توی اینجور مواقع کتابخونهی typing به دادت میرسه!
کتابخونه typing چیه؟
یه کتابخونه داخلی (built-in) توی پایتونه که برای type hinting یا همون "اشاره به نوع دادهها" استفاده میشه.
باهاش میتونی به پایتون و بقیه برنامهنویسها بفهمونی:
🔹 ورودی یه تابع چه نوعیه
🔹 خروجی تابع چی برمیگردونه
🔹 یا یه متغیر چه نوع دادهایه
یکی از پرکاربردترینها: List
با List میگی که لیستت دقیقا چه نوع دادهای رو نگه میداره.
🔹 مثال ۱: لیست از عدد صحیح
from typing import List
def sum_numbers(numbers: List[int]) -> int:
return sum(numbers)
print(sum_numbers([1, 2, 3])) # 6
🔹 مثال ۲: لیست از رشتهها
def join_words(words: List[str]) -> str:
return " ".join(words)
print(join_words(["world", "hi"]))
#hi world
🔹 مثال ۳: لیست توی لیست
def matrix_size(matrix: List[List[int]]) -> str:
return f"{len(matrix)} x {len(matrix[0])}"
print(matrix_size([[1, 2], [3, 4], [5, 6]])) # "3 x 2"
⚡️ نکته مهم:
از پایتون ۳.۹ به بعد لازم نیست از typing.List استفاده کنی، میتونی راحتتر بنویسی:
def sum_numbers(numbers: list[int]) -> int:
return sum(numbers)
کتابخونهی typing فقط برای List نیست، کلی ابزار دیگه هم داره مثل Dict, Tuple, Optional, Union و... که همهشون برای خواناتر و قابلاعتمادتر شدن کدت به کار میان
@pythopiachannel
❤8🔥4👏1
در پایتون وقتی از async و await استفاده میکنیم، هدف اصلی چیست؟
Anonymous Quiz
16%
اجرای کدها به صورت چند رشتهای (multithreading)
12%
اجرای کدها به صورت موازی روی چند CPU
44%
مدیریت بهتر کارهای همزمان (concurrent) بدون بلاک شدن برنامه
28%
سریعتر کردن تمام کدهای پایتون بدون استثنا
🔥10
🔥9👍1🙏1
جادوگر پر سرعت پایتون
AsyncIO
پایتون زبون قدرتمندیه ولی به خاطر قفل سراسری مفسر (GIL) تو سرعتهای خیلی بالا محدود میشه.
اینجا GIL مثل یه بلیت VIP عمل میکنه: فقط یه نخ (thread) میتونه در هر لحظه اجرا بشه، حتی اگه CPU ی شما 16 هستهای باشه.
حالا برای سریعتر شدن باید بدونیم کارمون CPU-bound هست یا I/O-bound.
کار های CPU-bound مثل پردازش تصویر یا تحلیل دادههای سنگین نیاز به حساب و کتاب مداوم داره. اینجا باید از Multiprocessing استفاده کنیم چون هر پروسه مفسر خودش رو داره و روی هستههای مختلف بهصورت موازی اجرا میشه، پس محدودیت GIL رو دور میزنیم.
عملیات I/O-bound مثل گرفتن داده از چند API یا کار با دیتابیس، بیشتر وقتش صرف انتظار میشه. اینجا AsyncIO بهترین انتخابه چون به جای منتظر موندن، پایتون سراغ کار بعدی میره و از زمان CPU نهایت استفاده میکنه.
نتیجه: برای کارهای محاسباتی از Multiprocessing و برای کارهای پر از انتظار مثل درخواستهای شبکهای از AsyncIO استفاده میکنیم.
⚡6❤1