PDA

نسخه کامل مشاهده نسخه کامل : آموزش Python



Bayazee
05-05-2006, 13:09
سلام من می خوام آموزش پایتون رو در این تاپیک شرمع کنم . تا دوستان بیشتری با این زبان برنامه نویسی آشنا بشن و بدونن که زمان برنامه نویسی بت زبانهایی چون C , Pascal و ... به سر اومده .....

sa3er
05-05-2006, 13:38
سلام
ضمن عرض خوش آمدگويي به شما،
خوب زمان زبان C كه فكر نمي كنم حالا حالا ها به سر بياد ولي خوش حال خواهيم شد تا با زبان Python و قابليتهاي اون هم آشنا بشيم.

بي صبرانه منتظر آموزشهاي شما هستيم.

netspc
05-05-2006, 14:59
دقيقاَ
هر وقت زمان c به سر اومد اونموقع یا کلاً تمام وسایل الکترونیکی عوض شدن و یا شما از یک کره دیگه اومدین!!!!!
ولی پیتون قویه و حرفی توش نیست نرم افزاری میشناسم در حدود 200 هزار دلار که 70 درصدش رو با پیتون نوشتن.
ولی نتیجه گیری کلی از آینده و گاهی وقتها حال ، زیاد خوب نیست.
موفق باشی
امیدوارم فقط syntax رو یاد ندی
:)

Bayazee
05-05-2006, 15:02
سلام sa3er جان . بله کاملا موافقم منظورم چیزه دیگه ای هست . همه جا نمیشه از C استفاده کرد . C بیشتر واسه برنامه های سیستمی خوبه . خیلی ممنونم از توجهت .

Bayazee
05-05-2006, 15:04
پایتون یک زبان سکریپتی و بسیار قدرتمند و گسترده هستش و این روزا می تونید آثاری از نفوذش رو تقریبا همه جا ببیند از پروژه های ساده و بسار کوچک گرفته تا پروژه های عظیم چون برخی از نرم افزار های NASA . شاید بپرسید دلیلش چیه ؟ خوب دلایل زیادی داره . اینم بگم که هر زبانی برای یک استفاده بخصوص طراحی شده و تو همون زمینه بهتر جواب میده . زبانی مثل Pascal برای آموزش برنامه نویسی , زبانهایی چون C و اسمبلی هم واسه برنامه های سیستمی و سیتم عامل و زبانی چون php برای طراحی سایت . و استفاده از هر یک به جای دیگری امکان پذیر ولی نا صحیح می باشد . حالا دیگه کسی نمی یاد gui خودش رو با C کار کنه !! علاوه بر اینکه Python زبانی عملی برای برنامه های کاربردی میباشد یه جورایی میشه ازش تو زمینه هایه دیگه ای مثلا برنامه نویسی سیستمی – رابط کاربری (gui) – کامپوننت – برنامه نویسی اینترنت – برنامه های عددی و محاسباتی – برنامه های پایگاه داده – پردازش تصویر – هوش مصنوعی – اشیا توضیع شده – شبیه سازی – روباتیک – برنامه نویسی موبایل – امنیت و شبکه و ... استفاده کرد !!!!
و اما چرا باید از پایتون استفاده کنیم ؟؟
پایتون شی گراست :
پایتون زاتا یک زبان شز گراست و از ویژگی های پیشرفته شی گرایی چون وراثت – چند شکلی – سربار گزاری عملگر و ... پشتیبانی می کند اگر شما با برنامه نویسی شی گرا آشنایی ندارید پایتون یک راه حل عالی واسه یاد گرفتنشه !!! نکته جالب و یک ویژگی منحصر به فرد پایتون که لقب چسب را بارای پایتون به ارمغان آورده امکان استفاده از کد ها و کلاس های نوشته شده در زبانهای دیگری چون ++ C و Java هستش و یه جورایی کار چسباندن قطعات کد جدا و فقط نوشتن بدنه اصلی به عهده پایتون است .
پایتون رایگان است !!
پایتون یک زبان رایگان و باز متن هستش که این روزا بحث اکثر محافل شده . با کمی توجه به این نکته که دیر یا زود قانون کپی رایت (اون طوری که من از منابع موثق شنیدم 2 سال بعد !!)می یاد و فکر نمی کنم تو کشوری مثل ایران و پس از جوی مثل الان کسی حاضر بشه یه نر افزار رو با قیمت واقعی اون بخره ( مثلا 100 هزار تومن واسه ویندوز !!) پس می شه گفت تها گزینه واسه ما نرم افزار های باز متن و رایگان هستش البته تنها دلیل رایگان بودت این دسته از نرم افزار ها نیستش . موضوعات مهم دیگری هم هست که خودشون یه مقاله جدا هستن ...
پایتون یک زبان پورتابل یا قابل انتقال می باشد :
چون پایتون با زبان پورتابل C نوشته شده می تواند به صورت مجازی بر روی هر سیستمی کامپایل و اجرا شود . اگه یادتون باشه گفتم این یه زبان اسکریپتی یعنی در حالت معمول به فایل اجرایی تبدیل نمی شه بلکه یک ماشین مجازی فایل کد رو می خونه و همزمان اونارو تفسیر کرده و اجرا می کنه . پس شما می تونید یک برنامه رو تو ویندوز بنویسید و سپس انو بدون تغییر روی لینوکس یا مکینتاش یا هر سیستم عامل و سخت افزار دیگری که پایتون روی آن نصب باشد اجرا کنید .
پایتون قدرتمند است :
پایتون یه زبان چند رگه هستش . پایتون از زبانهای اسکریپتی (برای مثال : Tcl , Scheme , Perl) و زبانهای سیستمی (برای مثال : C++ , C و Java ) مشتق شده . بنابراین تمام سادگی و راحتی کار زبان های اسکریپتی و ویژگی ها و قدرت زباهای سطح پایین را داراست .
پایتون قابلیت استفاده از کد های نوشته شده با سایر زبان ها را دارد :
این ویژگی یکی از پرکاربرد ترین و قوی ترین ویژگی های پایتون می باشد . شما می توانید قطعه از کد را در زبانی چون C , C++ و Java نوشت اونو تبدیل به فایل اجرایی کرد و سپس ازش در برنامه نوشته شده با پایتون استفاده کرد . و یا از توابع کتابخانه و کامپوننت هایی چون COM API استفاده کرد .
یادگیری و استفاده از پایتون بسیار راحت می باشد :
بی شک و حداقل از نظر من و بسیاری از برنامه نویسان پایتون این زبان یکی از آسان ترین زبان ها برای یادگیری و استفاده می باشد و از آن به عنوان یک زبان سریع برنامه نویسی یاد می کنند . این زبان نیازی به کامپایل ندارد و شما مستقما می توانید پس از نوشتد کد و با یک دستور آن را اجرا کنید . دستورات این زبان بسیار نزدیک به زبان انسان می باشد . برای مثال برنامه Hello World را که اولین برنامه ساده می باشد را در دو زبان C و Python مقایسه کنید :

