امروزه پایتون به یکی از پر هیجانترین زبانهای حال حاضر دنیا تبدیل شده است. پایتون یک زبان مفسری، سطح بالا، تعاملی و شئ گرا است. همچنین متناسبترین زبان برای حوزههای آکادمیک، وب، کار با داده، نرمافزار، ریاضیات انتخاب شده است. فلسفه نوشته شدن این زبان برنامه نویسی منحصر به فرد، خوانایی بالای کد و پیاده سازی سریع ایدههایتان است. پایتون در حال حاضر کتابخانه استاندارد فوقالعادهای دارد که شما را برای استفاده از کتابخانههای خارجی بینیاز میکند. یکی دیگر از ویژگیهای مهم پایتون چند پلتفرم بودن آن است. شما میتوانید برنامه را بدون تغییر یا با تغییرات جزئی در سیستم عاملهای مختلفی اجرا کنید. برنامههای نوشته شده با پایتون بر روی سیستم عاملهای ویندوز، مکینتاش، یونیکس، لینوکس، سولاریس و ... قابل اجرا است. همانطور که میدانید پایتون محبوبترین زبان در حوزه کار با داده است. هرچقدر که نیاز استفاده از داده بیشتر شود، پایتون نیز محبوبتر میشود و درحال حاضر یکی از دوست داشتنی ترین زبانهای برنامه نویسی حال حاضر است.
این دوره بصورت تخصصی و هدفمند برای کسانی طراحی شده که دانشجو بعد از اتمام درس توانایی انجام هرگونه پروژه و نوشتن الگوریتمهای پیچیدهای را داشته باشد. همچنین مدرس این دوره با درنظر گرفتن نکات روانشناسی در حوزه آموزش و بازار کار، پروژههایی طراحی کرده که دانشجو با انجام دادن آن پروژهها نه تنها تمامی نکات کدهای آموخته شده را میآموزد، بلکه ذهن او برای ایده پردازی و انجام پروژههای سنگین باز میشود. از نکات مهم این دوره میتوان به پیشرفت دانشجو در توانایی حل مسئله و دست خط کدنویسی او اشاره کرد.
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
نسخه آموزش داده شده در این آموزش، آخرین نسخه پایتون 3.6 است.
پیشنیاز دوره: علاقه مند به یادگیری برنامه نویسی
مخاطبان دوره: علاقه مندان به حوزه پایتون، علم داده، برنامهنویسی و وب
توانایی دانشجویان پس از گذراندن دوره:
پیاده سازی وبسایتها، ساخت بازیهای پرکاربرد، یادگیری مباحث شیگرایی در پایتون
همچنین با یادگیری یک فریم ورک در وب توسط پایتون، توانایی حضور در بازار کار این حوزه بدست میآورند.
دانشجو کاملا در انتهای این دوره آماده است تا گرایش خود را برای یکی از موارد زیر تعیین کند.
- طراحی وب سمت سرور
- طراحی نرم افزار 09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
- طراحی الگوریتم های پیچیده
- داده کاوی
- هوش مصنوعی
- پردازش تصویر
- خزنده وب
- کار با api های موجود
- طراحی بازی
شیوه ساختاربندی پروژه پایتون
گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : ۳۰ تیر ۱۳۹۷
دسته بندی ها : پایتون
برنامهنویسی فقط در رابطه با کدنویسی نیست. البته این موضوع را در نظر داشته باشید که کارایی یک برنامه براساس کدهای آن تعیین میشود اما برای اینکه برنامه و همان کارایی به درستی کار کند نیاز به ساختار دارد. بیشتر برنامهها از چندین فایل تشکیل میشوند، بنابراین نیاز است که به صورتی این موارد در کنار همدیگر قرار بگیرند که بدون مشکل با همدیگر کار بکنند. این کارها از طریق کدنویسی (ارث بری و دیگر روشها) انجام میشود. اما این کار از طریق ساختاربندی درست فایلهای پروژه نیز انجام میگیرد.
ساختار یک پروژه پایتون به نظر ساده میرسد اما براساس اصل آن، تنها مرتب کردن فایلهاست که ساده است. وقتی مشغول نوشتن برنامه هستید باید همواره سعی کنید که کدها را تمیز، واضح و مرتب نگهدارید. برای انجام چنین کاری به یک ساختار مرتب که اندیشهای در پسزمینه آن قرار دارد نیاز دارید. نه تنها این موضوع برای شما به عنوان یک توسعهدهنده فایده خواهد داشت، بلکه هر کس دیگری که کدها را مطالعه میکند و یا با آنها کار میکند میتواند بهتر آنها را درک نماید.
پایتون در حال حاضر یک زبان واضح و ساده است بنابراین ساختاردهی به پروژه پایتون نباید بسیار پیچیده باشد. در این مطلب سعی میکنیم مهمترین لزومات برای ساختاردهی به پروژه را بگوییم و شما را به این درک برسانیم که چرا در هر شرایط و همیشه نیاز است به آن فکر کنید.
چه چیزهایی باید در یک پروژه باشد؟
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
خوشبختانه برای توسعهدهندگان راهنماهایی وجود دارد که میشود با پیروی کردن از آنها به این اطمینان که پروژه از ساختار خوبی بهره میبرد مطمئن شوند. این موضوع باعث میشود که روشهای استانداردی شکل بگیرد که بیشتر برنامهنویسان آن را تایید میکنند و براساس آن کارشان را به جلو میبرند. فایده این کار این است که هرکسی میتواند روش کار کردن براساس این متدها را یاد بگیرد، بنابراین درگیریهای ذهنی در زمان مشاهده پروژه یک فرد دیگر بوجود نمیآید و شما میتوانید به خوبی از ساختار آن سر در بیاورید.
فایلهای اصلی که همیشه باید در ساختار یک پروژه قرار بگیرد
README - در نظر داشته باشید که همیشه باید یک فایل README.rst را برای هر پروژه در اختیار داشته باشید. این مورد تنها یک فایل ساده است که در آن اطلاعات مفیدی در رابطه با نرمافزار کنونی در آن قرار میگیرد. ممکن است برای برخی از افراد این مورد الزامی به نظر نرسد، اما در نظر داشته باشید که همه افراد یک برنامه را از یک طریق ثابت مشاهده و تفسیر نمیکنند. داشتن قطعهای از متن که برنامه را به صورت ساده شرح میدهد برای توسعهدهندگان و کاربران مفید خواهد بود. این مورد همچنین به توسعهدهندگان راهی مناسب برای انتقال یک چیز منحصر به فرد در رابطه با نرم افزار را میدهد، مثلا یک ویژگی خاص!
لایسنس - دومین قسمت بسیار مهم بعد از کدنویسی در مورد یک پروژه، لایسنس آن است. این فایل حاوی یک متن کامل در رابطه با لایسنس و کپیرایت مربوط به یک پروژه است که در آن اطلاعات دقیقی قرار گرفته است. تعیین کردن لایسنس به کاربران راهی قانونی برای دانلود، تغییر و بازتوزیع پروژه را میدهد. تعداد لایسنسهای متفاوتی وجود دارد که میتوانید از بین آنها انتخاب کنید. برخی از این لایسنسها بسیار سختگیر هستند و برخی دیگر راههای انعطافپذیر بیشتری را ارائه میدهند.
مواردی که انعطافپذیری بیشتری را دارند به آزاد بودن نرم افزار و مجاز بودن کاربر برای انجام کارهای بیشتری اتکا دارند، در حالت دیگر مواردی که سختگیر هستند کاربران را انجام کارهای مختلفی باز میدارند.
requirements.txt - این فایل شامل تمام لزومات مورد نظر برای اجرای یک پروژه است. این فایل لیستی از تمام این موارد را نشان میدهد و به کاربران اجازه میدهد تا بتوانند کتابخانهها و ابزارهایی که برای اجرای این پروژه نیاز است را مشاهده کنند. در یک تعریف ساده یک لیست از لزومات نصب شده توسط pip است!
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
این فایل در زمانی که مشغول کار با توسعهدهندگان دیگری هستید بسیار مهم است. با استفاده از این فایل توسعهدهندگان میدانند که برای ساخت این پروژه از چه پکیجهایی استفاده شده و چه امکاناتی در محیط توسعه این پروژه وجود دارد.
برای ایجاد فایل requirements.txt لیستی از کتابخانه مورد نیاز برای پروژه را به صورت زیر لیست کنید:
Flask==0.12
Jinja==2.9.5
MarkupSafe==0.23
Werkzeug==0.11.15
argparse==1.2.1
click==6.7
wsgiref==0.1.2
setup.py - در تعریف ساختار پروژه، این فایل به به کاربران میگوید که این پکیج از طریق Distutils پکیج و توزیع شده است. این مورد یک استاندارد برای توضیح ماژولهای پایتون است.
یک مثال از این مورد را میتوانید در زیر مشاهده کنید:
from distutils import setup
setup(
name=='nameOfProject',
version=='1.0',
description=='awesomeProject',
author=='Joe Bloggs',
author email='joe@awesomeproject.com',
url='hhtp://joebloggsblog.com',
packages ['awesomeProject'],
install_requires=['coolProject', 'greatProject',]
scripts=['path/to/your/script',],
...
)
همانطور که مشاهده میکنید فایل تمام اطلاعات مربوط به یک پکیج را در خود نگهداری میکند. هدف اصلی این اسکریپت این است که به Distutils در رابطه با توزیع ماژول ارتباط برقرار کند. این موضوع اطمینان اینکه دستورات مختلف روی ماژولهای متفاوت به درستی کارهایی را انجام میدهند را میدهد.
setup.cfg - برخی اوقات برای نوشتن هرچیزی که برای اجرا شدن یک پکیج نیاز است، باید اطلاعاتی را از کاربر و سیستم کاربر دریافت کنید. اگر این اطلاعات ساده باشد بنابراین فایل setup.cfg میتواند برای دریافت اطلاعات مورد استفاده قرار بگیرد. یک مثال از حالتی ساده نیاز به جستجو برای یک لیست از دایرکتوریها در پی یک نوع فایلی منحصر به فرد خواهد بود.
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
در کلامی دیگر شما میتوانید قسمتهایی از فایل setup.py را با ویرایش setup.cfg نادیده بگیرید. البته از طرفی دیگر میتوانید همه چیزهای موجود در setup.cfg را با استفاده از گزینههای خط فرمان برای setup.py نادیده بگیرید.
ماژولها - فایلهای پایتون با پسوند .py ذخیره میشوند. این فایلها در روند توسعه خود با نام ماژولها شناسایی میشوند. در داخل این ماژولها، شما میتوانید کلاسها، متغیرها و تابعهایی را در زیر همان ماژول تعریف کنید. ماژولها مانند یک کتاب برای کتابخانه برنامهنویسی هستند، درست مانند کتابها برای کتابخانهها. شما از یک کتابخانه برای پیدا کردن کتابی (ماژول) که نیاز دارید استفاده میکنید، در نهایت آن را برای استفاده خودتان قرض میگیرید.
پکیجها - اگر یک یا بیش از یک ماژول را در یک فایل __init__.py قرار دهید بنابراین شما با یک پکیج سر و کار دارید. به صورت کوتاه، یک پکیج لزوما شامل یک پوشه است که در کدهایتان قرار دارد. یک پکیج در حقیقت تنها یک دایرکتوری است، با این حال تمام پکیجها باید دارای یک فایل __init__.py باشند. این فایل به پایتون میگوید که با یک دایرکتوری مانند دایرکتوری که حاوی پکیجهایی است رفتار کند.
یک مثال از یک پکیج پیچیده NumPy است. این یک کتابخانه است که برای محاسبات علمی استفاده میشود بنابراین شما کتابخانهای را تصور کنید که از تعداد زیادی ماژول (کتاب) استفاد کرده و همه آنها را برای ساختن پکیج NumPy در کنار هم قرار داده. این موضوع نشان 09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com میدهد که پکیجها میتوانند روشی بسیار خوب برای سازماندهی به پروژهها باشند.
چگونه این قطعات در کنار همدیگر قرار میگیرند
در زیر میتوانید یک مثال ساده از ساختاربندی یک پروژه ساده پایتون را مشاهده کنید:
README.rst
LICENSE
setup.py
requirements.txt
example/__init__.py
example/mainprog.py
example/addlprog.py
tests/test.py
از طریق این مثال شما میتوانید ایده اینکه هر کدام از این موارد چگونه در ساخت یک ساختار برای پروژه پایتون کارایی دارند آگاه شوید. ما از جنبه متنی روژه شروع کردیم، لیست کردن اطلاعات مربوط به نرمافزار، کپیرایت و لزومات مورد نیاز برای پکیج. این موارد همراه با المانهای اصلی میآیند، کد و نهایتا فایل مربوط به تست.
فایلهای تست همانطور که ممکن است حدس بزنید، فایلهایی هستند که برای تست کارایی نرم افزر استفاده میشوند. تستها نیاز دارند که ساده و همخوان نگاه داشته شوند. البته در کنار سادگی باید کامل و سریع نیز باشند. هیچ توسعهدهندهای نمیخواهد برای تست کردن نرم افزار متوقف شود و کارش به کندی پیش برود، بنابراین کارایی و اعتمادپذیری کلید اصلی ماجرا است.
مواردی که در این مطلب گفته شدند مثالهای بسیار سادهای بودند، با این حال بیشتر پروژههای امروزی شامل این فایلها و زیرپوشهها هستند. اگر شما یک برنامهنویس تازهکار هستید بهتر است که قبل از کار با فایلهای بسیار زیاد با ساختاربندی پروژها آشنا شوید. عادتهای خوب در برنامهنویسی همراهتان خواهند بود، این عادتها نه فقط در کدنویسی بلکه در کار با دیگران نیز خود را نشان میدهند. اگر عادت کنید که پروژههایتان را ب 09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com