[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"post-data-python-pishrafte":3,"comments-30":57},{"post":4,"course":40,"related":41},{"id":5,"slug":6,"title":7,"content":8,"excerpt":9,"category":10,"date":11,"readTime":12,"wordCount":13,"image":14,"author":15,"authorRole":16,"authorImg":17,"reviewedBy":18,"tags":19,"relatedCourseSlug":21,"categoryKey":22,"summaryPoints":23,"faq":27,"seoTitle":37,"seoDesc":38,"createdAtIso":39,"updatedAtIso":39,"updatedDate":40},30,"python-pishrafte","آموزش پایتون پیشرفته: بعد از پایتون مقدماتی دقیقاً چه چیزهایی یاد بگیرم؟","\n\u003Cp>بعد از یادگرفتن متغیر، شرط، حلقه و تابع، بیشتر برنامه‌نویسان تازه‌کار به یک دیوار می‌خورند: برنامه‌های کوچک را می‌نویسند، ولی نمی‌دانند برنامه‌ی واقعی و بزرگ چطور ساخته می‌شود. «پایتون پیشرفته» دقیقاً همین فاصله است؛ نه ترفندهای عجیب زبان، بلکه ابزارهایی که کد را قابل نگهداری، قابل استفاده‌ی دوباره و آماده‌ی دنیای واقعی می‌کنند.\u003C\u002Fp>\n\n\u003Cp>این مقاله فهرست همان ابزارهاست، به ترتیبی که بهتر است یاد بگیرید، با یک مثال کوتاه برای هر کدام.\u003C\u002Fp>\n\n\u003Ch2>از کجا بفهمم آماده‌ی پایتون پیشرفته هستم؟\u003C\u002Fh2>\n\n\u003Cul>\n  \u003Cli>برنامه‌ای با چند تابع می‌نویسید که کار مشخصی انجام می‌دهد، بدون اینکه برای هر خط دنبال آموزش بگردید.\u003C\u002Fli>\n  \u003Cli>با لیست و دیکشنری راحت‌اید و می‌دانید کی از کدام استفاده کنید.\u003C\u002Fli>\n  \u003Cli>پیغام‌های خطا را می‌خوانید و معمولاً خودتان مشکل را پیدا می‌کنید.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>اگر هنوز این‌طور نیست، اول \u003Ca href=\"\u002Flearning\u002Famoozesh-python-az-sefr\">نقشه‌ی راه پایتون از صفر\u003C\u002Fa> را تمام کنید و چند \u003Ca href=\"\u002Flearning\u002Fproje-python-mobtadi\">پروژه‌ی مبتدی\u003C\u002Fa> بسازید.\u003C\u002Fp>\n\n\u003Ch2>۱. برنامه‌نویسی شی‌گرا (OOP)\u003C\u002Fh2>\n\n\u003Cp>مهم‌ترین قدم. شی‌گرایی یعنی داده و رفتارهای مربوط به آن را کنار هم در یک «کلاس» نگه دارید. تقریباً همه‌ی کتابخانه‌ها و فریم‌ورک‌های پایتون، از جنگو تا کتابخانه‌های هوش مصنوعی، بر پایه‌ی کلاس ساخته شده‌اند.\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>class BankAccount:\n    def __init__(self, owner, balance=0):\n        self.owner = owner\n        self.balance = balance\n\n    def deposit(self, amount):\n        self.balance += amount\n\n    def withdraw(self, amount):\n        if amount &gt; self.balance:\n            raise ValueError(\"Not enough balance\")\n        self.balance -= amount\n\naccount = BankAccount(\"Sara\", 1000)\naccount.deposit(500)\naccount.withdraw(300)\nprint(account.owner, account.balance)\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>مفاهیم بعدی در همین بخش: وراثت (کلاسی که ویژگی‌های کلاس دیگر را به ارث می‌برد)، متدهای ویژه مثل \u003Ccode>__str__\u003C\u002Fcode> و کپسوله‌سازی.\u003C\u002Fp>\n\n\u003Ch2>۲. کار با خطا و مدیریت منابع\u003C\u002Fh2>\n\n\u003Cp>برنامه‌ی واقعی باید با ورودی غلط، فایل ناموجود یا قطع اینترنت کنار بیاید، نه اینکه از کار بیفتد.\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>try:\n    with open(\"data.txt\", encoding=\"utf-8\") as f:\n        content = f.read()\nexcept FileNotFoundError:\n    print(\"File not found, starting fresh\")\n    content = \"\"\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>عبارت \u003Ccode>with\u003C\u002Fcode> مطمئن می‌شود فایل حتی در صورت بروز خطا بسته شود. همین الگو برای اتصال به دیتابیس و شبکه هم به کار می‌رود.\u003C\u002Fp>\n\n\u003Ch2>۳. توابع پیشرفته و دکوراتور\u003C\u002Fh2>\n\n\u003Cp>در پایتون تابع هم یک مقدار است: می‌شود آن را به تابع دیگری داد یا از تابعی برگرداند. دکوراتور از همین ویژگی استفاده می‌کند تا بدون تغییر یک تابع، رفتاری به آن اضافه کند.\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>import time\n\ndef timer(func):\n    def wrapper(*args, **kwargs):\n        start = time.time()\n        result = func(*args, **kwargs)\n        print(func.__name__, \"took\", round(time.time() - start, 3), \"seconds\")\n        return result\n    return wrapper\n\n@timer\ndef slow_sum(n):\n    return sum(range(n))\n\nslow_sum(1_000_000)\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>در همین بخش: \u003Ccode>*args\u003C\u002Fcode> و \u003Ccode>**kwargs\u003C\u002Fcode>، تابع lambda، و comprehension‌ها برای ساخت لیست و دیکشنری در یک خط.\u003C\u002Fp>\n\n\u003Ch2>۴. ژنراتورها\u003C\u002Fh2>\n\n\u003Cp>وقتی داده خیلی بزرگ است، لازم نیست همه‌اش را یک‌جا در حافظه بریزید. ژنراتور مقدارها را یکی‌یکی و فقط وقتی لازم است می‌سازد.\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>def read_large_file(path):\n    with open(path, encoding=\"utf-8\") as f:\n        for line in f:\n            yield line.strip()\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>این تابع می‌تواند فایلی چند گیگابایتی را خط‌به‌خط پردازش کند، بدون اینکه حافظه پر شود.\u003C\u002Fp>\n\n\u003Ch2>۵. داده‌های ساختاریافته: JSON و CSV\u003C\u002Fh2>\n\n\u003Cp>بیشتر داده‌هایی که برنامه‌ها رد و بدل می‌کنند یکی از این دو قالب‌اند. پایتون برای هر دو ماژول داخلی دارد:\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>import json\n\nuser = {\"name\": \"Ali\", \"skills\": [\"python\", \"sql\"]}\ntext = json.dumps(user, ensure_ascii=False)\nloaded = json.loads(text)\nprint(loaded[\"skills\"][0])\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Ch2>۶. دیتابیس\u003C\u002Fh2>\n\n\u003Cp>وقتی داده‌ها زیاد شوند، فایل متنی دیگر کافی نیست. پایتون با ماژول داخلی \u003Ccode>sqlite3\u003C\u002Fcode> یک دیتابیس کامل بدون نصب در اختیارتان می‌گذارد و زبان SQL را همین‌جا تمرین می‌کنید:\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>import sqlite3\n\nconn = sqlite3.connect(\":memory:\")\nconn.execute(\"CREATE&#32;TABLE students (name TEXT, score INTEGER)\")\nconn.executemany(\"INSERT INTO students VALUES (?, ?)\", [(\"Sara\", 18), (\"Reza\", 15)])\nfor row in conn.execute(\"SELECT name FROM students WHERE score &gt;= 17\"):\n    print(row[0])\nconn.close()\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>علامت \u003Ccode>?\u003C\u002Fcode> در کوئری مهم است: داده‌ی کاربر را جدا از دستور SQL می‌فرستد و جلوی حمله‌ی معروف SQL Injection را می‌گیرد.\u003C\u002Fp>\n\n\u003Ch2>۷. محیط مجازی و مدیریت کتابخانه‌ها\u003C\u002Fh2>\n\n\u003Cp>هر پروژه‌ی جدی کتابخانه‌های خودش را دارد و نسخه‌هایشان نباید با پروژه‌های دیگر قاطی شود. ابزار داخلی \u003Ccode>venv\u003C\u002Fcode> برای هر پروژه یک محیط جدا می‌سازد:\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>python -m venv .venv\npip install requests\npip freeze &gt; requirements.txt\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>فایل requirements.txt فهرست کتابخانه‌های پروژه است تا هر کس دیگری بتواند دقیقاً همان محیط را بسازد.\u003C\u002Fp>\n\n\u003Ch2>۸. تست و کد تمیز\u003C\u002Fh2>\n\n\u003Cp>برنامه‌نویس حرفه‌ای برای کدش تست می‌نویسد تا مطمئن شود تغییر امروز، چیزی را که دیروز کار می‌کرد خراب نکرده است. کتابخانه‌ی pytest ساده‌ترین شروع است. در کنارش، راهنمای سبک کدنویسی پایتون (PEP 8) و نوشتن type hint کد را برای دیگران و خودتان در آینده خواناتر می‌کند.\u003C\u002Fp>\n\n\u003Ch2>بعد از پایتون پیشرفته: انتخاب مسیر تخصصی\u003C\u002Fh2>\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\u003Cth>مسیر\u003C\u002Fth>\u003Cth>ابزارهای اصلی\u003C\u002Fth>\u003Cth>مناسب کسی که\u003C\u002Fth>\u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>توسعه‌ی وب و بک‌اند\u003C\u002Ftd>\u003Ctd>جنگو، FastAPI، PostgreSQL\u003C\u002Ftd>\u003Ctd>می‌خواهد سایت و API بسازد\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>هوش مصنوعی و داده\u003C\u002Ftd>\u003Ctd>NumPy، Pandas، scikit-learn\u003C\u002Ftd>\u003Ctd>به تحلیل داده و یادگیری ماشین علاقه دارد\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>خودکارسازی\u003C\u002Ftd>\u003Ctd>requests، کار با فایل و اکسل، ربات‌ها\u003C\u002Ftd>\u003Ctd>می‌خواهد کارهای تکراری را خودکار کند\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>امنیت\u003C\u002Ftd>\u003Ctd>شبکه، اسکریپت‌نویسی، ابزارهای تست نفوذ\u003C\u002Ftd>\u003Ctd>به امنیت سیستم‌ها علاقه دارد\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Cp>برای مسیر هوش مصنوعی، \u003Ca href=\"\u002Flearning\u002Fpython-baraye-hoosh-masnooi\">مقاله‌ی پایتون برای هوش مصنوعی\u003C\u002Fa> قدم‌های بعدی را توضیح می‌دهد.\u003C\u002Fp>\n\n\u003Ch2>سوالات رایج\u003C\u002Fh2>\n\n\u003Cp>\u003Cstrong>«یادگیری پایتون پیشرفته چقدر طول می‌کشد؟»\u003C\u002Fstrong>\u003Cbr>\nبرای مباحث بالا، با تمرین منظم حدود دو تا سه ماه. ولی پیشرفته شدن واقعی با ساختن پروژه‌های بزرگ‌تر اتفاق می‌افتد، نه با تمام کردن فهرست مباحث.\u003C\u002Fp>\n\n\u003Cp>\u003Cstrong>«برای بازار کار، پایتون پیشرفته کافی است؟»\u003C\u002Fstrong>\u003Cbr>\nپایتون پیشرفته پایه است؛ کارفرما معمولاً دنبال تخصص در یک مسیر است: جنگو برای بک‌اند یا یادگیری ماشین برای هوش مصنوعی. \u003Ca href=\"\u002Flearning\u002Fhoghoogh-barnamenevis-iran\">مقاله‌ی حقوق برنامه‌نویس در ایران\u003C\u002Fa> عوامل تعیین‌کننده‌ی درآمد را توضیح داده.\u003C\u002Fp>\n\n\u003Cp>\u003Cstrong>«منبع رایگان خوب برای پایتون پیشرفته چیست؟»\u003C\u002Fstrong>\u003Cbr>\nمستندات رسمی پایتون در docs.python.org برای همه‌ی مباحث بالا بهترین مرجع است. ولی در این سطح، مهم‌تر از منبع، پروژه‌ای است که این مفاهیم را در آن به کار ببرید و کسی که کدتان را نقد کند.\u003C\u002Fp>\n\n\u003Ch2>جمع‌بندی\u003C\u002Fh2>\n\n\u003Cp>پایتون پیشرفته یعنی رفتن از «برنامه‌ای که کار می‌کند» به «برنامه‌ای که می‌شود نگهش داشت، گسترشش داد و به دیگران سپرد». شی‌گرایی، مدیریت خطا، توابع پیشرفته، داده و دیتابیس، محیط مجازی و تست، ستون‌های این مرحله‌اند.\u003C\u002Fp>\n\n\u003Cp>\u003Ca href=\"\u002Fcourses\u002Fpython-advanced\">دوره‌ی پایتون پیشرفته داناورس\u003C\u002Fa> همین مسیر را پروژه‌محور طی می‌کند: شی‌گرایی و اصول مهندسی نرم‌افزار، کار با دیتابیس SQL، پردازش JSON و CSV، توابع پیشرفته و دکوراتورها، و ساخت نرم‌افزار دسکتاپ. اگر هنوز پایه را کامل نکرده‌اید، \u003Ca href=\"\u002Fcourses\u002Fpython-basics\">دوره‌ی پایتون مقدماتی\u003C\u002Fa> نقطه‌ی شروع است.\u003C\u002Fp>\n  ","بعد از یادگرفتن متغیر، شرط، حلقه و تابع، بیشتر برنامه‌نویسان تازه‌کار به یک دیوار می‌خورند: برنامه‌های کوچک را می‌نویسند، ولی نمی‌دانند برنامه‌ی واقعی و بزرگ چطور ساخته می‌شود. «پا...","آموزش برنامه‌نویسی","۷ مهر ۱۴۰۵","۵ دقیقه",965,"\u002Fimages\u002Fblog\u002Fpython-pishrafte.jpg","تیم تولید محتوای داناورس","مدرس و کارشناس آکادمی","\u002Fimages\u002Flogo-light.png","مجید مهربخش",[10,20],"داناورس","python-advanced","tutorial",[24,25,26],"پایتون پیشرفته یعنی رفتن از «برنامه‌ای که کار می‌کند» به برنامه‌ای که می‌شود نگهش داشت، گسترشش داد و به دیگران سپرد؛ نه ترفندهای عجیب زبان.","هشت مبحث اصلی به ترتیب: شی‌گرایی، مدیریت خطا، توابع پیشرفته و دکوراتور، ژنراتور، JSON و CSV، دیتابیس با sqlite3، محیط مجازی و تست با pytest.","بعد از آن مسیر تخصصی را انتخاب کنید: وب و بک‌اند با جنگو و FastAPI، یا هوش مصنوعی و داده با NumPy، Pandas و scikit-learn.",[28,31,34],{"q":29,"a":30},"یادگیری پایتون پیشرفته چقدر طول می‌کشد؟","برای مباحث بالا، با تمرین منظم حدود دو تا سه ماه. ولی پیشرفته شدن واقعی با ساختن پروژه‌های بزرگ‌تر اتفاق می‌افتد، نه با تمام کردن فهرست مباحث.",{"q":32,"a":33},"برای بازار کار، پایتون پیشرفته کافی است؟","پایتون پیشرفته پایه است؛ کارفرما معمولاً دنبال تخصص در یک مسیر است: جنگو برای بک‌اند یا یادگیری ماشین برای هوش مصنوعی. مقاله‌ی حقوق برنامه‌نویس در ایران عوامل تعیین‌کننده‌ی درآمد را توضیح داده.",{"q":35,"a":36},"منبع رایگان خوب برای پایتون پیشرفته چیست؟","مستندات رسمی پایتون در docs.python.org برای همه‌ی مباحث بالا بهترین مرجع است. ولی در این سطح، مهم‌تر از منبع، پروژه‌ای است که این مفاهیم را در آن به کار ببرید و کسی که کدتان را نقد کند.","آموزش پایتون پیشرفته: بعد از مقدماتی چه یاد بگیرم؟","آموزش پایتون پیشرفته قدم‌به‌قدم: شی‌گرایی، مدیریت خطا، دکوراتور، ژنراتور، JSON، دیتابیس SQL، محیط مجازی و تست، با مثال کد و مسیرهای تخصصی بعد از آن.","2026-09-29T17:21:24.279297+00:00",null,[42,47,52],{"path":43,"title":44,"desc":45,"image":46},"\u002Flearning\u002Ftamrin-python-pishrafte","تمرین پایتون پیشرفته: ۱۵ تمرین با جواب، از شی‌گرایی تا دکوراتور و ژنراتور","۱۵ تمرین پایتون پیشرفته با جواب و خروجی: کلاس، ارث‌بری، متدهای ویژه، property، دکوراتور، closure، ژنراتور، context manager، Counter و پروژه‌ی کتابخانه با JSON.","\u002Fimages\u002Fblog\u002Ftamrin-python-pishrafte.jpg",{"path":48,"title":49,"desc":50,"image":51},"\u002Flearning\u002Famoozesh-barnamenevisi-online","آموزش برنامه‌نویسی آنلاین: کلاس زنده، دوره‌ی ضبط‌شده یا منابع رایگان؟ راهنمای انتخاب","مقایسه‌ی سه راه یادگیری برنامه‌نویسی آنلاین: کلاس زنده، دوره ضبط‌شده و منابع رایگان؛ مزایا و معایب، وسایل لازم، ۷ سوال قبل از ثبت‌نام، برای بزرگسال و کودک.","\u002Fimages\u002Fblog\u002Famoozesh-barnamenevisi-online.jpg",{"path":53,"title":54,"desc":55,"image":56},"\u002Flearning\u002Famoozesh-arduino-az-sefr","آموزش آردوینو از صفر: از نصب نرم‌افزار تا اولین ربات، به زبان ساده","آموزش آردوینو از صفر: انتخاب برد اونو یا نانو، نصب نرم‌افزار و درایور، اولین برنامه، کار با سنسور و سروو و ۵ پروژه‌ی مبتدی، حتی بدون برد با شبیه‌ساز.","\u002Fimages\u002Fblog\u002Famoozesh-arduino-az-sefr.jpg",[]]