#include <stdio.h>

int main()

{

printf("Hello World ");

return 0;

}
ابتدا باید این برنامه را بنویسید و آن را یا دستوری چون cc helloworld.c -o hello کامپایل و سپس با دستور hello/. اونو اجرا کنید . اما بوسیله پایتون در یک فایل متنی بنویسید :

print "Hello World !!"
و با دستور python hi.py اونو اجرا کنید .
با کم شدن حجم کد برنامه نویسی راحت تر و رفع اشکال و توسعه آن آسان تر می شود .
اهمیت پایتون :
مطمن هستم با اهمیت لینوکس و نرم افزار های باز متن در ایران آشنا هستید همانطور که می دانید سیستم عامل ملی ما بر پایه لینوکس می باشد و این لازمه توسع برنامه نویسی تحت لینوکس را برایمان آشکار می کند . شاید فکر کنید زبان برنامه نویسی و انتخاب اکثر لینوکس کاران C می باشد این تفکر درستی است اما نه برای برنامه هلی کاربردی مانند یک برنامه حسابداری . پایتون در سراسر دنیا از اهمیت ویژهای برخوردار می باشد و رفته رفته به جایگاه اصلی و لایق خود نزدیک می شود . جالب است بدانید مایکرو سافت نیز این زبان را با نام IronPython در تکنولوژی Net. خود گنجانده است !!
به نظر من وظیفه ما این است که با تلاش و همکاریكشورمون ايران رو نیز به جایگاهی که باید خیلی وقت پیش آنجا می بودیم پيش ببريم .
من قصد دارم آموزش هایی رو که شروعش پایتون هست رو برای دوستان عزیزم ارایه کنم . مجوز همه این آموزش ها gpl هستش و فعلا اونا رو تو فروم های سایت P30World قرار می دم و از هرگونه مطالب و نظرات شما استقبال می کنم .

به امید آینده ای بهتر و با تشکر از تمام دوستان Mehdi Bayazee – Bayazee@Gmail.com

jvd
05-05-2006, 15:09
مرسي رستت درد نكنه كه ديگه آخرشي

Bayazee
05-05-2006, 15:17
بچه ها من سعی می کنم هر 2 روز یکبار یه درس رو اینجا بذارم چون درس هر روز رو همون روز می نویسم خیلی دوست دارم همونی باشه که شما می خواهید پس بگید به کدوم موضوع ها علاقه بیشتری دارید . مرسی

راستی جالب توجه C کاران عزیز . من قصدم کم توجه دیدن ارزش و اهمیت C نبوده و نیست ولی خوب قبول کنید نمیشه خیلی جاها به درد نمی خوره
من ندیدم باهاش gui کار کنن یا سایت بنویسن یا نرم افزار پایگاه داده .... ولی اینم بگم خودم از طرفدار های پروپا قرص C هستم .

kazemfdisk
05-05-2006, 18:50
ممنونم دوست عزيز اميدوارم ادامه داشته باشه منتظر هستيم آخر سر هم به صورت pdf در بياريم جالب ميشه افراد ديگر هم ياد بگيرند
موفق باشيد يا حق

Bayazee
06-05-2006, 01:41
يه توضيح كوچولو : من تمام مثال ها رو مطابق با لينوكس (FC4) مي نويسم و تست مي كنم و همه دستورات در اين محيط هستش و راستش بخواهيد آشنايي چنداني با معادلشون تو ويندوز ندارم اما اگه بخواهيد و سئوالي باشه مي تونم برم دنبالش و تا جايي كه ممكنه يه چيزايي بنويسم . هرجا كه لازم بود بگيد . شما مي تونيد پايتون رو براي نصب تو ويندوز يا لينوكس از اينترنت و سايت خود پايتون دانلود كنيد . اكثر توزيع هاي كنوني لينوكس يه نسخه از مفسر پايتون رو دارند .

قبلا ما از پايتون به عنوان يك زبان برنامه نويسي ياد كرديم . اما پايتون نام يك بسته نرم افزاري به نام مفسر نيز هست كه كار اصلي آن اجراي برنامه مي باشد . مفسر سطر به سطر كد برنامه ( Python ( را خوانده و همزمان اجرا مي كند . در حالت كلي يك برنامه پايتون به 4 طريق اجرا مي شود :
- به حالت محاوره اي
- به عنوان ماجول پايتون
- به عنوان فايل اسكريپت unix
- از داخل يك سيستم ديگر
- متد هاي خاص يك سيستم عامل
حالت محاوره اي راحترين حال اجراي كد در پايتون مي باشد . كافي هست كلمه پايتون رو وارد كنيد :

# python
و سپس دستورات خود را به صورت محاوره اي وارد كنيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در حالت دوم فايلي را با پسوند py ايجاد و كد خود را درون آن بنويسيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و سپس از طريق ترمينال آن را اجرا كنيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اين برنامه بسيار كوچك كه با نام test.py ذخيره شده پارامتر هاي ورودي را به صورت يك ليست به نمايش مي گذارد . دستور معادل آن در ويندوز عبارت است از :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالت سوم اجرا در حال اسكريپت مي باشد . اين نوع فايل متني حالت اجرايي داراست و مشخصه آن اولين خط آن مي باشد كه يك مثال ساده عبارت است از :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيح اينكه اولين خط اين برنامه را با كامنت ( توضيحات ) اشتبا نگيريد اين سطر به اين معني است كه كل كد ادامه فايل را با برنامه اي كه آدرس آن پس از عبارت !# آمده فرستاده و به اجرا در مي آيد . پس اين خط آدرس فايل اجرايي مفسر پايتون به همراه علامت هاي !# است . سپس اين فايل را به حالت اجرايي تبديل كرده و اجرا كنيد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوب فكر مي كنم تا اين حد كافي باشه لازم به ذكر هستش كه روي دستورات ساده و بديهي زياد وقت نمي ذاريم و يكم سريع جلو مي ريم تا زود تر به مثال هاي عملي و به درد بخور تر برسيم .

عبارات :
- عبارات و انجام محاسبات رياضي بسيار شبيه ساير زبانهاي برنامه نويسي مي باشد

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مقدار دهي متغيير ها :
- نوع متغيير ها به صورت ديناميكي تعيين مي شود و در طول اجراي برنامه ممكن است تغيير يابد
- متغيير ها تنها اسمي براي يك شي مي باشند و همانند زبان C به يك نقطه از حافظه اشاره نمي كنند

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

همانطور كه مشاهده مي كنيد تعريف يك متغيير به وسيله مقدار دهي آن انجام مي شود و اين نظريه درست نيست كه در پايتون نيازي به تعريف متغيير نمي باشد براي مثال استفاده از كدي مثل

Print x
باعث نمايش يك پيغام خطا خواهد شد چون متغيير x قبلا تعريف (مقداردهي)نشده است .
نكته ديگر اينكه ما در پايتون نيازي به تعيين نوع يك متغيير نداريم براي نمونه در مثال بالا متغيير a ابتدا مقدار صحيح (int) مي باشد و سپس از آن براي نشان دادن يك رشته استفاده شده است .

خوب اينم از درس امروز ، فردا به بحث در مورد حلقه ها خواهم پرداخت ...

Dash Ashki
06-05-2006, 08:39
سلام داش Bayazee ضمن خوشامدگویی مرسی از زحمت شما

Bayazee
07-05-2006, 03:02
سلام من نسخه های pdf مربوط به هر درس رو هم آماده کردم فقط یه سوال از مدیران آیا جایی هست که من اینارو بزام ؟
چون آموزش برنامه نویسی و تایپ همزمان فارسی و انگلیسی به صورت پست مشکل داره !!!

Bayazee
08-05-2006, 23:45
بنام خدا
آموزش پایتون – درس 3
شروع برنامه نویسی

رشته :
رشته اولین نوع داده ای است که باهاش آشنا می شید . فرق رشته در پایتون با اکثر زبان های برنامه نویسی اینکه یک کاراکتر به عنوان یک رشته با طول یک می باشد . توضیح دیگر علامت نقل قول دوگانه و منفرد تقریبا کار یکسانی انجام می دن البته فرقهایی دارند که به مرور و با مثال آشنا خواهید شد از ۳ علامت نقل گول هم برای وارد کردن رشته هایی دارای علامت های خاص استفاده می شود .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فرمت بندی رشته :
شبیه منطقی مانند فرمتد بندی C می باشد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اعداد و عملگر ها :
پایتون دارای نوع های پیش فرض integers,long numbers,floating-point(float), imaginary numbers می باشد . برای اطلاع از نوع یک متغییر در هر لحظحه می توانید از دستور type استفاده کنید:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در مورد تقدم عملگر و عملگر و بسیاری از بحث های تکراری توضیحی داده نمی شود و به مرور با آنها آشنا خواهید شد .
استفاده از سایر انواع پیشرفته پایتون :
خوب تقریبا از این بخش وارد مباحث ویژه پایتون می شویم . پایتون دارای 3 نوع درونی و پیشرفته تقریبا قابل مقایسه به آرایه و ساختمان C
می باشد . که عبارت است از :
1.Tuples
2.Lists
3.Dictionaries
Tuple یا توالی غیر قابل تغییری از داده همانند آرایه می باشد با این تفاوت که پس از تعریف و مقدار دهی اولیه قابل هیچ گونه تغییری نمی باشد . علامت مشخصه آن در هنگام تعریف پارانتز می باشد .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همانطور که متوجه شدید اندیس همانند C از صفر شروع می شود . برای پیدا کردن طول (تعداد اعضا) یک تیوپل از دستور len استفاده می شود هرگونه تلاش برای تغییر یا دسترسی به اندیس بیشتر از طول تیوپل باعث نمایش خطا می شود :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
List یا توالی قابل تغییری از داده همانند تیوپل می باشد با این تفاوت که قابلت تغییر و گسترش را دارا می باشد علامت مشخصه آن براکت می باشد .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و همانطور که گفتیم لیست امکان تغییر را دارا می باشد .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توجه کنید که شما می توانید تنها عناصر موجود را تغییر دهید برای اضافه کردن عناصر و داده های جدید از دستور append استفتده می کنیم .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر قصد دارید تعداد بیشتری از داده ها را در قالب لیست یا تیوپل به لیست موجود اضافه کنید بدین منظور از دستور extend استفاده می کنیم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Dictionary شبیه به لیست و تیوپل می باشد با این تفاوت که ایندکس دیکشنری عددی نمی باشد و می تواند شامل رشته یا در اصطلاح هر اسم دیگری باشد !!

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نام ایندکس در دیکشنری keys یا کلید و مقدار هر کلید value نامیده می شود . که برای بدست آورد کلیدها و مقادیر می توانید از توابع ()keys و ()values استفاده می شود :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نکات :
می توانید در پایتون از اندیس دهی معکوس استفاده کنید ! به این صورت که اندیس 1- آخرین عضو آرایه می باشد .
تکه تکه کردن (Slicing) آرایه و رشته از طریق ترکیب اندیس آغازین و پایانی صورت می گیرد .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده اعضا هر کلاس (متغییر ها و توابع) می توانید از دستور dir استفاده کنید .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای دسترسی با مستندات هر دستور یا کلاس می توانید متغییر __doc__ آن دستور استفاده کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

راستي پيشنهاد مي كنم حتما نسخه pdf مربوط به هر درس رو دانلود كنيد :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Mehdi Bayazee – Bayazee@Gmail.com

Bayazee
09-05-2006, 16:23
من نسخه pdf هر درس رو هم آماده كردم كافي از آدرس زير دريافت كنيد :
درس 1:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
درس 2:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
درس 3:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Bayazee
09-05-2006, 19:18
بنام خدا
آموزش پایتون – درس 4
شرط و حلقه

قبل از اینکه وارد مبحث شرط (if) بشیم یکی از جالبرترین جنبه های پایتون رو توضیح می دم . برخلاف زبانهای دیگری چون C و Pascal که از علایم و عباراتی چون {} و begin,end و ... برای نمایش شروع و پایان یک قطعه کد استفده می کنند پایتون دارای علامت یا عبارت خاصی برای این منظور نمی باشد !! و عمل مشخص کردن محدوده یک عبارت که شامل قطعه کد می باشد (مثلا تابع – دستورات شرطی – حلقه – کلاس و ... ) از فاصله گزاری استفاده می گردد . به این صورت که پس از خطی که بقیه دستورات زیر مجموعه آن می باشند به اندازه دلخواه فاصله یا تورفتگی داده می شود این فاصله های یکسان تا زمانی ادامه می یابد که محدوده دستور پایان یابد . که این روش باعث کاهش مقدار برنامه و خوانایی برنامه می شود .
دستور شرطی if :
شکل کلی if در پایتون به صورت زیر می باشد .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مثال : شرط اول به علت اختلاف حرف m مقدار false بوده و هیچ مقداری نمایش داده نمی شود . اما در بخش بعدی با استفاده از تابع عضو کلاس رشته و تبدیل هر دو رشته به حروف کوچک مقدار شرط درست بوده و متن دلخواه چاپ می شود .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدبه فاصله داده شده در اول دستور print توجه نمایید . با این توضیح هرگونه فاصله اضافی که باعث ایجاد ابهام گردد تولید خطا می کند . در کد زیر فلش زیر حرف p در دستور print نشان دهنده محل اشتباه منطقی موجود می باشد .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
علامات بکار رفته برای مقایسه دو عبارت و ترکیب عبارات شرطی مطابق علایم زبان C می باشد علایمی چون :
">" , "<" , "==" , "=!" , "&" , "|" , "=>" , "%" و ...
که البته می توانید بجای "&" از and و بجای "| " از or استفاده کنید .


دستورات تکرار:
اولین دستور تکرار یا حلقه while می باشد . به مثال زیر توجه کنید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیددر این مثال ابتدا یک دیکشنری را تعریف می کنیم . (به تعرف یکجا و جدید توجه کنید ) سپس از طریق دستور ()keys کلید (اندیس) های دیکشنری را در متغییر دیگری به نام ingredients می ریزیم . و با وارد کردن نام آن محتویات متغییر را مشاهده می کنیم . (این نوع نمایش فقط در حالت محاوره ای عمل می کند ) سپس با استفاده از دستور while و تا زمانی که تعداد اعضای متغییر ingredients بزرگتر از صفر است وارد حلقه می شویم با دستور ()pop که یک عنصر را از لیست جدا کرده (حذف کرده) و بر می گرداند یکی یکی اعضا لیست ingredients که همان کلید های دیکشنری omelet هستند را در داخل متغییر current ریخته و در سطر بعدی چاپ می کنیم .

دستور بعدی برای حلقه ... for ... in می باشد . که شبیه به دستور while می باشد با این تفاوت که در این حالت نیازی به تعیین شرط پایان حلقه نبوده و در ضمن متغییری که به تک تک عناصر لیست اشاره می کند ایجاد می گردد که می توانید از آن در داخل حلقه استفاده کنید . معادل مثال بالا را با for به صورت زیر می باشد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

همانطور که مشاهده می کنید کد نوشته شده با for بسیار بهینه تر و کوتاهتر می باشد . منطق for در پایتون کمی متفاوت می باشد . که شما متغییر ( ingredient ) و یک لیست از عناصر ( ()omelet.keys ) می باشد که با عبارت کلیدی in از هم جدا شده اند . روند حلقه به این صورت است که متغییر تعریف شده به تک تک عناصر لیست اشاره خواهد کرد .
همانند زبانهای دیگر حلقه دارای دستوراتی برای جلوگیری از اجرای حلقه بدون تست شرط و نیز جلوگیری از اجرای بخشی از دستورات و تست دوباره شرط می باشد .
با استفاده از break می توانید بدون تست شرط حلقه را ترک کنید . و دستور continue از اجرای دستورات جلوگیری کردی مقدار متغییر را تغییر داده و شرط را بررسی می کند .
استفاده از else در دستورات تکرار :
شاید بهتر بود نام این دستور done یا on_completion بود . چون در آخر حلقه های تکرار می یاد و زمانی اجرا می شه که حلقه بطور کامل و برای تمامی مقادیر اجرا شده باشه و دستوری مانند break اجرای عادی حلقه رو ناقص نکرده باشه .
دو مثال از استفاده else در حلقه for که در اولی به علت اجرای کامل حلقه اجرا نمی شود ولی در مثال دوم اجرا شده است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به تو در تو بودن if و for و رعایت فاصله دقت کنید . توجه کنید که else دقیقا زیر for نوشته شده است پس متعلق به for می باشد نه if !! در حلقه دوم چون yogurt در تیوپل موجود می باشد (تیوپل است چون از پارانتز استفاده شده !) شرط if اجرا می گردد و با دستور break از اجرای ادامه حلقه جلوگیری می شود بنابرین بخش else حلقه به اجرا در می آید .

مدیریت خطاها :
شما در درس های گذشته نمونه هایی از پیام های خطای پایتون را مشاهده نمودید . که شامل اطلاعاتی در مورد نوعو نحوه بروز اشکال و خطای موجود می باشد . در مثال بالا اگر سعی کنید به اندیسی دسترسی یابید که تعریف نشده با پیغام خطایی مواجه خواهید شد .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

همانطور که مشاهده می کنید نوع خطا KeyError می باشد . شما می توانید با استفاده از دستور ... try ... except خطاهای بوجود آمده را مدیریت نمایید در این حالت کد های مورد نظر در داخل بخش try نوشته می شود و با استفده از بخش except و تعیین نوع خطای بوجود آمده دستوراتی را که باید هنگام بوجود آمدن این خطا اجرا شوند را بنویسید . مثالی را مطرح کرده و در آن سعی می کنیم به اندیسی دسترسی یابیم که وجود ندارد .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دوباره به تورفتگی کدها دقت کنید . شما می توانید مدیریت دلخواه و قدرتمندی بر روی انواع مختلف خطا های موجود داشته باشید .

راستي پيشنهاد مي كنم حتما نسخه pdf مربوط به هر درس رو دانلود كنيد :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

منتظر پیشنهاداتتون هستم ....

Mehdi Bayazee – Bayazee@Gmail.com

Bayazee
14-05-2006, 18:10
بنام خدا
آموزش پایتون – درس 5
توابع

قراردادن برنامه در فایل :
با افزایش حجم برنامه تایپ آن به صورت محاوره ای مشکل خواهد شد و با بروز هر مشکلی کل آن باید دوباره نوشته شود . در ثانی ما اکثر اوقات می خواهیم از برنامه ای که نوشته ایم بعدا استفاده کنیم . پس باید بتوانیم متن برنامه خود را در جایی ذخیره کنیم که بعدا بتوانیم به آن دسترسی داشته باشیم . که در این حالت از فایل اسکریپت استفاده می کنیم که قبلا نیز توضیح داده شده است . میتوانید این فایل را بصورت مستقیم اجرا نمایید . روش دیگری برای اجرا وجود دارد و آن استفاده از مفسر پایتون با پارامتر i می باشد . در این حالت متن فایل اجرا شده و سپس وارد حالت محاوره ای می شود و شما امکان ادامه برنامه اجرا شده و استفاده از توابع م متغییر های درون فایل را در حالت محاوره ای خواهید داشت .
توابع :
منطق توابع در پایتون شبیه به دیگر زبانهای برنامه نویسی می باشد . برای تعریف یک تابع از کلمه کلیدی def استفاده می کنیم و سپس نام تابع را نوشته و نام پارامتر ها را در داخل پارانتز وارد می کنیم و با قرار دادن دو نقطه روی هم شروع به تایپ متن تابع می کنیم . در صورتی که اولین سطر بعدی یک رشته یاشد این رشته به عنوان توضیحات کنار گذاشته می شود و شما می توانید با متغییر __doc__ عضو کلاس تابع آن را مشاهده کنید .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دیدن مستندات تابع :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مشاهده سایر متغییر ها و توابع عضو کلاس :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
متغییر ها و توابعی که با کاراکتر ' __ ' شروع شده اند خصوصی (private ) می باشند که نوضیحات بیشتر در مورد آنها را در بخش کلاس ها خواهیم آموخت .به هریک از این متغییر ها یا توابع می توان با روشی همانند دسترسی به متغییر __doc__ دسترسی داشت .
استفاده از اسامی یکسان در جاهای مختلف :
همانطور که در تابع تعریف شده بالا مشاهده می کنید دیکشنری fridge و رشته wanted_food در داخل تابع تعریف نشده اند و از نتغییر های هم اسمی که در خارج محدوده تابع تعریف شده اند استفاده می کنند . پایتون متن برنامه را به محدوده ای مجزایی به نام scope تقسیم می کند . اسامی و scope که در همه نواحی و در کل برنامه قابل دسترسی می باشد با نام global یا سراسری شناخته می شود . همه اسامی دیگر در داخل توابع در یک سطح پایین تر به نام ناحیه local یا محلی قرار دارند . توابع این ناحیه را با توابعی که در سطح یکسان هستند به اشتراک نمی گزارند . و هر کدام یک ناحیه کاری مجزا دارند . هر نامی در ناحیه بالاتر قابل استفاده در ناحیه پایین تر می باشد با این توضیح که این استفاده فقط مقداری می باشد (نه مرجعی ) یعنی دستورات ناحیه کاری پایین تر نمی توانند تغییری در آنها اعمال کنند و فقط به یک کپی از آنها دسترسی دارند . به مثال زیر توجه کنید .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یک لیست با نام special_sauce در ناحیه کاری بالا (top level) ایجاد گردیده است . و تابعی تعریف می شود که ناحیه کاری آن زیر مجموعه ناحیه کاریی می باشد که متغییر مورد نظر در آن تعریف شده است . پس می توان از درون تابع make_new_sauce به یک کپی از متغییر special_sauce دسترسی داشت . در داخل این تابع متغییری هم اسم با متغییر تعریف شده در سطح بالاتر (global) را تعریف می کنیم و مقداری متفاوت با آنچه قبلا تعریف شده را به آن می دهیم . و آن را با دستور return بر می گردانیم . زمانی که این دستورات اجرا شوند شما مشاهده خواهید کرد که مقدار متغییر تعریف شده در ناحیه سراسری بدون تفییر می ماند .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ابتدا مقدار متغییر special_sauce چاپ کرده و سپس یک متغییر جدید و با استفده از تابع تعریف شده ایجاد می کنیم سپس دوباره محتویات متغییر اصلی را نمایش می دهیم (بدون تغییر می باشد ) و در نهایت متغییر جدید را چاپ می کنیم . بخاطر داشته باشید می توانند از اسامی یکسان ولی متفاوت درون خود استفاده کنند .
ارسال متغییر به تابع :
در مثال بالا ما از متغییر های سراسری استفاده کردیم . که این روش همیشه مناسب نمی باشد . ما می توانیم متغییر های خود را به تابع ارسال کنیم . مثال بالا را طوری تغییر می دهیم که متغییر ها را به عنوان پارامتر گرفته و نتیجه را برگرداند .




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


این تابع را در فایلی با نام func1.py ذخیره کرده و با دستور python -i func1.py اجرا کرده و وارد حالت محاوره ای شوید .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


مقدار دهی پیش فرض پارامتر ها :
در هنگام فراخوانی تابع باید به هر پارامتر آن یه مقدار نسبت داد (فرستاد). و در صورتی که مقداری به یک پارامتر فرستاده نشود باعث بروز خطای برنامه نویسی خواهد شد . برای جلوگیری از این حالت پایتون شما را قادر می سازد تا برای پارمترها تابع خود مقدار پیش فرض نسبت دهید . این کار را می توانید در هنگام تعریف تابع و با نسبت دادن مقدار پیش فرض بوسیله علامت تساوی به نام پارامتر انجام دهید .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حال شما می توانید این تابع را با ورودی یا بدون ورودی فراخوانی کنید .
تابع در داخل تابع :
شما می توانید تابعی را درون تابع تعریف کنید . زمانی که می خواهید تابعی بزگتر و پیچیده را به بخش هایی کوچکتر تقسیم کنید می توانید هر یک از این بخش ها را به عنوان یک تابع درون تابع اصلی تعریف کنید . که در این حالت نحوه تعریف همانند تعریف تابع معمولی می باشد . با این تفاوت که از بیرون تابع اصلی نمی توان به توابع عضو دسترسی داشت .

تست پارامتر ها :
چون متغییر ها در پایتون دارای نوع ثابت نیستند و عولا می توان در بازه های زمانی مختلف انواع متفاوتی از یک متغییر را داشت پس امکان ارسال انواع داده های مختلف به توابع هم هست که ممکن است باعث بروز خطا گرددند یا نتایج اشتباهی را تولید کنند . برای جلوگیری از اینگونه موارد باید نوع متغییر خود را قبل از استفاده در داخل تابع تست کنیم .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در این مثال ابتدا نوع متغییر omelet_type بررسی می شود اگر نوع آن دیکشنری باشد نشان دهنده مواد لازم برای تهیه غذا می باشد پس تابع make_food با این دیکشنری و غذایی با نام omelet که به همراه آن ارسال شده فراخوانی و سپس نتیجه زر طریق دستور return برگشت داده می شود . در قسمت بعدی (elif معدل else if می باشد ) اگر متغییر ارسالی از نوع رشته باشد فرض بر این خواهد بود که نام نوع خاصی از املت می باشد پس ابتدا از طریق تابع get_omelet_ingredients مواد لازم برای پختن آن را بدست آورده و این مواد را همراه با نام آن به تابعی که کار درست کردن غذا را انجام میدهد ارسال می کنیم . در بقیه موارد پیامی را چاپ می کنیم مبنی بر اینکه نمی توانیم غذای خواسته شده را درست کنیم !!


Mehdi Bayazee – Bayazee@Gmail.com

rootnt
19-05-2006, 10:27
خیلی عالیه دوست عزیز
منتظر بقیه اش هستم تا کامل بشه و بعد پرینت و بعد استفاده کنم

Dash Ashki
19-05-2006, 17:17
سلام Bayazee جان
ممنون از زحمتت
ولی لینک های pdf مشکل داره

Bayazee
19-05-2006, 18:10
سلام لینکهای بی دردسر و آموزش های زودتر من رو می تونید در سایت زیر
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


دیدن فرمایید معمولا اونجا هستم !!!

Bayazee
19-05-2006, 18:17
بنام خدا
آموزش پایتون – درس 6
نکات و مثالها - 1

نکته 1 : عوض کردن مقدار 2 متغییر بدون متغییر کمکی :
در زبانی چون C می توانید این مسله را با روشی مانند زیر حل کنید .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در این مثال همانطور که ملاحضه می کنید ابتدا از طریق علامت سمی کولن 2 دستور متفاوت (تعریف 2 متغییر ) در یک سطر انجام شده است . سپس مقدار x و y عوض شده است که با چاب مقدار هر یک این تغییر را مشاهده می کنید .
نکته 2 : دسترسی به عناصر دیکشنری :
برای دسترسی به عناصر یک دیکشنری از اندیس استفاده می شود ولی باید مطمن باشیم که اندیس در لیست کلید های دیکشنری موجود می باشد در غیر اینصورت با پیغام ارور مواجه خواهیم شد . می توانید برای این کار و تست وجود یا عدم وجود اندیس از تابع has_key بصورت زیر استفاده کنید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در این مثال حالت دیگری از تعریف دیکشنری را مشاهده می کنید . تابع has_key مقدار صحیح را برمی گرداند چون اندیس name عضوی از دیکشنری d می باشد در نتیجه مقدار آن یعنی mehdi نمایش داده می شود . البته در پایتون نسخه 2.2 و جدیدتر می توانستید از حالت دیگری از if استفده کنید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

که معادل دستور شرطی بالا می باشد .
دیکشنری یک تابع درونی دیگر نیز دارد که این عمل (تست اندیس) را بصورت بهینه تر و خلاصه تری انجام می دهد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این تابع در صورت وجود اندیس ارسالی مقدار آن و در غیر اینصورت پارامتر دوم را به عنوان نتیجه برگشت می دهد .
نکته 3 : مثالهایی از حلقه :
روش های مختلفی برای ایجاد یک حلقه در پایتون موجود می باشد .که در زیر چند نمونه را خواهید دید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

سه نوع مختلف حلقه را مشاهده می کنید دستور range یک آرایه از اعداد را برگشت می دهد . در این مثال نقطه شروع صفر و نقطه پایانی صد می باشد . گام حرکت نیز عدد دو می باشد . در صورتی که گام حرکت وارد نشود مقدار یک فرض می شود . و اگر عدد آغازین نوشته نشود مقدار پیشفرض صفر است .
نکته 4 : تبدیل انواع :
برای تبدیل نوع های مختلف متغییر ها به همدیگر می توانید از دستورات زیر استفاده کنید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


نکته 5 : استفاده از توابع و کدهای از پیش نوشته شده :
این ویژگی در اکثر زبانهای برنامه نویسی موجود می باشد . برای مثال در زبان C از دستور include برای اضافه کردن و استفاده از یک فایل از پیش نوشته شده استفاده می گردد در پایتون با استفاده از دستور import این عمل صورت می گیرد که به روشهای مختلفی مورد استفاده قرار می کیرد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


نکته 6 : دریافت متغییر از کاربر :
عمل گرفتن ورودی از کاربر دارای دو تابع مجزا می باشد . اولی مختص اعداد می باشد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دستور بعدی یعنی raw_input هر ورودی را گرفته و به صورت رشته برمی گرداند که نوع کاربرد آن دقیقا همانند دستور قبلی می باشد .
نکته 7 : عدم تاثیر پذیری از زبانهای دیگر :
پایتون امکانات فوق العاده و راحتی برای استفاده و برنامه نویسی محیا می کند . و شما نباید از الگوریتم و روش های برنامه نویسی دیگر که معمولا ناکارامد هستند استفاده کنید . که این مهم با تمرین و مشاهده و تحلیل مثالهای مختلف حاصل خواهد شد . برای مثال هر دو برنامه زیر با پایتون نوشته شده اند که تکراری بودن یک کراکتر را در رشته دریافتی بررسی می کنند . اولی منطقی شبیه به زبانی چون C دارد ولی دومی از توابع و ویژگی های پایتون بهره برده است :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در مثال اولی از دو حلقه تودرتو برای بررسی تکراری بودن یک کراکتر استفاده شده متغییر f نقش یک پرچم (flage) را بازی می کند و اگر مقدار آن 1 شود بدین معنی است که یک کراکتر تکراری موجود است . در مثال دوم از تابع عضو کلاس رشته با نام count استفاده کرده ایم که تعداد ورودی خود را در رشته برمی گرداند هرگاه تعداد یک عضو برابر 1 نباشد (بیشتر باشد) یک پیام چاپ شده و با دستور break از اجرای ادامه حلقه جلوگیری می شود در غیر اینصورت بخش else مربوط به for اجرا شده و پیامی مبنی بر عدم تکرار چاپ می شود .
نکته 8 : انواع برگشتی تابع :
توابع در پایتون راحتی و انعطاف پذیری بسیار بالایی دارند . یکی از ویژگی های توابع امکان برگشت دادن انواع داده و حتی چند نوع داده هم زمان از طریق تابع می باشد . برای مثال برنامه ای می نویسیم که دو آرایه را به عنوان ورودی گرفته و موارد مشترک بین آنها را برمی گرداند (سعی کنید این برنامه ها را با زبان دیگری نوشته و با پایتون مقایسه کنید) :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


تابع مورد نظر را در فایل test.py نوشته و با دستور زیر اجرا می کنیم پارامتر i باعث اجرای فایل و ادامه حالت محاوره ای می شود به این ترتیب می توانید از تابع نوشته شده استفاده کنید .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در کد تابع از دستور append استفاده کرده ایم که برای گسترش لیست بکار می رود این دستور یک ورودی را گرفته و آن را به آخرین خانه لیست اضافه می کند (این دستور آرایه ای از متغییر را نیز دریافت می کند) همانطور که مشاهده می کنید این دستور انواع مختلف و حتی غیر همنوع را پذیرفته و یک متغییر از نوع لیست را برمی گرداند .



Mehdi Bayazee – Bayazee@Gmail.com ==> [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Bayazee
25-05-2006, 20:53
بنام خدا
آموزش پایتون – درس 7
كلاس ها و اشيا - 1

مبحث مهم بعدي در برنامه نويسي پايتون بحث كلاس و اشيا مي باشد . من توضيح مختصري در مورد برنامه نویسی شی گرا ارائه مي كنم در صورتي كه آشنايي با مبحث كلاس و اشيا و برنامه نويسي شي گرا نداريد پيشنهاد مي كنم از منابع موجود برنامه نويسي شي گرا استفاده كنيد . ولي توضيحات ارائه شده در اينجا نيز تا حدودي شما را با اين سبك برنامه نويسي و روشها و ويژگي هاي آن آشنا خواهد ساخت .
تا كنون با انواع داده هاي مختلف آشنا شديد و توابعي را نيز نوشته و به كار برديد . همه اين توابع و متغيير ها مستقل بوده و بطور مجزا مورد استفاده قرار مي گرفتند . اين روش كه به برنامه نويسي ساخت يافته يا مبتني بر روال و توابع جدا مي باشد كليت برنامه را به روالها و اجزا كوچكتر تقسيم مي كند و باعث آسانتر شدن اشكال زدايي و استفاده مجدد از كد هاي نوشته شده مي شود اما برنامه هايي موسوم به اسپاگتي كد را تولید می کند يعني برنامه هايي كه كد ها همانند ضرف حاوي ماكاروني بهم ريخته و درهم بود و سروته برنامه مشخص نمی باشد . گام بعدي در برنامه نويسي كه يك الهام از طبيعت ( OOP (Object Oriented Programming يا همان برنامه نويسي شي گرا است اين سبك برنامه نويسي يك برنامه را همانند طبيعت به اشيا سطح بالا تقسيم مي كند و هر شي قسمتي از مساله اي را كه به دنبال حل آن هستيد مدل سازي مي كند در اين حالت اشيا با يكديگر در حال تعامل مي باشند به نحوي كه اجزا و اشيا برنامه همه باهم روند برنامه را پيش مي برند . در اين صورت ، يك برنامه شي گرا به صورت مدل و شبيه سازي زنده از مساله اي خواهد بود كه در صدد حل آن هستيد . ركن اساسي برنامه نويسي شي گرا كلاس مي باشد كه در واقع يك طرح كلي از يك موجوديت مجزا مي باشد و اشيا با توجه به آن ايجاد مي گردند . يك كلاس شامل متغيير و توابع مي باشد و اين دو ركن اساسي برنامه در يك موجوديت واحد به نام كلاس جمع شده است . در مثال هاي قبل شما با اين مبحث آشنا شده و حتي از آن استفاده كرديد . براي مثال وقتي يك رشته تعريف مي كنيد اين رشته همانند زباني چون C فقط شامل كاراكتر ها نمي باشد بلكه يك شي از كلاس رشته مي باشد و متغيير هاي عضوي چون مقدار رشته نسبت داده شده و توابع يا اصطلاحا متد هايي را داراست . براي مثال وقتي شما رشته اي را بر قرار دادن يك نقطه بعد از آن و نوشتن عبارتي چون ()upper آن را به حروف بزرگتر تبديل مي كنيد در واقع از تابي عضو كلاس و شي رشته استفاده كرده ايد . شما اطلاعي از نحوه كار و نوع رابطه اين تابع با ديگر تابع ها و متغيير هاي داخل كلاس رشته نداريد ولي نحوه استفاده از آن را مي دانيد كه اين موضوع يكي از جنبه هاي مثبت برنامه نويسي شي گرا است . متد ها يا توابع در اين سبك برنامه نويسي به عنوان يك رفتار و عمل براي كلاسي خاص مي باشند كه شما كافي است طريقه استفاده از آن را بدانيد ! همانطور كه قبلا هم گفته شد شما مي توانيد با دستور dir عناصر (هم متغيير و هم تابع) عضو يك كلاس را مشاهده كنيد .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

متغيير ها و توابعي كه به ' __ ' شروع شده اند عناصر خصوصي يا private كلاس مي باشند يعني شما مجاز به استفاده از آنها نيستيد اما مي توانيد ايتفاده كنيد ! در واقع پايتون مانع استفاده شما از اين عناصر نمي شود و اين بستگي به انتخاب شما دارد . در مثال زير ابتدا نوع عنصر __len__ از كلاس رشته را بررسي مي كنيم . چون نوع آن تابع مي باشد آن را اجرا مي كنيم . عدد برگشت داده شده همان طول متغيير است . تابع len هم از همين متغيير هر كلاس استفاده مي كند به همين دليل است كه مي تواند طول داده هاي پيچيده را نيز مشخص كند .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ادامه درس را با بيان مثالي كلي و كامل كردن آن ادامه مي دهيم . فرض كنيد مي خواهيد از يك يخچال در برنامه خود استفاده كنيد ! شبيه سازي يك يخچال درست مثل حالت واقعي آن ، بسيار مفيد و كارا خواهد بود و اين همان كاري هست كه برنامه نويسي شي گرا انجام مي دهد . فرض كنيد مي خواهيد اعمالي چون اضافه كردن غذا ، برداشتن آن ، اطلاع از موجود بودن غذا يا ميوه اي خاص و يا قرار دادن يا برداشتن بيش از يك چيز در يك زمان خاص را انجام دهيد . به عبارت ديگر وقتي شما برنامه اي مي نويسيد كه در آن از اشيا دنياي واقعي استفاده مي كنيد شبيه سازي عيني آن بصورت يك عنصر واحد به حل مسئله و تسهيل برنامه نويسي كمك شاياني خواهد كرد .

تعريف كلاس :
زماني كه شما قصد ايجاد يك كلاس و نوشتن كد ها و بخش هاي مختلف آن را داريد كافي است فقط از عبارت كلاس باضافه نام كلاس استفاده كنيد و همانند ساير قطعه هاي كد آن را با دو نقطه پايان دهيد . و سپس شروع به نوشتن كد كنيد . در مرحله بعدي مي توانيد يك نمونه از اين كلاس (شي) را ايجاد . اسم خاصي را به آن نصبت دهيد سپس از طريق اين اسم مي توانيد به عناصر (متغيير و متد) داخل آن شي (كلاس) دسترسي داشته باشيد .
در مثال زير ساده ترين كلاس ممكنه را مي بينيد كه فقط شامل توضيحات مي باشد .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضيح اينكه هر متني پس از تعريف كلاس نوشته شود به عنوان مستندات آن كلاس بوده و تاثيري بر اجراي آن ندارد و مي توانيد به اين مستندات از طريق متفيير __doc__ آن كلاس دسترسي داشته باشد .
ايجاد يك شي از كلاس تعريف شده :
كد كلاس Fridge را در يك فايل نوشته و آن را بوسيله دستور python -i اجرا كنيد . شما اكنون مي توانيد يك نمونه از كلاس تعريف شده را به همراه اسم آن و پارانتز بازو بسته ايجاد كنيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فعلا اين كلاس و درنتيجه اي شي خالي مي باشد . البته به اين معني نيست كه بي كاربرد است . شما الان هم مي توانيد آن را تغيير دهيد !! در ثاني استفاده از كلاس ها در مبحث استثنا ها كاربرد دارد كه در درسهاي آينده مفصل بحث خواهد شد . و اما استفاده از شي خالي f و مشاهده مستندات آن :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


اكنون بايد به طراحي كلاس يخچال بپردازيد به اين منظور بايد هدف خود از اين كار و نيز كاربرد دقيق كلاس خود را مشخص كنيد در اولين گام بايد بتوانيم عناصري را در يخچال قرار دهيم . روشهاي متعددي موجود است افزودن يك عدد از يك شي و يا چندين موجوديت با تعداد مختلفو به وسيله نوع داده ديكشنري .
در مرحله بعدي شما بايد بتوانيد اشيايي را از آن برداريد و نياز داريد همانند موقع قرار دادن اشيا يك عدد از يك عنصر با بصورت گروهي اين كار را انجام دهيد .
اعمال و خواسته (تابع يا متد) هاي ديگري نيز مورد نياز است تا اين يخچال كامل شود . به متد هايي كه شي را در دسترس قرار مي دهد و بوسيله انها با شي تعامل مي كنيد رابط نام دارند . چون نحوه ارتباط درون كلاس و شي را با محيط بيرون مشخص مي كنند . مثال خود را كاملتر مي كنيم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


همانطور كه مشاهده مي كنيد براي توابع نيز توضيحاتي نوشته ايم . كه انجام اين عمل توصيه مي گردد .
تابه __init__ همان تابع سازنده مي باشد اين تابع هنگام تعريف كلاس فعال شده و كارهايي را كه در داخل آن تعريف شده انجام مي دهد . اين تابع دو پارامتر دارد . اولي self مي باشد كه معادل this در ديگر زباهاي برنامه نويسي مي باشد و به خود شي اشاره مي كند و از آن مي توان به عناصر داخل كلاس دسترسي داشت . به عبارت ديگر در داخل هر تابعي كه خواستيد به يكي از عناصر خود كلاس دسترسي يابيد بايد اين متغيير را به عنوان پارامتر ارسال كنيد و مثل تابع بالا از آن به همراه جدا كننده نقطه براي دسترسي به عناصر عضو همين شي استفاده كنيد . در صورتي كه در زبانهاي شي گراي ديگري چون ++‍C اين كار نياز نيست . پس در پايتون شما مي توانيد در داخل يك تابع ، توابع و متغييرهايي هم اسم با متغيير ها و متد هاي عضو همان كلاس تعريف و استفاده كنيد بدون اينكه تداخلي باهم داشته باشند . كه در مثال بالا مشهود است و دو نوع متغيير با نام items موجود است يكي به عنوان ورودي و ديگري عضو كلاس .
هنگام نوشتن توابع عضو و متد هاي يك كلاس بايد بيشترين دقت را داشته باشيد براي مثال نوشتن توابعي چون برداشتن يك شي از يخچال ، برداشتن دو شي از يخچال و برداشتن چند شي از يخچال باعث تكرار كد هاي تكراري ، بالا رفتن حجم برنامه و پايين آمدون كارايي و مشكل شدن استفاده از آن خواهد بود و به عبارت كلي تر بهينه نخواهد بود . پس مي توان براي مثال قسمت مشترك اين متد ها را در يك متد خصوصي و دروني پياده شازي كرده و در بقيه فقط از آن استفاده كرد . پس بهتر است در مثال ذكر شده يك تابع دروني با نام add_multi__ نوشته شود كه دو پارامتر (يكي اسم شي و ديگري تعداد آن) را دريافت كرده و آنها را به محتويات يخچال اضافه كند . در ادامه مثال ذكر شده را كاملتر خواهد شد ولي از تكرار كد هاي قبلي اجتناب مي شود فقط چون تورفتگي در پايتون مهم است تعريف كلاس را كه در اينجا مبناي ساير كد ها مي باشد ذكر مي كنيم .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خوب اكنون موقع نوشتن دو تابع ديگر يعني افزودن يك عدد از يك شي و چندين مقدار مختلف است كه هر دو از تابع پايه و دروني تهريف شده بالا ( add_multi__ ) استفاده خواهند كرد .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


اضافه كردن يك عنصر بسيار شبیه به تابع دوم مي باشد . و در هر دو از يك كد مشترك و تابع دروني add_multi__ استفاده شده است . اگر از تابع add_one استفاده شود ابتدا نوع آن بررسي مي شود تا حتما رشته باشد ( چون نوع هاي ديگر هم مي توانند فرستاده شوند ) سپس تابع دروني add_multi__ را با همان متغيير به همراه عدد يك فراخواني و در نتيجه شي در يخچال قرار مي گيرد . در حالت دوم يعني امكان اضافه كردن چندين مقدار همزمان ابتدا نوع آن تست مي شود در صورتي كه ديكشنري نبود پيغام خطايي نمايش داده مي شود و در غير اينصورت با يك حلقه به كليد هاي آن دسترسي يافته و سپس همان كليد را با مقدار آن را به تابع add_multi__ ارسال مي كنيم . همانگونه كه مشاهده مي كنيد از طريق دستور raise كه جزو توابع مديريت استثناها و خطاهاي برنامه نويسي مي باشد يك پيام انتخابي به همراه نوع خاصي از ارور (يعني TypeError) نمايش داده شده و برنامه خاتمه مي يابد . چند مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید




پايان بخش اول مبحث كلاس ها و اشيا
Mehdi Bayazee – Bayazee@Gmail.com

mahood
09-06-2006, 00:33
یک سوال دارم چطور میشه با پایتون یک فایل اجرایی یا exe درست کرد؟ :biggrin:

Bayazee
09-06-2006, 14:29
راه های خیلی زیادی داره ...
مثلا py2exe یا ...
واسه اطلاعات بیشتر به سایت رسمی این آموزش ها و فروم تخصصی پایتون مراجعه کنید .
راستش می خواهیم مطالب یه جا باشه نه تو هر سایتی یه کم ...
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Bayazee
14-06-2006, 00:58
آموزش های جدید در سایت قرار گرفت !!
Extension Programmin with C
و ....
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Bayazee
21-06-2006, 16:25
آقا یه خبر خوب سایت اسمش شد [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
تبریک به همه اپن سورسی ها !!
کلی آموزش جدید هم قرار گرفت
کسی نظری نداره ؟؟!!

rootnt
21-06-2006, 18:21
سلام بياضي جان
خيلي خوشحال شدم
آيا اين سايت (python.ir( هم زير نظر همون tux-world هستش؟ يا يه سايت مستغله
من هميشه هر وقت كه فرصت كنم سر مي زنم
خيلي عاليه
انشاالله كه موفق باشي و كارتو ادامه بده ;)

Bayazee
21-06-2006, 19:51
سلام دوست عزیزم !
مرسی نه این سایت کاملا داره تحت نظر سایت تاکس ورلد کار می کنه !
من افتخار عضویت در تیم تاکس ورلد رو دارم . اما سایر مدیران این سایت در سایت ها و جاهای دیگه همکاری هم می کنند !
ولی قصدمون جمع کردن همه اپن سورسی ها و سمتو سو دادن به حرکتی هست که شکل گرفته !
کلی کار هم داریم می کنیم که یواش یواش ارائه می شند . از جمله راه اندازی سایت sf به آدرس sf.tux-world.com و سایت مستندات جامعه اپن سورس و ... هستش ... که با همکاری همه اپن سورسی ها در حال شکل گرفتن هستند !
با تشکر و آرزوی موفقیت در تمام مراحل زندگی

بیلچه
08-07-2007, 23:28
ببخشید این سایتتون رو چه جوری باید بریم توش : python.tux-world.com

Bayazee
10-07-2007, 11:42
سلام دوست عزیز .
اگر به تاریخ پست قبلی توجه کنی تقریبا مال یک سال پیش هست !! نام فعلی سایت [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] هستش که البته تا فردا عصر به خاطر مشکلات فنی سرور بسته هستش ! تا یک رو دو روز آینده دوباره به فعالیتش ادامه می ده .

موفق باشید .

usefk.angel
08-09-2009, 20:22
سلام سلام سلام