A byte of Python-@PythonForever
A byte of Python-@PythonForever
com
کتبة یک ثبیت اس پبیتَى
وشبة A Byte of Pythonیىی اظ ؾبزٜسطیٗ ٚثٟشطیٗ وشبةٞبی آٔٛظقی ظثبٖ ثط٘بٔٛ٘ٝیؿی Pythonثٝ
ظثبٖ اٍّ٘یؿی اؾز .ث ٝزِیُ ٘ظط ؾبز ٜایٗ وشبة ،ذٛا٘سٖ آٖ ث ٕٝٞ ٝسبظٜوبضاٖ سٛنیٔ ٝیقٛز .ایٗ وشبة سٛؾٍ
آلبی Swaroop C Hو ٝانّیشی ٙٞسی زاض٘سٛ٘ ،قشٝقس ٜاؾز .ایكبٖ ٕٞچٙیٗ ؾبثم ٝوبض وطزٖ ثطای
قطوزٞبی ! Adobe ٚ Yahooضا زاض٘س .ایٗ وشبة ث 19 ٝظثبٖ سطػٕ ٝقسٜاؾز .زض ایٗ نفح ٝوبض سطػٕٝی
ایٗ وشبة ز٘جبَ ٔیقٛز .ثب سطػٕٞ ٝط ؾ ٝفهُ ایٗ وشبة٘ ،ؿر PDF ٝوشبة ٘یع ثٍٙٞٝبْؾبظی ٔیقٛز .ایٗ
Creative Commons Attribution-NonCommercial- وشبة ٚسطػٕٝی آٖ سحز ٔؼٛظ
ٙٔShareAlike License 2.0شكط ٔیق٘ٛس .
حسٚز چٙس ٔب ٜدیف ثٛز و ٝسهٕیٓ ٌطفشٓ ایٗ وشبة ضا ث ٝفبضؾی سطػٕ ٝو ٚ ٓٙسٛا٘ؿشٓ 6فهُ ا َٚایٗ وشبة
ضا سطػٕ ٝو .ٓٙأب ث ٝزالیّی ٘شٛا٘ؿشٓ سطػٕ ٝایٗ وشبة ضا سٕبْ و .ٓٙحبال ثطای ایٗو ٝسطػٕ ٝثٟشط نٛضر ثٍیطز،
ازأ ٝسطػٕ ٝضا اظ َطیك ایٗ ٚیىی دی ٔیٌیطیٓٞ .ط وؿی ٔیسٛا٘س زض وبض سطػٕ ٝایٗ وشبة قطوز وٙس .انال
ٔمساض ظیبز سطػٕٛٔ ٝضز ٘ظط ٘یؿزٞ .طوؽ حشی ثب سطػٕ ٝیه ػّٕٔ ٝیسٛا٘س ث ٝدیفضفز سطػٕ ٝوشبة وٕه
وٙس .أیسٚاضْ ضٚظی ثشٛا٘یٓ ایٗ وشبة ضا زض فٟطؾز ٔٙبثغ ظثبٖ ثط٘بٔٛ٘ٝیؿی Pythonث ٝظثبٖ فبضؾی ثجیٙیٓ .
ػب زاضز ایٗػب اظ زٚؾز ذٛثٓ saimazoonؤ ٝطا زض سطػٕٝی ایٗ وشبة ذیّی یبضی وطز ،سكىط وٓٙ
@PythonForever
فْزست هٌذرجبت
1زیجبچٝ
11وشبة یه ثبیز اظ دبیش.ٖٛفهُ ز.ٓٞحُ ٔؿبئُٛ٘.قشٗ ثط٘بٔ ٝایی ث ٝظثبٖ دبیشٖٛ
@PythonForever
دیجبچِ
فْزست هٌذرجبت
1زیجبچٝ
دیجبچِ
Pythonایس یىی اظ ٔؼسٚز ظثبٖ ٞبی ثط٘بٔٛ٘ ٝیؿی ثبقس و ٝؾبزٌی ٚلسضسٕٙسی ضا ثب ٓٞػٕغ وطز ٜاؾز.
ایٗ ثطای سبظ ٜوبضاٖ ٓٞث ٝا٘ساظٔ ٜشرههبٖ ذٛة اؾز ٟٓٔ ٚ ،سط اظ آٖ ایٙى ٝثط٘بٔٛ٘ ٝیؿی ثب آٖ ِصر ثرف
اؾز .ایٗ وشبة ٔی ذٛاٞس قٕب ضا ثطای یبزٌیطی ایٗ ظثبٖ قٍفز اٍ٘یع وٕه وٙس ٘ ٚكبٖ زٞس چٍ ٝ٘ٛوبضٞب ضا
ؾطیغ ٚثی زضزؾط ا٘ؼبْ زٞیس -یؼٙی "یه دبزظٞط وبُٔ ثطای ٔكىالر ثط٘بٔٛ٘ ٝیؿی قٕب ".
ایٗ وشبة ث ٝػٛٙاٖ یه ضإٙٞب یب آٔٛظـ ثطای ظثبٖ ثط٘بٔٛ٘ ٝیؿی Pythonث ٝوبض ٔی ضٚز ٚاؾبؾب سبظ ٜوبضاٖ ضا
.اٌط قٕب ٔی زا٘یس ٞسف لطاض زاز ٜاؾز ِٚی زض ػیٗ حبَ ثطای ثط٘بٔٛ٘ ٝیؿبٖ ثب سؼطث٘ ٝیع ؾٛزٔٙس اؾز
Pythonضا اظ ضٚی ایٗ وشبة یبز وبٔذیٛسط چٍ ٝ٘ٛفبیُ ٞبی ٔشٙی ضا شذیطٔ ٜی وٙس ،دؽ قٕب ٔی سٛا٘یس
ثٍیطیس .اٌط قٕب سؼطث ٝلجّی ثط٘بٔٛ٘ ٝیؿی زاضیس ،قٕب ٘یع ٔی سٛا٘یس Pythonضا اظ ضٚی ایٗ وشبة یبز ثٍیطیس .
اٌط قٕب سؼطث ٝلجّی ثط٘بٔٛ٘ ٝیؿی زاقش ٝثبقیس ،قٕب اظ سفبٚر ثیٗ ٚ Pythonظثبٖ ثط٘بٔٛ٘ ٝیؿی ٔٛضز ػاللٝ
ذٛز ،قٍفز ظزٔ ٜی قٛیس ٗٔ -ایٗ لجیُ سفبٚر ٞب ضا ٔكرم وطز ٜاْ .یه ٞكساض ٌطچ ٝوٛچهPython ،
ث ٝظٚزی ظثبٖ ثط٘بٔٛ٘ ٝیؿی ٔٛضز ػالل ٝقٕب ٔی قٛز !
@PythonForever
تبریخچِ درط
ٔٗ اِٚیٗ ثبض ظٔب٘ی Pythonضا قطٚع وطزْ و ٝثٛ٘ ٝقشٗ یه ٘هت وٙٙس ٜثطای ثط٘بٔ ٝاْ ٘ Diamondیبظ
زاقشٓ [] 1اظ آٖ ػب ؤ ٝی سٛا٘ؿشٓ ٘هت وطزٖ ضا آؾبٖ و ٗٔ .ٓٙثبیس ثیٗ Perl ٚ Pythonیىی ضا ثطای
اضسجبٌ ثب وشبة ذب٘ٞ ٝبی Qtا٘شربة ٔی وطزْ ٗٔ .وٕی زض ایٙشط٘ز سحمیك وطزْ ٚثٔ ٝمبِ ٝای ضؾیسْ وٝ
اضیه اؼ .ضیٕ٘ٛسٞ ،ىط ٔؼطٚف ٔ ٚحشطْ ،زض ٔٛضز ایٗ و Python ٝچٍ ٝ٘ٛظثبٖ ثط٘بٔٛ٘ ٝیؿی ٔٛضز ػالل ٝاـ
قس ٜثٛز ،ؾرٗ ٌفش ٝثٛز ٓٞ ٗٔ .چٙیٗ دی ثطزْ و PyQt ٝزض ٔمبیؿ ٝثب Perl-Qtذیّی ثٟشط اؾز .ثٙبثطایٗ،
ٔهٕٓ قسْ و Python ٝثٟشطیٗ ظثبٖ ثطای ٔٗ اؾز .ؾذؽ ٔٗ قطٚع ث ٝػؿز ٚػٛی یه وشبة ذٛة ثطای
Pythonوطزْٞ .یچ چیعی دیسا ٘ىطزْ! ٔٗ سؼسازی وشبة اظ (ا٘شكبضار ) O'Reillyدیسا وطزْ ،أب آٖ ٞب ثؿیبض
ٌطاٖ لیٕز ثٛز٘س یب ثیف سط قجی ٝیه زؾشٛضاِؼُٕ اضػبػی ثٛز٘س سب یه ضإٙٞب .ثٙبثطایٗ ٔٗ ثب ٔؿشٙساسی وٝ
ٕٞطا Python ٜآٔس ٜثٛز٘س ،ثؿٙس ٜوطزْٞ .طچٙس و ٝذیّی وٛسبٔ ٚ ٜرشهط ثٛز .ایٗ (ٔؿشٙسار) سهٛض ذٛثی ضا
زض ٔٛضز ٔ Pythonی زاز ،أب وبُٔ ٘جٛز ٗٔ .اظ آٖ ػبیی و ٝسؼطث ٝلجّی ثط٘بٔٛ٘ ٝیؿی زاقشٓ ،ثب ٕٞیٗ ذٛز ضا
دیف ثطزْ .أب ایٗ ثطای سبظ ٜوبضاٖ ٔٙبؾت ٘جٛز .زض حسٚز قف ٔب ٜثؼس اظ اِٚیٗ سؼطث ٝاْ ثب ، Pythonآذطیٗ
٘ؿر Red Hat 9.0 Linux ٝضا ٘هت وطزْ ٚثب ٚ KWordض ٔی ضفشٓ ٗٔ .زض ایٗ ٔٛضز سحطیه قسْ ٚ
٘بٌٟبٖ فىط ٘ٛقشٗ چیعی زض ٔٛضز Pythonث ٝش ٓٙٞضؾیس ٗٔ .قطٚع ثٛ٘ ٝقشٗ سؼساز وٕی نفح ٝوطزْ ،أب
ث ٝؾطػز ث 30 ٝنفح ٝضؾیس .ؾذؽ ٔٗ زض ٔٛضز ؾبذشٗ آٖ ث ٝنٛضر ٔفیس سط ٚزض لبِت یه وشبة ػسی سط
قسْ .ثؼس اظ ثبظ٘ٛیؿی ٞبی فطاٚاٖ ،ثٔ ٝطحّ ٝای ضؾیس و ٝث ٝیه ضإٙٞبی ٔفیس ثطای یبزٌیطی ظثبٖ Python
سجسیُ قس ٜثٛز ٗٔ .ثبٚض زاقشٓ و ٝایٗ وشبة ث ٝوٕه ٚاحشطاْ ٔٗ ث ٝػبٔؼٔ ٝشٗ ثبظ سجسیُ قٛز .ایٗ وشبة ثٝ
ػٛٙاٖ یبززاقز ٞبی قرهی ٔٗ زض Pythonقطٚع قس ٛٙٞ ٗٔ ٚظ آٖ ضا زض ٕٞبٖ ضأ ٜی ثی ،ٓٙاٌطچ ٝذیّی
سالـ وطز ٜاْ سب ث ٝشائم ٝزیٍطاٖ ذٛـ ثیبیس (:زض ضٚح ٚالؼی ٔشٗ ثبظ ٗٔ ،دیكٟٙبزٞبی فطاٚا٘ی ضا زضیبفز وطزٜ
اْ ،ا٘شمبز ٚثبظذٛضز اظ ذٛا٘ٙسٌبٖ ػاللٙٔ ٝس و ٗٔ ٝضا زض ثٟجٛز ایٗ وشبة ثؿیبض وٕه وطز ٜاؾز .
ٍضؼیت کتبة
ایٗ وشبة زض حبَ ؾبذز اؾز .فهُ ٞبی ظیبزی زائٕب زض حبَ سغییط ٚثٟجٛز ٞؿشٙس .ثٞ ٝط حبَ ایٗ وشبة
ذیّی وبُٔ قس ٜاؾز .قٕب ثبیس ثشٛا٘یس Pythonضا اظ ضٚی ایٗ وشبة یبز ثٍیطیس .اٌط لؿٕز ٞبیی اظ وشبة
٘بزضؾز یب غیط لبثُ زضن اؾزُِ ،فب ث ٗٔ ٝثٍٛییس .ثیف سط فهُ ٞب ثطای آیٙسَ ٜطاحی قس ٜاؾزٔ ،ب٘ٙس
wxPython.
@PythonForever
ٚة ؾبیز ضؾٕی ایٗ وشبة www.byteofpython.infoاؾز .اظ َطیك ٚة ؾبیز ،قٕب ٔی سٛا٘یس سٕبْ
وشبة ضا ث ٝنٛضر آ٘الیٗ ثرٛا٘یس یب آذطیٗ ٘ؿر ٝوشبة ضا زاّ٘ٛز وٙیسٕٞ ٚ .چٙیٗ ثطای ٔٗ ثبظذٛضز ثفطؾشیس .
شزایط استفبدُ
ثبسخَرد
ٔٗ ثطای ایٗ و ٝایٗ وشبة سب حس أىبٖ ػبِت ٚزلیك ثبقس ،سالـ ظیبزی وطز ٜاْ .زض ٞط نٛضر ،اٌط قٕب چیعی
ؤ ٝشٙبلى یب ٘بزضؾز ثبقس دیسا وطزیس ٚ ،یب ُّٔجی ث ٝثٟجٛز ٘یبظ زاقزُِ ،فب ٔٗ ضا آٌب ٜوٙیس .سب ثشٛا٘ٓ
انالحبر ٔٙبؾت ضا ا٘ؼبْ ز .ٓٞقٕب ٔی سٛا٘یس ث ٗٔ ٝزض ><[email protected]زؾشطؾی
زاقش ٝثبقیس .
ز ٚضا ٜثطای ؾبذشٗ یه ٘طْ افعاض ٚػٛز زاضز ،ضا ٜا َٚایٗ اؾز و ٝآٖ ضا ثؿیبض ؾبز ٜثؿبظیس و ٝضٚقٗ اؾز ٞیچ
ػیجی ٚػٛز ٘ساضز ; ضا ٜزیٍط آٖ اؾز و ٝآٖ ضا ثؿیبض دیچیس ٜثؿبظیس و ٝزض ایٗ حبِز ٞیچ ٘مم آقىبضی ٚػٛز
٘ساضز .ؾی .ای .آضٛٞ .ض ٔٛفمیز زض ظ٘سٌی یه چیع اؾز ؤ ٝظُ دكشىبض ٚاؾشمبٔز ،ذیّی اؾشؼساز ٚفطنز
الظْ ٘ساضز .ؾی .زثّی٘ٚ .ٛسر
@PythonForever
هؼزفی
فْزست هٌذرجبت
هؼزفی
Pythonیىی اظ ٔؼسٚز ظثبٖ ٞبیی اؾز ؤ ٝی سٛا٘س ازػبی لسضسٕٙس ثٛزٖ ٚزض ػیٗ حبَ ؾبز ٜثٛزٖ ضا زاقشٝ
ثبقس .قٕب دی ذٛاٞیس ثطز ٚقٍفز ظز ٜذٛاٞیس قس اظ ایٗ و ٝسٕطوع وطزٖ ضٚی ضا ٜحُ ٔكىُ آؾبٖ اؾز ،
ؾطیغ سط اظ سطویت ٚؾبذشبض ظثب٘ی و ٝزاضیس زض آٖ ثط٘بٔٛ٘ ٝیؿی ٔی وٙیس ٔ.ؼطفی ضؾٕی Pythonایٗ اؾز :
Pythonیه ظثبٖ ثط٘بٔٛ٘ ٝیؿی ثب یبزٌیطی آؾبٖ ٚلسضسٕٙس اؾز . Pythonیه ؾبذشٕبٖ زاز ٜؾُح ثبالی
وبضأس ٚیه ضٚـ ؾبز ٜأب ٔٛطط ضا ثطای ثط٘بٔٛ٘ ٝیؿی قیء ٌطایی زاضز .سطویت ظیجب ٔ ٚبقیٗ ٘ٛیؿی دٛیبی
، Pythonثٕٞ ٝطا ٜشار ٔفؿط ٌ ٝ٘ٛاـ ،آٖ ضا سجسیُ ث ٝظثب٘ی ایس ٜآَ ثطای اؾىطیذز ٘ٛیؿی ٚسٛؾؼ ٝؾطیغ ٘طْ
افعاضٞب زض ٔٙبَك ثؿیبضی زض اوظط دّشفٛضْ ٞب وطز ٜاؾز ٗٔ.ثیكشط ایٗ لبثّیز ٞب ضا ثب ػعئیبر ثیكشطی زض
ثرف ثؼسی شوط ذٛا ٓٞوطز .تَجِ ٌیس ٖٚ ٚضٚؾ ،ْٛؾبظ٘س ٜظثبٖ ٘، Pythonبْ ایٗ ظثبٖ ضا ثؼس اظ ٕ٘بیف
" "Monty Python's Flying Circusثی ثی ؾی ٌصاقز .أ ٚرهٛنب ٔبضٞبیی و ٝثب دیچف ثس٘كبٖ زٚض
حیٛا٘بر ٚفكبض زازٖ آٟ٘ب ،آٖ ٞب ضا ثطای غصا ٔی وكشٙس ،زٚؾز ٘ساقز .
سبدگی
Pythonیه ظثبٖ ؾبز ٚ ٜؾبزٌ ٜطا اؾز .ذٛا٘سٖ ٔشٗ یه ثط٘بٔ ٝذٛة و ٝثب ٛ٘ Pythonقش ٝقس ٜاؾزٔ ،ظُ
ذٛا٘سٖ اٍّ٘یؿی اؾزٞ ،طچٙس یه اٍّ٘یؿی ؾرز !ایٗ ؾطقز وس وبشة ، Pythonیىی اظ ثعضٌشطیٗ ٘مبٌ
لٛر آٖ اؾز .ایٗ ث ٝقٕب اػبظٔ ٜی زٞس و ٝضٚی ضا ٜحُ ٔكىُ ؾطیؼشط اظ ذٛز ثط٘بٔ ٝسٕطوع وٙیس .
@PythonForever
سبدگی یبدگیزی
Pythonثؿیبض آؾبٖ اؾزٕٞ .بٖ َٛض و ٝلجال ٌفش ٝقس، ٕٞبٖ َٛض ؤ ٝی زا٘یس ،قطٚع ث ٝوبض وطزٖ ثب
Pythonیه سطویت فٛق اِؼبز ٜآؾبٖ زاضز .
Pythonیه ٕ٘ ٝ٘ٛاظ FLOSSیب Free/Libré and Open Source Softwareاؾز .ث ٝػجبضر ؾبزٜ
سط ،قٕب ثَٛ ٝض آظازا٘ٔ ٝی سٛا٘یس وذی ٞبیی اظ ایٗ ٘طْ افعاض ضا سٛظیغ وٙیسٔ ،شٗ آٖ ضا ثرٛا٘یس ،سغییطاسی ضا زض آٖ
ایؼبز وٙیس ،لُؼٞ ٝبیی اظ آٖ ضا زض ثط٘بٔٞ ٝبی آظاز ػسیس ث ٝوبض ثجطیسٕٞ ٚ ،بٖ َٛض ؤ ٝی زا٘یسٔ ،ی سٛا٘یس ایٗ
وبضٞب ضا ا٘ؼبْ زٞیس . FLOSSثط دبی ٝا٘سیك ٝیه اػشٕبع اؾز و ٝاَالػبر ذٛزقبٖ ضا ث ٝاقشطان ٔی ٌصاض٘س.
ایٗ یىی اظ زالیُ ذیّی ذٛة ثٛزٖ Pythonاؾز -ایٗ ؾبذش ٝقس ٜاؾز ٚزائٕب سٛؾٍ یه اػشٕبع و ٝفمٍ
ٔی ذٛاٙٞس یه Pythonثٟشط ضا ثجیٙٙس ،ثٟجٛز ٔی یبثس .
ٚلشی قٕب زض حبَ ثط٘بٔٛ٘ ٝیؿی ثب ٞ Pythonؿشیس ،قٕب ٞطٌع ٘یبظی ثٍ٘ ٝطا٘ی زض ٔٛضز ػعئیبر ؾُح دبییٗ
ثٛزٖ ٔظُ ٔسیطیز ػبفظ ٝاقغبَ قس ٜسٛؾٍ ثط٘بٔ٘ ٝساضیس .
قبثلیت حول
ث ٝػّز َجیؼز ٔشٗ ثبظ آٖPython ،ث ٝدّشفٛضْ ٞبی ثؿیبضی ثطز ٜقس ٜاؾز (یؼٙی سغییطاسی ثطای وبض وطزٖ
ضٚی دّشفٛضْ ٞبی زض آٖ زاز ٜقس ٜاؾز ).سٕبْ ثط٘بٔٞ ٝبی قٕبٔ ،ی سٛا٘ٙس ضٚی ٞط وساْ اظ ایٗ دّشفٛضْ ٞب ثسٖٚ
الظْ زاقشٗ ٞیچ سغییطی وبض وٙٙس ،اٌط قٕب ث ٝا٘ساظ ٜوبفی ٔطالت ثبقیس و ٝثطذی لبثّیز ٞبی ؾیؿشٓ ٞبی
ثرهٛنی ضا ث ٝوبض ٘جطیس .قٕب ٔی سٛا٘یس Pythonضا زض،Macintosh ،FreeBSD ،Windows ، Linux
،VMS ،QNX ،Palm OS ،z/OS ،OS/390 ،BeOS ،AS/400 ،AROS ،Amiga ،OS/2 ،Solaris
ٚWindows CE ،Sharp Zaurus ،PlayStation ،VxWorks ،Acorn RISC OS ،Psionحشی
ٓٞPocket PCاؾشفبز ٜوٙیس !
ایٗ وٕی سٛيیح الظْ زاضز .یه ثط٘بٔ ٝو ٝزض ظثبٖ ٞبی وبٔذبیُ قسٔ ٜب٘ٙس ٛ٘ C++ ٚ Cقش ٝقس ٜثبقس ،اظ ظثبٖ
انّی یؼٙی Cیب C++ث ٝظثبٖ وبٔذیٛسط (وسٞبی ثبیٙطی یؼٙی ٞ0ب ٞ1 ٚب )ثٚ ٝؾیّ ٝیه وبٔذبیّط ٕٞطا ٜچٙسیٗ
@PythonForever
ا٘شربة ٚدطچٓ سجسیُ ٔی قٛزٚ .لشی قٕب ثط٘بٔ ٝضا اػطا ٔی وٙیس ،ثط٘بٔ ٝدی٘ٛس
زٙٞس(linker)/ٜثبضٌصاض )(loaderثط٘بٔ ٝضا اظ ٞبضززیؿه ث ٝحبفظ ٝوذی ٔی وٙس ٚاػطای آٖ ضا قطٚع ٔی
وٙس .اظ ؾٛیی زیٍط ،Python ،سجسیُ قسٖ ث ٝثبیٙطی ضا الظْ ٘ساضز .قٕب سٟٙب ٔؿشمیٕب ثط٘بٔ ٝضا اظ ؾٛضؼ وس
آٖ اػطا ٔی وٙیس .اظ زضPython ،ٖٚؾٛضؼ وس ضا زض زاذُ یه قىُ ٔشٛؾٍ ث٘ ٝبْ bytecodesسجسیُ ٔی
وٙس ٚؾذؽ ایٗ ضا ث ٝظثبٖ وبٔذیٛسط قٕب سطػٕٔ ٝی وٙس ٚؾذؽ آٖ ضا اػطا ٔی وٙس .سٕبْ ایٗ ٞب ،زض حمیمیز
اؾشفبز ٜاظ Pythonضا آؾبٖ ٔی وٙس ،چِ ٖٛعٔٚی ٘ساضز و ٝزض ٔٛضز وبٔذبیُ وطزٖ ثط٘بٍٔ٘ ٝطاٖ ثبقیس ٚ
ُٕٔئٗ قٛیس و ٝوشبثرب٘ٞ ٝبی ٔٙبؾت ِیٙه قسِٛ ٚ ٜز قس ٜثبقٙسٕٞ .چٙیٗ ایٗ ثط٘بٔ ٝقٕب ضا ذیّی ثیكشط
لبثُ حُٕ ذٛاٞس وطز ،اظ آٖ ػبیی و ٝقٕب ٔی سٛا٘یس فمٍ ثط٘بٔ ٝذٛز ضا ث ٝوبٔذیٛسط زیٍطی ٔٙشمُ وٙیس ٚوبض
ذٛاٞس وطز !
شیء گزایی
تَسؼِ پذیزی
اٌط قٕب ث ٝیه لُؼ ٝوس ذُط٘بن ثطای اػطای ثؿیبض ؾطیغ ٘یبظ زاضیس یب ٔی ذٛاٞیس چٙس لُؼ ٝاٍِٛضیشٓ و ٝثبظ
٘ك٘ٛس زاقش ٝثبقیسٔ ،ی سٛا٘یس آٖ لؿٕز اظ ثط٘بٔ ٝسبٖ ضا زض Cیب C++ثط٘بٔٛ٘ ٝیؿی وٙیس ٚؾذؽ آٖ ٞب ضا
زض ثط٘بٔ ٝذٛز اؾشفبز ٜوٙیس .
قبثلیت جبدادى
ٛ٘ C/C++قش ٝایس ،ػب ثسٞیس سب ثشٛا٘یس لبثّیز قٕب ٔی سٛا٘یس Pythonضا زض زاذُ ثط٘بٔٞ ٝبیی و ٝثب
اؾىطیذز ٘ٛیؿی ضا ث ٝوبضثطا٘شبٖ ثسٞیس .
وشبثرب٘ ٝاؾشب٘ساضز Pythonث ٝضاؾشی ثعضي اؾز .ایٗ ث ٝقٕب وٕه ٔی وٙس و ٝچیعٞبی ٌ٘ٛبٌ٘ٛی ضا قبُٔ
ٚاضزوطزٖ ػجبضار ٔٙظٓ ،سِٛیس ٔؿشٙسار ،آظٔبیف زؾشٍب ،ٜضقش ٝوكی ) ،(threadingدبیٍب ٜزازٔ ،ٜطٚضٌط ٚة
@PythonForever
،HTML ،XML-RPC ،XML ،Email،FTP ،CGIفبیُ ٞبی ، WAVضٔعٍ٘بضی وطزٖGUI( ،ضاثٍ
وبضثطی ٌطافیىی ) ٚTk ،ثمی ٝچیعٞبی ٚاثؿش ٝث ٝؾیؿشٓ ضا ا٘ؼبْ زٞیس .ث ٝیبز زاقش ٝثبقیس و ٝسٕبْ ایٗ ٞب
ٕٞیك ٝزضٞطػب و٘ Python ٝهت قس ٜثبقس ،لبثُ زؾشطؾی اؾز .ایٗ ث ٝػٛٙاٖ "لٞ ٜٛبی سٌٛصاقش "ٝفّؿفٝ
Pythonیبز ٔی قٛز ٌ.صقش ٝاظ ایٗ وشبثرب٘ ٝاؾشب٘ساضز ،وشبثرب٘ٞ ٝبی ثبویفیز ٌ٘ٛبٌ٘ٛی ٔب٘ٙس
ث٘ ٝكب٘ی )Twisted(ٚhttp://wxpython.org (wxPythonث٘ ٝكب٘ی
) Python Imaging Library(ٚhttp://www.twistedmatrix.com/products/twistedث٘ ٝكب٘ی
) ٚhttp://www.pythonware.com/products/pil/index.htmوشبثرب٘ٞ ٝبی ذیّی ظیبزسطی ٘یع
ٚػٛز زاض٘س .
خالصِ
ٚPythonالؼب یه ظثبٖ ٟٔیغ ٚلسضسٕٙس اؾز . Pythonسطویت وبضائی ٚ ٚیػٌی زضؾشی زاضز وٛ٘ ٝقشٗ ثط٘بٔٝ
ٞب زض Pythonضا ٔفطح ٚآؾبٖ ٔی وٙس .
اٌط لجال ٕ٘ی زا٘ؿشیسPerl ،یىی زیٍط اظ ظثبٖ ٞبی ثط٘بٔٛ٘ ٝیؿی ث ٝقسر ٔحجٛة ٔشٗ ثبظ سفؿیط قس ٜاؾز .
اٌط سب ث ٝحبَ ثٛ٘ ٝقشٗ یه ثط٘بٔ ٝثعضي زض Perlسالـ وطز ٜثبقیس ،قٕب ایٗ ؾٛاَ ضا اظ ذٛز دطؾیس ٜایس! ثٝ
ػجبضسی زیٍط ،ثط٘بٔٞ ٝبی Perlسب ٚلشی آؾبٖ ٞؿشٙس و ٝوٛچه ثبقٙس ٚثطای ا٘ؼبْ زازٖ وبضٞب ،ثط ثٟجٛزٞبی
فٙی وٛچه ٚاؾىطیذز ٞب ثطسطی زاضزٞ .طچٙس اظ ظٔب٘ی و ٝقٕب قطٚع ثٛ٘ ٝقشٗ ثط٘بٔٞ ٝبی ثعضي سط ٕ٘بییس،
آٟ٘ب ؾطیغ ؾٍٙیٗ ٔی ق٘ٛس ٗٔ ٚزض ٔٛضز ؾبثم ٝاْ زض ٔٛضز ٘ٛقشٗ ثط٘بٔٞ ٝبی Perlثعضي ثطای یب ٛٞنحجز
ٔی وٍٙٞ! ٓٙبٔی و Python ٚ Perl ٝثب ٔ ٓٞمبیؿٔ ٝی ق٘ٛس ،ثط٘بٔٞ ٝبی ٘ٛقش ٝقس ٜثب Pythonلُؼب ؾبزٜ
سط ٚ ٚايح سط ٞؿشٙس ٛ٘ ٚقشٗ آٖ ٞب آؾبٖ سط اؾز ٚاظ ایٗ ض ٚلبثُ ف ٟٓسط ٞؿشٙس ٍٟ٘ ٚساضی اظ آ٘بٖ اؾبٖ سط
اؾز Perl ٗٔ .ضا سحؿیٗ ٔی و ٚ ٓٙاظ آٖ ثطای دبی ٝای ضٚظا٘ ٝثطای چیعٞبی زیٍط اؾشفبزٔ ٜی و .ٓٙأب ٞطٌبٜ
و ٝثط٘بٔ ٝای ضا ٔی ٘ٛیؿٕٓٞ ٗٔ ،یك ٝث ٝفىط اؾشفبز ٜوطزٖ اظ ٔ Pythonی افشٓ ،ظیطا ثطای ٔٗ َجیؼی سط
اؾز . Perlزچبض سغییطار ٚزؾشىبضی ٞبی ظیبزی قس ٜاؾز و ٝث٘ ٝظط ٔی ضؾس یه ثٟجٛز فٙی ثعضي اؾز
(أب یه ػ ٟٓٙثطای ثٟجٛز اؾز)ٔ .شبؾفب٘ ٝث٘ ٝظط ٕ٘ی ضؾس و Perl 6 ٝو ٝزض آیٙس ٜذٛاٞس آٔسٞ ،یچ ثٟجٛزی
زض ایٗ ثبض ٜزاقش ٝثبقس .سٟٙب ٕٟٔ ٚشطیٗ فبیس Perl ٜو ٝاحؿبؼ ٔی و ٓٙآٖ ضا زاضز ،وشبثرب٘ ٝثعضي CPAN
آٖ ) (the Comprehensive Perl Archive Networkاؾز[ٕٞ]. 1بٖ َٛضی و ٝاظ ٘بْ آٖ دیساؾز ،ایٗ
یه ٔؼٕٛػ ٝثؿیبض ثعضي اظ ٔبغٞ َٚبی Perlاؾز ٚ ٚالؼب ث ٝزِیُ حؼٓ ذبِم ٚػٕمف قٍفز اٍ٘یع اؾز -
قٕب ٚالؼب ٞطوبضی ضا ثب وبٔذیٛسطی و ٝایٗ ٔبغٞ َٚب ضا زاقش ٝثبقسٔ ،ی سٛا٘یس ا٘ؼبْ زٞیس .یىی اظ زالیُ ایٙىٝ
Perlاظ Pythonوشبثرب٘ٞ ٝبی ثیف سطی زاضز ایٗ اؾز و Perl ٝظٚزسط اظ Pythonؾبذش ٝقس ٜاؾز .قبیس
@PythonForever
Perlث Python ٝضا اظ comp.lang.pythonدیكٟبز الظْ ثبقس ضٚقی ثطای ا٘شمبَ ٔبغٞ َٚبی
وٕٞ(http://groups.google.com/groups?q=comp.lang.python) (: ٓٙچٙیٗٔ ،بقیٗ ٔؼبظی
ػسیس Parrotثطای اػطا زض ٚ Perl 6ثمی ٝظثبٖ ٞبی سفؿیط قسٔ ٜب٘ٙس Tcl ٚ PHP ٚ Rubyث ٝذٛثی
َPythonطاحی قس ٜاؾز .ایٗ ثطای قٕب چٔ ٝؼٙبیی زاضز و ٝقبیس ثشٛا٘یس سٕبْ ٔبغٞ َٚبی Perlضا زض آیٙسٜ
زض Pythonث ٝوبض ثجطیس؟ ثٙبثطایٗ ،قٕب ٔی سٛا٘یس ثٟشطیٗ ٞطز ٚز٘یب ضا زاقش ٝثبقیس -وشبثرب٘ ٝلسضسٕٙس
CPANثٕٞ ٝطا ٜظثبٖ لسضسٕٙس Python.زض ٞط نٛضرٔ ،ب ٔؼجٛض ٞؿشیٓ و ٝفمٍ نجط وٙیٓ ٚثجیٙیٓ چٝ
اسفبلی ضخ ذٛاٞس زاز .
قبیس ثطای قٕب ػبِت ثبقس ثرٛا٘یس وٞ ٝىطٞبیی ٔظُ ٔ ESRؼجٛض قس ٜا٘س چ ٝچیع زض ٔٛضز Pythonثٍٛیٙس :
اضیه .اؼ .ضیٕ٘ٛسٛ٘ ،یؿٙس وشبة "وّیؿبی ػبٔغ ٚثبظاض " اؾز ٕٞ ٚچٙیٗ وؿی اؾز و ٝؤّٕ ٝشٗ ثبظ ضا
سؼبضی وطز .أ ٚی ٌٛیس و Python ٝظثبٖ ثط٘بٔٛ٘ ٝیؿی ٔحجٛثف قس ٜاؾز []. 2ایٗ ٔمبِ ٝیه ٔحطن ٚالؼی
ثطای اِٚیٗ سؼطث ٗٔ ٝثب Pythonثٛز .ثطٚؼ اوُٛ٘ ،یؿٙس ٜوشبة ٞبی ٔكٟٛض "سفىط زض "" ٚ Javaسفىط زض
"C++اؾز .أ ٚی ٌٛیس ٞیچ ظثب٘ی ث ٝا٘ساظ Python ٜا ٚضا سِٛیسوٙٙس ٜسط ٘ىطز ٜاؾز .أ ٚی ٌٛیس و ٝقبیس
Pythonسٟٙب ظثب٘ی اؾز و ٝسٕطوعـ ثط ضٚی آؾبٖ سط وطزٖ وبضٞب ثطای ثط٘بٔٛ٘ ٝیؽ اؾز .ثطای ػعئیبر ثیف
سط ایٗ ٔهبحج ٝضا ثرٛا٘یس[]. 3دیشط ٘ٛضٚیً یه ٘ٛیؿٙسٔ ٜكٟٛض ظثبٖ ثط٘بٔٛ٘ ٝیؿی ٔ ٚ Lispسیط ویفیز ػؿز
ٚػ ٛزض Googleاؾز(ثبسكىط اظ ٌبیس ٖٚ ٚضٚؾ ْٛثطای ٘كبٖ زازٖ آٖ) .أ ٚی ٌٛیس وٕٞ Python ٝیك ٝیه
لؿٕز وبُٔ اظ Googleثٛز ٜاؾز .قٕب ٚالؼب ٔی سٛا٘یس ایٗ ػّٕ ٝضا ثب ٍ٘ب ٜوطزٖ ث ٝنفحGoogle Jobs ٝ
ثطضؾی وٙیس[] 4و ٝزا٘ؿشٗ Pythonضا ث ٝػٛٙاٖ یه ٘یبظ ثطای ثط٘بٔٛ٘ ٝیؿبٖ فٟطؾز ٔی وٙس .ثطٚؼ دط٘ؽ
ثٙیبٖ ٌصاض ٚ OpenSource.orgدطٚغ LinuxUser ٜاؾز . LinuxUserلهس زاضز و ٝیه سٛظیغ Linux
اؾشب٘ساضز قس ٜو ٝچٙسیٗ قطوز اظ آٖ دكشیجب٘ی وٙٙس ضا ثؿبظز ٔ. Pythonسػیب٘ی ٕٞچ Ruby ٚ Perl ٖٛضا
قىؿز زاز ٜاؾز سب ذٛز ظثبٖ ثط٘بٔٛ٘ ٝیؿی انّی و ٝسٛؾٍ LinuxUserدكشیجب٘ی ذٛاٞس قس ،ثبقس .
@PythonForever
ًصت کزدىPython
فْزست هٌذرجبت
1.3ذالنٝ o
اٌط قٕب اظ یه سٛظیغ ٔ Linuxب٘ٙس Mandriva ٚ Fedoraیب ?ا٘شربثشبٖ ضا ایٙؼب لطاض زٞیس> ،یب یه ؾیؿشٓ
ٔBSDب٘ٙس FreeBSDاؾشفبزٔ ٜی وٙیس ،احشٕبال Pythonلجال ضٚی ؾیؿشٓ قٕب ٘هت قس ٜثبقس .ثطای
shellضا ثبظ ایٙى ٝأشحبٖ وٙیس Pythonضٚی ؾیؿشٓ Linuxقٕب لجال ٘هت قس ٜاؾز ،یه ثط٘بٔٝ
وٙیس(ٔب٘ٙس Konsoleیب ) ٚ Gnome-Terminalزؾشٛض python -Vضإٞ ،بٖ َٛض و ٝزض ظیط ٘كبٖ زازٜ
قس ٜاؾزٚ ،اضز وٙیس .
تَجِ ػالٔز $اػالٖ shellاؾز .ایٗ اػالٖ ثطای قٕب ثؿش ٝث ٝسٙظیٕبر ؾیؿشٓ ػبّٔشبٖ ٔرشّف ذٛاٞس ثٛز،
ثٙبثطایٗ ٔٗ اػالٖ ضا فمٍ ثب ػالٔز ٘ $كبٖ ذٛا ٓٞزاز .اٌط قٕب اَالػبر ٘ؿر ٝضا ٔب٘ٙس چیعی و ٝزض ثبال ٘كبٖ
زاز ٜقس ٜاؾز ٔی ثیٙیس ،قٕب اظ لجُ Pythonضا ٘هت وطز ٜایس .زض ٞط نٛضر اٌط قٕب یه دیبْ ٔب٘ٙس ایٗ
دیبْ زضیبفز وطزیس :
آٖ ٚلز قٕب Pythonضا ث ٝنٛضر ٘هت قس٘ ٜساضیس .ایٗ ثؿیبض ثؼیس اؾز ،أب ٕٔىٗ اؾز .زض ایٗ ٔٛضز ،قٕب
ز ٚضا ٜثطای ٘هت وطزٖ Pythonضٚی ؾیؿشٓ سبٖ زاضیس .ثؿشٞ ٝبی binaryضا ثب اؾشفبز ٜاظ ٘طْ افعاض ٔسیطیز
ثؿش ٝای وٕٞ ٝطا ٜؾیؿشٓ ػبُٔ سبٖ اؾز٘ ،هت وٙیسٔ ،ب٘ٙس yumزضurmpi ، Fedoraزض Mandriva
@PythonForever
apt-get ،Linuxزضpkg_add ، Debian GNU/Linuxزض ٚ FreeBSDغیط .ٜسٛػ ٝزاقش ٝثبقیس وٝ
ثطای اؾشفبز ٜاظ ایٗ ضٚـ ث ٝاسهبَ ایٙشط٘شی ٘یبظٔٙس ٞؿشیس ٔ.شٙبٚثب ،قٕب ٔی سٛا٘یس ثؿشٞ ٝبی binaryضا اظ
ػبیی زیٍط سٟی ٝوٙیس ٚث ٝوبٔذیٛسط قرهی سبٖ ٔٙشمُ وٙیس ٚآٖ ضا ٘هت وٙیس .قٕب ٔی سٛا٘یس Pythonضا اظ
ضٚی وس ٔٙجغ آٖ compileوٙیس[ ٚ] 1آٖ ضا ٘هت وٙیس .ضإٙٞبی compileوطزٖ زض ٚة ؾبیز سٟی ٝقسٜ
اؾز .
ث ٝآزضؼ http://www.python.org/download/ثطٚیس ٚآذطیٗ ٘ؿر ٝضا اظ ایٗ ٚة ؾبیز download
وٙیس(و 2.3.4 ٝثٍٙٞ ٝبْ سٟی ٝایٗ ٘ٛقش ٝثٛز) .ایٗ فمٍ ٍٔ 9بثبیز حؼٓ زاضز و٘ ٝؿجز ث ٝاوظط ظثبٖ ٞبی زیٍط
وٓ حؼٓ سط اؾز٘ .هت وطزٖ آٖ زلیمب ٔظُ ثمی٘ ٝطْ افعاضٞبی ٚیٙسٚظی اؾز .
اخطبر
اٌط ث ٝقٕب أىبٖ زاز ٜقس وٞ ٝط ػعء ا٘شربثی ضا ثس ٖٚػالٔز وٙیسٞ ،یچ وساْ ضا ثس ٖٚػالٔز ٘ىٙیس! ثطذی اظ
ایٗ اػعا ٔرهٛنب ٔ IDLEی سٛا٘ٙس ثطای قٕب ٔفیس ثبقٙس .یه ٚالؼیز ػبِت ایٗ اؾز و ٝحسٚز ٪70اظ
ٞdownloadبی ٔ Pythonطث ٌٛث ٝوبضثطاٖ Windowsاؾز .اِجش ٝایٗ چٟطٚ ٜالؼی ٔٛيٛع ضا اظآ٘ؼبییىٝ
سمطیجب ٕٝٞوبضثطاٖ ِیٛٙوؽ اظ لجُ ث ٝنٛضر دیف فطو Pythonضٚی ؾیؿشٓ قبٖ ٘هت قس ٜاؾز٘ ،كبٖ
ٕ٘ی زٞس .
اٌط قٕب ٔی ذٛاٞیس زض ذٍ فطٔبٖ Windowsاظ Pythonاؾشفبز ٜوٙیس ،قٕب ٘یبظ زاضیس ؤ ٝؿیط ٔشغیط ضا
ثَٛ ٝض ٔٙبؾت ٔطست وٙیس .ثطای ٞ Windowsبی ،2003 ٚ XP ٚ 2000ثط ضٚی >Control Panel -
System -> Advanced -> Environment Variablesوّیه وٙیس .ثطضٚی ٔشغیط PATHزض لؿٕز
""System Variablesوّیه وٙیس ،ؾذؽ ٌعی Edit ٝٙضا ا٘شربة وطز";C:\Python23" ٚ ٜضا ث ٝا٘شٟبی
ٞطچیعی و ٝاظ لجُ آ٘ؼب ثٛز ،ٜايبف ٝوٙیس(ثس٘ ٖٚكب٘٘ ٝمُ ل .)َٛاِجش٘ ٝبْ دٛقٙٔ ٝبؾت ضا ث ٝوبض ثجطیس .ثطای
C:\AUTOEXEC.BATايبف ٝوٙیس : ٘ؿرٞ ٝبی لسیٕی سط ، Windowsذُ ٌٛظیط ضا ث ٝفبیُ
(""PATH=%PATH%;C:\Python23ثس٘ ٖٚكب٘٘ ٝمُ ل ٚ )َٛؾیؿشٓ ضا زٚثبض ٜضا ٜا٘ساظی وٙیس .ثطای
،Windows NTاظ فبیُ AUTOEXEC.NTاؾشفبز ٜوٙیس .
@PythonForever
خالصِ
ثطای یه ؾیؿشٓ ، Linuxث ٝاحشٕبَ لٛیPython ،اظ لجُ ضٚی ؾیؿشٓ قٕب ٘هت قس ٜاؾز .زض غیط ایٗ
نٛضرٔ ،ی سٛا٘یس ثب اؾشفبز ٜاظ ٘طْ افعاض ٔسیطیز ثؿشٞ ٝبیی وٕٞ ٝطا ٜؾیؿشٓ قٕب ٞؿشٙس ،آٖ ضا ٘هت وٙیس.
ثطای یه ؾیؿشٓ ٘ ، Windowsهت وطزٖ Pythonث ٝا٘ساظ download ٜوطزٖ آٖ ٚزٚثبض وّیه وطزٖ
ضٚی آٖ آؾبٖ اؾز .اظ ایٗ دؽٔ ،ب فطو ٔی وٙیٓ و Python ٝضٚی ؾیؿشٓ قٕب ٘هت اؾز .زض ازأٔ ،ٝب
اِٚیٗ ثط٘بٔٔ Python ٝبٖ ضا ٔی ٘ٛیؿیٓ .
فْزست هٌذرجبت
هقذهِ
ٔب حبال ٔكبٞس ٜذٛاٞیٓ وطز و ٝچٍ ٝ٘ٛثط٘بٔ ٝؾٙشی " "Hello Worldضا زض Pythonاػطا وٙیٓ .ایٗ ث ٝقٕب
ذٛاٞس آٔٛذز و ٝچٍ ٝ٘ٛثط٘بٔٞ ٝبی Pythonضا ثٛٙیؿیس ،شذیط ٚ ٜاػطا وٙیس .زض ایٙؼب زٚضا ٜثطای اؾشفبز ٜاظ
@PythonForever
Pythonثطای اػطای ثط٘بٔٞ ٝب ٚػٛز زاضز -اؾشفبز ٜاظ اػالٖ فؼُ ٚا٘فؼبِی ٔفؿط یب اؾشفبز ٜاظ یه فبیُ ٔٙجغ.
ٔب ذٛاٞیٓ زیس و ٝچٍ ٝ٘ٛاظ ٞط ز ٚضٚـ اؾشفبز ٜوٙیٓ .
ٔفؿط ضا زض ذٍ فطٔبٖ ثب ٚاضز وطزٖ pythonزض اػالٖ shellآغبظ وٙیس .حبال ػجبضر 'print 'Hello World
ضا ٚاضز وٙیس ٚوّیس Enterضا ثع٘یس .قٕب ثبیس وّٕبر Hello Worldضا ث ٝػٛٙاٖ ذطٚػی ٔكبٞس ٜوٙیس .ثطای
وبضثطاٖ ٚیٙسٚظ ،قٕب ٔی سٛا٘یس ٔفؿط ضا ث ٝقطٌ ایٙىٔ ٝؿیط ٔشغیط ضا ث ٝزضؾشی سؼییٗ وطز ٜثبقیس ،زض ذٍ
IDLEاؾشفبز ٜوٙیس ٔ. IDLEرفف Integrated فطٔبٖ اػطا وٙیسٔ .شٙبٚثب ،قٕب ٔی سٛا٘یس اظ ثط٘بٔٝ
DeveLopment Environmentاؾز .ثط ضٚی Start -> Programs -> Python 2.x -> IDLE
)(Python GUIوّیه وٙیس .وبضثطاٖ ٘ Linuxیع ٔی سٛا٘ٙس اظ IDLEاؾشفبز ٜوٙٙس .سٛػ ٝوٙیس و ٝػالٔز
ٞبی <<<اػالٖ ٚاضز وطزٖ ػجبضار ٞ Pythonؿشٙس .
$ python
)Python 2.3.4 (#1, Oct 26 2004, 16:42:40
[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2
Type "help", "copyright", "credits" or "license" for
more information.
'>>> print 'hello world
hello world
>>>
سٛػ ٝزاقش ٝثبقیس و Python ٝثی زضً٘ ذطٚػی ضا ث ٝقٕب ٔی زٞس! چیعی و ٝقٕب ٚاضز وطز ٜایس ،یه ػجبضر
Pythonاؾزٔ .ب printضا ثطای ٘كبٖ زازٖ ٞط ٔمساضی و ٝقٕب ٔی ذٛاٞیس ث ٝوبض ٔی ثطیٓ .اؤ ٖٛٙب ٔشٗ
Hello Worldضا آٔبز ٜوطز ٜایٓ ٚایٗ ثی زضً٘ ضٚی نفحٕ٘ ٝبیف ٘كبٖ زازٔ ٜی قٛز .
ثطای ذبضع قسٖ اظ اػالٖ ،زض نٛضسی و ٝاظ ٚ IDLEذٍ فطٔبٖ Linux/BSDاؾشفبزٔ ٜی وٙیسCtrl-d ،ضا
فكبض زٞیس .زض ٔٛضز ذٍ فطٔبٖ ٚیٙسٚظ ٚCtrl-z ،ث ٝز٘جبَ آٖ Enterضا فكبض زٞیس .
@PythonForever
اًتخبة یک ٍیزایشگز
لجُ اظ ایٙىٔ ٝب زض ضاٛ٘ ٜقشٗ ثط٘بٔٞ ٝبی Pythonزض فبیُ ٞبی ٔٙجغ لسْ ثطزاضیٓٔ ،ب ث ٝیه ٚیطایكٍط ثطای
٘ٛقشٗ فبیُ ٞبی ٔٙجغ ٘یبظٔٙسیٓ .ا٘شربة یه ٚیطایكٍط ث ٝضاؾشی ثؿیبض ؾرز اؾز .قٕب ٔؼجٛض ٞؿشیس و ٝیه
ٚیطایكٍط ضا ا٘شربة وٙیس ٕٞبُ٘ٛضی و ٝقٕب سٕبیُ زاقش ٝثبقیس ذٛزضٚی ضا ؤ ٝی ذٛاٞیس ،ثرطیس .یه
ٚیطایكٍط ذٛة قٕب ضا وٕه ٔی وٙس و ٝثط٘بٔٞ ٝبی Pythonضا ث ٝؾبزٌی ا٘ؼبْ زٞیس ،وبض قٕب ضا ضاحز سط
وٙس ٚقٕب ضا زض ضؾیسٖ ثٔ ٝمهسسبٖ زض یه ضا ٜؾطیغ سط ٚأٗ سط وٕه وٙس(ثٞ ٝسفشبٖ زؾز دیسا وٙیس ).یىی
Pythonقٕب اظ دبی ٝای سطیٗ ِعٔٚبر دطضً٘ وطزٖ سطویت ظثبٖ اؾز و ٝزض آٖ سٕبْ اػعای ٔشفبٚر ثط٘بٔٝ
.اٌط قٕب اظ Windows ضٍ٘ی ٔی ق٘ٛس .ثٙبثطایٗ ٔی سٛا٘یس ثط٘بٔ ٝذٛز ضا ثجیٙیس ٚوبضوطز ضا سهٛض وٙیس
اؾشفبزٔ ٜی وٙیس ٗٔ ،ث ٝقٕب IDLEضا دیكٟٙبز ٔی و. IDLE ٓٙثطػؿش ٝوٙٙس ٜسطویت ظثبٖ ضا ٚچیعٞبی
ثؿیبض زیٍطی اظ ػّٕ ٝأىبٖ اػطای ثط٘بٔ ٝضا زض IDLE ٖٚزض ٔیبٖ زیٍط چیعٞب ضا زاضاؾز .یه سٛػٔ ٝرهٛل:
اظ Notepadاؾشفبز٘ ٜىٙیس -ایٗ یه ا٘شربة ذٛة ٘یؿز ،ظیطا ثطػؿش ٝوطزٖ سطویت ضا ا٘ؼبْ ٕ٘ی زٞس ٚثٝ
َٛض ٔ ،ٟٓاظ ز٘ساٌ٘ ٝصاضی ٔشٗ دكشیجب٘ی ٕ٘ی وٙس وٕٞ ٝبٖ َٛض ثؼسا ٔی ثیٙیٓ ،زض ٔٛضز ٔب ذیّی ٔ ٟٓاؾز.
ٚیطایكٍطٞبی ذٛة ٔب٘ٙس ( ٕٞ ٚIDLEچٙیٗ ) VIMث ٝنٛضر ذٛزوبض ث ٝقٕب وٕه ٔی وٙٙس ایٗ وبض ضا
ا٘ؼبْ زٞیس .اٌط قٕب اظ Linux/FreeBSDاؾشفبزٔ ٜی وٙیس ،قٕب ٌعیٞ ٝٙبی ظیبزی ثطای ا٘شربة ٚیطایكٍط
زاضیس .اٌط قٕب یه ثط٘بٔٛ٘ ٝیؽ ثبسؼطثٞ ٝؿشیس ،ثبیس اظ لجُ اظ VIMیب Emacsاؾشفبز ٜوطز ٜثبقیس٘ .یبظی ثٝ
ٌفشٗ ٘یؿز و ٝایٗ ز ،ٚز ٚثط٘بٔ ٝاظ لسضسٕٙسسطیٗ ٚیطایكٍطٞب ٞؿشٙس ٚقٕب اظ اؾشفبز ٜاظ آ٘بٖ ثطای ٘ٛقشٗ
ثط٘بٔٞ ٝبی Pythonسبٖ ...ذٛاٞیس قس ٗٔ .قرهب اظ VIMثطای اوظط ثط٘بٔٞ ٝبیٓ اؾشفبزٔ ٜی و .ٓٙاٌط قٕب
یه ثط٘بٔٛ٘ ٝیؽ سبظ ٜوبض ٞؿشیسٔ ،ی سٛا٘یس اظ Kateاؾشفبز ٜوٙیس و ٝیىی اظ ثط٘بٔٞ ٝبی ٔٛضز ػالل ٗٔ ٝاؾز.
زض نٛضسی ؤ ٝبیُ ٞؿشیس ظٔب٘ی ضا ثطای یبزٌیطی Emacs ٚ VIMاذشهبل زٞیس ،زض ایٗ نٛضر ٔٗ ذیّی
دیكٟٙبز ٔی و ٓٙو ٝاؾشفبز ٜاظ ٞطوساْ ضا یبز ثٍیطیس ،ظیطا زض اػطای َٛال٘ی ثطای قٕب ثؿیبض ٔفیس ذٛاٞس ثٛز .
اٌط قٕب ٛٙٞظ ٔی ذٛاٞیس ٌعیٞ ٝٙبی زیٍطی اظ یه ٚیطایكٍط ضا ػؿز ٚػ ٛوٙیسِ ،یؿز ػبٔغ ٚیطایكٍطٞبی
Pythonضا ثجیٙیس [ ٚ] 1ا٘شربة سبٖ ضا ا٘ؼبْ زٞیس .قٕب ٕٞچٙیٗ ٔی سٛا٘یس یه IDEضا ثطای Python
ا٘شربة وٙیس ِ(Integrated Development Environment).یؿز ػبٔغ ٞ IDEبیی ضا و ٝاظ Python
دكشیجب٘ی ٔی وٙٙس ،ثطای ػعییبر ثیف سط ثجیٙیس []. 2یه ٚلز و ٝقطٚع ثٛ٘ ٝقشٗ ثط٘بٔٞ ٝبی ثعضي
PythonوٙیسٞIDE ،ب ٔی سٛا٘ٙس ٚالؼب ذیّی ٔفیس ثبقٙس .یه ثبض زیٍط سىطاض ٔی وُِ ،ٓٙفب یه ٚیطایكٍط
ٔٙبؾت ضا ا٘شربة وٙیس -ایٗ ٔی سٛا٘س ٘ٛقشٗ ثط٘بٔٞ ٝبی Pythonضا ػصاة سط ٚؾبز ٜوٙس .
او ٖٛٙثیبییس ث ٝثط٘بٔٛ٘ ٝیؿی ثطٌطزیٓ .یه ضؾٓ ٚػٛز زاضز وٞ ٝطٌب ٜیه ظثبٖ ثط٘بٔٛ٘ ٝیؿی ػسیس ضا یبز ٔی
ٌیطیس ،اِٚیٗ ثط٘بٔ ٝای ؤ ٝی ٘ٛیؿیس ٚاػطا ٔی وٙیس ،ثط٘بٔ "Hello World" ٝاؾز -سٕبْ آٖ چ ٝو ٝا٘ؼبْ
@PythonForever
ٔی زٞس ایٗ اؾز وٍٙٞ ٝبٔی و ٝآٖ ضا اػطا ٔی وٙیس'Hello World' ،ضا ثٍٛیسٕٞ .بُ٘ٛضی و ٝؾیٕ ٖٛوٛظ٘ع
آٖ ضا لطاض زاز ٜاؾز ،ایٗ "َّؿٓ ثبؾشب٘ی ذسایبٖ ثط٘بٔٛ٘ ٝیؿی ثطای وٕه ث ٝقٕب ثطای یبزٌیطی ثٟشط ظثبٖ
ثط٘بٔٛ٘ ٝیؿی اؾز ٚ" (: .یطایكٍط ثطٌعیس ٜسبٖ ضا ثبظ وٙیس ،ثط٘بٔ ٝظیط ضا ٚاضز وٙیس ٚآٖ ضا ثب٘بْ
helloworld.pyشذیط ٜوٙیس
ایٗ ثط٘بٔ ٝضا ثٚ ٝؾیّ ٝثبظ وطزٖ دٛؾش ٝذٍ فطٔبٖ (Linux terminalیب اػالٖ )ٚ ٚ DOSاضز وطزٖ زؾشٛض
python helloworld.pyاػطا وٙیس .اٌط قٕب اظ IDLEاؾشفبزٔ ٜی وٙیس ،اظ ٔٛٙی Edit -> Run
Scriptیب ٔیب٘جط نفح ٝوّیس Ctrl-F5اؾشفبز ٜوٙیس .ذطٚػی زض ظیط ٘كبٖ زاز ٜقس ٜاؾز .
خزٍجی
$ python helloworld.py
Hello World
اٌط قٕب ذطٚػی ضا ٔظُ ذطٚػی ٘كبٖ زاز ٜقس ٜثبال زضیبفز وطزیس ،سجطیه ٔی ٌٛیٓ! -قٕب ثب ٔٛفمیز اِٚیٗ
ثط٘بٔ Python ٝسبٖ ضا اػطا وطز ٜایس .زض نٛضسی و ٝقٕب یه ذُب زضیبفز وطزیس ،ثط٘بٔ ٝثبال ضا ٕٞبُ٘ٛض وٝ
Pythonث ٝثعضٌی یب ٘كبٖ زاز ٜقس ٜاؾز ،سبیخ وٙیس ٚزٚثبض ٜثط٘بٔ ٝضا اػطا وٙیس .سٛػ ٝزاقش ٝثبقیس وٝ
وٛچىی حطٚف حؿبؼ اؾز یؼٙی printثب Printیىی ٘یؿز -سٛػ ٝوٙیس ث ٝحطف وٛچه pزض اِٚی ٚحطف
ثعضي Pزض زٔٚیٕٞ .چٙیٗ ُٕٔئٗ قٛیس و ٝلجُ اظ اِٚیٗ حطف ٞط ذٍ ٞیچ فبنّ ٝیب Tabای ٚػٛز ٘ساقشٝ
ثبقس ٔ -ب ثؼسا ذٛاٞیٓ زیس و ٝچطا ایٗ ٔ ٟٓاؾز .
اػبظ ٜزٞیس و ٝز ٚذٍ ا َٚثط٘بٔ ٝضا ثطضؾی وٙیٓ .ث ٝایٗ ٞب سٛيیح )ٔ(commentی ٌٛیٙس ٞ -طچیعی زض
ؾٕز ضاؾز ػالٔز #یه commentاؾز ٚاؾبؾب ث ٝػٛٙاٖ یبززاقز ٞبیی ثطای ذٛا٘ٙس ٜثط٘بٔٔ ٝفیس اؾز .
Pythonسٛيیح ٞب ضا ث ٝػع زض ٔٛاضز ذبيی اظ اِٚیٗ ذٍ ث ٝوبض ٕ٘ی ثطز .ایٗ ضا ( shebang lineذٍ سؼجی)ٝ
@PythonForever
ٔی ٌٛیٙس ٞ -ط ٚلشی و ٝاِٚیٗ حطٚف فبیُ ٔٙجغ ! ٚ #ث ٝز٘جبَ آٖ ٔحُ یه ثط٘بٔ ٝثبقس ،ایٗ ث ٝؾیؿشٓ
Linux/Unixقٕب ٔی ٌٛیس وٍٙٞ ٝبٔی و ٝثط٘بٔ ٝضا اػطا وطزیس ،ثبیس ثب ایٗ ٔفؿط اػطا قٛز .ایٗ ث ٝنٛضر
ٔفهُ زض ثرف ثؼسی قطح زاز ٜذٛاٞس قس .سٛػ ٝوٙیس و ٝقٕب ٕٞیكٔ ٝی سٛا٘یس ثط٘بٔ ٝضا ثط ضٚی ٞط
دّشفٛضٔی ثٚ ٝؾیّٔ ٝكرم وطزٖ ٔؿشمیٓ ٔفؿط زض ذٍ ٞبی زؾشٛضی ٔب٘ٙس python helloworld.pyاػطا
وٙیس .
هْن
اظ ٞ commentب ث ٝنٛضر ٕ٘بیبٖ ثطای سٛيیح ػعئیبر ٔ ٟٓثط٘بٔ ٝسبٖ اؾشفبز ٜوٙیس -ایٗ ثطای ذٛا٘ٙسٌبٖ
ثط٘بٔ ٝسبٖ ٔفیس اؾز ،ظیطا آٖ ٞب ث ٝؾبزٌی ٔی سٛا٘ٙس زضن وٙٙس و ٝثط٘بٔ ٝچ ٝوبضی ضا ا٘ؼبْ ٔی زٞس .ث ٝیبز
زاقش ٝثبقیس و ٝایٗ قرم ٔی سٛا٘س ذٛز قٕب ثؼس اظ قف ٔب ٜثبقس !ث ٝز٘جبَ سٛيیحبر ،یه زؾشٛض دبیشٖٛ
ٔی آیس -ایٗ فمٍ ٔشٗ ' 'hello worldضا ٘كبٖ ٔی زٞس .زض حمیمز printیه( operatorػٍّٕط) 'hello ٚ
'worldث ٝػٛٙاٖ یه ضقش٘ ٝكبٖ زازٔ ٜی قٛز ٍ٘ -طاٖ ٘جبقیسٔ ،ب ثؼسا ایٗ انُالحبر فٙی ضا ثب ػعئیبر ثیف
سط ثطضؾی ٔی وٙیٓ .
ثزًبهِّبی Pythonقبثلاجزا
ایٗ سٟٙب سٛؾٍ وبضثطاٖ Linux/Unixلبثُ اػطاؾز ،أب قبیس وبضثطاٖ Windowsزض ٔٛضز اِٚیٗ ذٍ ثط٘بٔٝ
وٙؼىب ٚثبقٙس .اثشسا ٔب ٔؼجٛضیٓ و ٝثٚ ٝؾیّ ٝزؾشٛض chmodث ٝثط٘بٔٔ ٝؼٛظ اػطا قسٖ ضا ثسٞیٓ ٚؾذؽ آٖ ضا
اػطا وٙیٓ .
زؾشٛض chmodزض ایٙؼب ثطای سغییط ضٚـ فبیُ ثٚ ٝؾیّ ٝزازٖ اػبظ ٜاػطا وطزٖ ث ٝسٕبْ وبضثطاٖ ؾیؿشٓ ث ٝوبض
ثطز ٜقس ٜاؾز .ؾذؽ ٔب ثط٘بٔ ٝضا ٔؿشمیٕب ثٚ ٝؾیّٔ ٝكرم وطزٖ ٔؿیط فبیُ ٔٙجغ اػطا ٔی وٙیٓٔ .ب اظ ./
ثطای ٘كبٖ زازٖ ایٙى ٝثط٘بٔ ٝزض دٛق ٝو٘ٛٙی اؾز ،اؾشفبزٔ ٜی وٙیٓ .ثطای ایٙى ٝچیعٞب ضا ػبِت سط وٙیسٔ ،ی
سٛا٘یس ٘بْ فبیُ ضا سٟٙب ثhelloworld ٝسغییط زٞیس ٚآٖ ضا ث ٝنٛضر helloworld/.اػطا وٙیس ٚایٗ اظ آٖ
ػبییى ٝؾیؿشٓ ٔی زا٘س ثبیس ثٚ ٝؾیّٔ ٝفؿطی ؤ ٝحُ آٖ زض اِٚیٗ ذٍ فبیُ ٔٙجغ ٘ٛقش ٝقس ٜاؾز آٖ ضا اػطا
وٙس ،وبض ذٛاٞس وطز .قٕب ٔی سٛا٘یس سب ظٔب٘ی ؤ ٝحُ ثط٘بٔ ٝضا ثسا٘یس ،آٖ ضا اػطا وٙیس -أب اٌط ثرٛاٞیس ثط٘بٔٝ
ضا زض ٞط ػبیی اػطا وٙیس ،چٝ؟ قٕب ٔی سٛا٘یس ایٗ وبض ضا ثب شذیط ٜثط٘بٔ ٝزض یىی اظ دٛقٞ ٝبیی و ٝزض ٔحیٍ
ٔشغییط ِ PATHیؿز قس ٜا٘س ،ا٘ؼبْ زٞیسٞ .طٌب ٜقٕب ثط٘بٔ ٝای ضا اػطا ٔی وٙیس ،ؾیؿشٓ ث ٝز٘جبَ آٖ ثط٘بٔٝ
@PythonForever
زض ٞط دٛق ٝای و ٝزض ٔحیٍ ٔشغییط PATHاؾزٔ ،ی ٌطزز ٚؾذؽ آٖ ثط٘بٔ ٝضا اػطا ٔی وٙس .قٕب ٔی سٛا٘یس
ایٗ ثط٘بٔ ٝضا زض ٞطػب ثب وذی ؾبز ٜفبیُ ٔٙجغ ث ٝیىی اظ دٛقٞ ٝبی ِیؿز قس ٜزض ، PATHلبثُ زؾشطؾی
وٙیس .
ٔب ٔی سٛا٘یٓ سٛؾٍ زؾشٛض ٚ echoدیك٘ٛس ٔ $شغییط PATHضا ٘كبٖ زٞیٓ سب ث shell ٝثفٕٟب٘یٓ ؤ ٝب ٔمساض
ایٗ ٔشغییط ضا ٔی ذٛاٞیٓٔ .ب ٔی ثیٙیٓ و/home/swaroop/bin ٝیىی اظ دٛقٞ ٝبیی اؾز و ٝزض ٔشغییط
ٚPATHػٛز زاضز و٘swaroop ٝبْ وبضثطی اؾز و ٗٔ ٝزض حبَ اؾشفبز ٜاظ آٖ زض ؾیؿشٕٓ ٞؿشٓٔ .ؼٕٛال
یه دٛقٔ ٝكبث ٝثطای ٘بْ وبضثطیشبٖ ضٚی ؾیؿشٓ ٚػٛز ذٛاٞس زاقزٔ .شٙبٚثب ،قٕب ٔی سٛا٘یس یه دٛق ٝزِٚرٛاٜ
PATHايبف ٝوٙیس -ایٗ ٔی سٛا٘س ثٚ ٝؾیّ ٝاػطای زؾشٛض ضا ثٔ ٝشغییط
PATH=$PATH:/home/swaroop/mydirا٘ؼبْ ٌیطز و'/home/swaroop/mydir' ٝدٛق ٝای
اؾز ؤ ٝی ذٛا ٓٞثٔ ٝشغییط PATHايبف ٝو. ٓٙزض نٛضسی و ٝثرٛاٞیس اؾىطیذز ٞبی ٔفیس ثٛٙیؿیس ٚ
ثرٛاٞیس ٞط ٚلز ٞ ٚطػب آٖ ضا اػطا وٙیس ،ایٗ ضٚـ ذیّی ٔفیس ذٛاٞس ثٛز .ایٗ ث ٝؾبذشٗ زؾشٛض ذٛزسبٖ ٔظُ
cdیب ٞط زؾشٛض زیٍطی و ٝآٖ ضا زض ذٍ فطٔبٖ ٚ Linuxاػالٖ DOSاؾشفبزٔ ٜی وٙیس ،قجی ٝاؾز .
تَجِ کٌیذ کِ W.r.t. Pythonیب یه ثط٘بٔ ٝیب یه اؾىطیذز یب ٘طْ افعاض ٕٝٞیه ٔؼٙی زاض٘س .
کوک گزفتي
اٌط قٕب ث ٝاَالػبر فٛضی زض ٔٛضز ٞط سبثغ یب زؾشٛضی زض ٘ Pythonیبظ زاضیسٔ ،ی سٛا٘یس اظ زؾشٛض انّی help
اؾشفبز ٜوٙیس .ایٗ ٔرهٛنب ٚلشی و ٝاظ اػالٖ ٔفؿط اؾشفبزٔ ٜی وٙیس ،ذیّی ؾٛزٔٙس اؾز .ثطای ٔظبَ،
)help(strضا اػطا وٙیس -ایٗ ضإٙٞبیی ضا ثطای والؼ ٘ strكبٖ ٔی زٞس و ٝایٗ ثطای شذیط ٜوطزٖ سٕبْ
ٔش٘ٛی (ضقشٞ ٝبیی) و ٝزض ثط٘بٔ ٝث ٝوبض ثطز ٜایس ،اؾشفبزٔ ٜی قٛز .والؼ ٞب زض فهُ ثط٘بٔٛ٘ ٝیؿی قیء ٌطایی
ٔفهال قطح زاز ٜذٛاٞس قس .
@PythonForever
تَجِ
ثطای ذبضع قسٖ اظ ضإٙٞب ،وّیس qضا ثع٘یس .ثٕٞ ٝیٗ سطسیتٔ ،ی سٛا٘یس زضثبض ٜسمطیجب ٞطچیعی زض Python
اَالػبر وؿت وٙیس .ثطای یبزٌیطی ثیكشط زض ٔٛضز اؾشفبز ٜوطزٖ اظ ذٛز ، helpاظ )( helpاؾشفبز ٜوٙیس !زض
نٛضسی و ٝقٕب ث ٝضإٙٞبیی زض ٔٛضز ػٍّٕطٞبیی ٔب٘ٙس ٘ printیبظ زاقش ٝثبقیس ،آٖ ٌب ٜقٕب ث ٝسٙظیٓ ٔحیٍ
ٔشغییط PYTHONDOCSث ٝنٛضر ٔٙبؾت ٘یبظ زاضیس .ایٗ زض Linux/Unixثٚ ٝؾیّ ٝاؾشفبز ٜاظ زؾشٛض
envث ٝؾبزٌی لبثُ ا٘ؼبْ اؾز .
قٕب سٛػ ٝذٛاٞیس وطز و ٗٔ ٝثطای ٔؼّ ْٛوطزٖ ' 'printاظ ػالٔز ٘مُ ل َٛاؾشفبز ٜوطز ٜاْ ،چٙبٖ وٝ
ٔPythonی سٛا٘سثفٕٟس ؤ ٗٔ ٝی ذٛا ٓٞزض ٔٛضز ''printوٕه ث ٝزؾز آٚضْ ٗٔ ٚاظ آٖ ٕ٘ی ذٛا ٓٞوٝ
چیعی ضا چبح زٞس (printوٙس ).سٛػ ٝوٙیس ٔحّی و ٝاظ آٖ اؾشفبز ٜوطز ٜأْ ،حُ زض ِیٛٙوؽ Fedora
Core 3اؾز -ایٗ قبیس ثطای سٛظیغ ٞب ٘ ٚؿرٞ ٝبی ٔرشّفٔ ،شفبٚر ثبقس .
خالصِ
او ٖٛٙقٕب ثبیس ثشٛا٘یس ثط٘بٔٞ ٝبی Pythonضا ث ٝآؾب٘ی ثٛٙیؿیس ،شذیط ٚ ٜاػطا وٙیس .حبال و ٝقٕب یه وبضثط
ٞPythonؿشیس ،ثیبیس چٙس ٔف ْٟٛثیكشط Pythonضا یبز ثٍیطیٓ .
پبیِ ّب
فْزست هٌذرجبت
1دبیٞٝب
1.2اػساز o
1.3ضقشٞٝب o
@PythonForever
ٔ 1.4شغییطٞب o
1.7اقیب o
1.7.1 ذطٚػی
1.7.2 ایٗ چٍ ٝ٘ٛوبض ٔی وٙس؟
1.8ذٍ ٞبی ُٔٙمی ٚفیعیىی o
1.10ذالنٝ o
پبیِّب
فمٍ چبح وطزٖ ' 'Hello Worldوبفی ٘یؿز ،ایٗ َٛض ٘یؿز؟ قٕب ٔی ذٛاٞیس چیعٞبیی ثیف اظ آٖ ا٘ؼبْ
زٞیس -قٕب ٔی ذٛاٞیس چٙس ٚضٚزی ثٍیطیس ،آٖ ضا زؾشىبضی وٙیس ٚچیعی ضا ث ٝػٛٙاٖ ذطٚػی ثٍیطیسٔ .ی ٔی
سٛا٘یٓ ایٗ ضا زض Pythonثٚ ٝؾیّ ٝطبثز ٞب ٔ ٚشغییطٞب ا٘ؼبْ زٞیٓ .
ثبثتّبی لفظی
یه ٔظبَ ثطای طبثز ٞب ِفظی یه ػسز ٔب٘ٙس e-3 9.25 ,1.23 ,5یب یه ضقشٔ ٝب٘ٙس ' 'This is a stringیب
"!"It's a stringاؾز .ایٗ یه ِفظ ٘بٔیسٔ ٜی قٛز ،ظیطا ِفظی اؾز -قٕب اضظـ آٖ ضا ثُٛض ِفظی ث ٝوبض
ٔی ثطیس .ػسز ٕٞ 2یك ٝذٛزـ ضا ٘كبٖ ٔی زٞسٞ ٝ٘ ،یچ چیع زیٍطی -ایٗ یه طبثز اؾز ،ظیطا اضظـ آٖ ضا
ٕ٘ی سٛاٖ سغییط زاز .اظ ایٗ ض ،ٚسٕبْ ایٗ ٞب ث ٝػٛٙاٖ طبثز ٞبی ِفظی سّمی ٔی ق٘ٛس .
اػذاد
اػساز زض Pythonچٟبض ٌ ٝ٘ٛا٘س -اػساز نحیح ،اػساز نحیح َٛیُ ،اػساز ٕٔیع قٙبٚض ٚاػساز ٔطوت .یه
ٔظبَ ثطای اػساز نحیح 2اؾز و ٝث ٝسٟٙبیی یه ػسز نحیح اؾز .اػساز نحیح َٛیُ ،سٟٙب اػساز نحیح
ثعضي سط ٞؿشٙس ٔ.ظبَ ٞبیی ثطای اػساز ٕٔیع قٙبٚض E-4 52.3 ٚ 3.23اؾز٘ .كب٘ E ٝسٛاٖ ٞبی 10ضا ٘كبٖ
ٔی زٞس .زض ایٗ ٔٛضزE-4 52.3 ،ثٔ ٝؼٙبی 4-10 * 52.3اؾز ٔ.ظبَ ٞبیی ثطای اػساز ٔطوتٚj) 4+5 -( ،
(j) 4.6 - 2.3اؾز .
رشتِّب
@PythonForever
یه ضقش ،ٝیه سٛاِی اظ حطٚف اؾز .ضقشٞ ٝب اؾبؾب سٟٙب یه ٌط ٜٚاظ وّٕبر ا٘س ٗٔ.سمطیجب ٔی سٛا٘ٓ سًٕیٗ
و ٓٙو ٝقٕب احشٕبال زض ٕٝٞثط٘بٔٞ ٝبی Pythonای ؤ ٝی ٘ٛیؿیس ،اظ ضقشٞ ٝب اؾشفبز ٜذٛاٞیس وطز .ثٙبثطایٗ،
ث ٝثرف ظیط سٛػ ٝوٙیس .چٍٍ٘ٛی اؾشفبز ٜاظ ضقش ٝزض Pythonایٙؼبؾز :
قٕب ٔی سٛا٘یس ثب اؾشفبز ٜاظ ٘كبٖ ٘مُ ل َٛسىی ٔب٘ٙس' ، 'Quote me on thisضقشٞ ٝب ضا ٔؼیٗ وٙیس .
ضقشٞ ٝبی زض٘ ٖٚكبٖ ٘مُ ل َٛزٚسبیی زلیمب ٔظُ ضقشٞ ٝبی زٚضٖ ٘كبٖ ٘مُ ل َٛسىی ػُٕ ٔی وٙٙس .یه
ٔظبَ "? "What's your nameاؾز .
قٕب ٔی سٛا٘یس ثب اؾشفبز ٜاظ ٘كبٖ ٘مُ ل َٛؾ ٝسبیی ضقشٞ ٝبی چٙس ذُی ضا ٔؼیٗ وٙیس .قٕب ٔی سٛا٘یس ثَٛ ٝض
آظازا٘ ٝاظ ٘كبٖ ٞبی ٘مُ ل َٛسىی ٚزٚسبیی زض٘ ٖٚكبٖ ٞبی ٘مُ ل َٛؾ ٝسبیی اؾشفبز ٜوٙیس .یه ٔظبَ :
فطو وٙیس ؤ ٝی ذٛاٞیس ضقش ٝای زاقش ٝثبقیس و ٝزاضای ٘كب٘٘ ٝمُ ل َٛسىی )'(ثبقس ،چٍ ٝ٘ٛایٗ ضقش ٝضا
ٔؼیٗ ذٛاٞیس وطز؟ ٔظال ضقش What's your name? ٝاؾز .قٕب ٕ٘ی سٛا٘یس '? 'What's your nameضا
ٔكرم وٙیس ،ظیطا Pythonزض ٔٛضز ٔحُ آغبظ ٚدبیبٖ ضقش ٝاقشجب ٜذٛاٞس وطز .ثٙبثطایٗ قٕب ثبیس ٘كبٖ زٞیس
و ٝایٗ ٘كبٖ ٘مُ ل َٛسىی دبیبٖ ضقش ٝضا ٘كبٖ ٕ٘ی زٞس .ایٗ ثٚ ٝؾیّ ٝوٕه چیعی ث٘ ٝبْ سٛاِی ٞبی ٌطیع
لبثُ ا٘ؼبْ اؾز .قٕب ٘كبٖ ٘مُ ل َٛسىی ضا ٔب٘ٙس '\ٔكرم ٔی وٙیس -ث ٝذٍ ٔٛضة )(backslashسٛػٝ
قٛز .حبال قٕب ٔی سٛا٘یس ضقش ٝضا ٔب٘ٙس '?ٔ 'What\'s your nameكرم وٙیس .یه ضا ٜزیٍط ثطای ٘كبٖ
زازٖ ایٗ ضقشٔ ٝرهٛلٔ ،ی سٛا٘س "? "What's your nameیؼٙی اؾشفبز ٜاظ ٘كبٖ ٘مُ ل َٛزٚسبیی ثبقس.
ثٕٞ ٝیٗ سطسیت ،قٕب ٔؼجٛضیس و ٝاظ یه سٛاِی ٌطیع ثطای اؾشفبز ٜاظ ذٛز ٘كبٖ ٘مُ ل َٛزٚسبیی زض یه ضقشٝ
٘كبٖ ٘مُ ل َٛزٚسبیی اؾشفبز ٜوٙیسٕٞ .چٙیٗ قٕب ثبیس ذٛز ذٍ ٔٛضة )(backslashضا ثب اؾشفبز ٜاظ سٛاِی
@PythonForever
ٌطیع \\ ٘كبٖ زٞیس .اٌط قٕب ثرٛاٞیس یه ضقش ٝز ٚذُی ضا ٔؼیٗ وٙیس چٝ؟ ٕٞبُ٘ٛض و ٝزض ثبال ٘كبٖ زازٜ
قس ٜاؾز ،یه ضا ٜاؾشفبز ٜاظ ضقش ٝای ثب ٘كبٖ ٘مُ ل َٛؾ ٝسبیی اؾز ٚیب اظ سٛاِی ٌطیع ثطای حطف ا َٚذٍ
ػسیس اؾشفبز ٜوٙیس -اؾشفبز ٜاظ \nثطای ٘كبٖ زازٖ قطٚع ذٍ ػسیس .یه ٔظبَ : This is the first
line\nThis is the second line.یه سٛاِی ٌطیع ٔفیس زیٍط ثطای ٔؼّ ْٛوطزٖ ایٗ و ٝیه tabاؾز\t ،
اؾز .زض ایٙؼب سٛاِی ٞبی ٌطیع ثؿیبض ثیكشطی ٚػٛز زاض٘س ،أب ٔٗ سٟٙب ٔفیسسطیٗ سٛاِی ٞبی ٌطیع ضا زض ایٙؼب ٘بْ
ثطز ٜاْ .یه چیع ثطای سصوط زازٖ ایٗ اؾز و ٝیه ذٍ ٔٛضة )(backslashزض ا٘شٟبی ذٍ ٘كبٖ ٔی زٞس وٝ
ضقش ٝزض ذٍ ثؼسی ازأ ٝزاضز ،أب ٞیچ ذٍ ػسیسی ايبف٘ ٝكس ٜاؾز ٔ.ظال :
ٔؼبزَ
اؾز .
اٌط قٕب الظْ زاضیس سؼسازی ضقش ٝضا ٔؼیٗ وٙیس وٞ ٝیچ دطزاظـ ٔرهٛنی ٔب٘ٙس سٛاِی ٞبی ٌطیع زض آٖ
اؾشفبز٘ ٜكس ٜاؾز ،چیعی ؤ ٝی ذٛاٞیس ٔكرم وطزٖ یه ضقش ٝذبْ ثٚ ٝؾیّ ٝدیك٘ٛس rیب Rاؾز .یه
ٔظبَ :
Unicodeیه ضا ٜاؾشب٘ساضز ثطای ٘ٛقشٗ ٔش ٖٛثیٗ إِّّی اؾز .اٌط قٕب ٔی ذٛاٞیس ٔشٗ ضا زض ظثبٖ ٔحّی
ذٛز ٔب٘ٙس ٙٞسی ٚػطثی ثٛٙیؿیس ،آٍ٘ب ٜقٕب ث ٝیه ٚیطایكٍط ٔشٗ ثب لبثّیز دكشیجب٘ی اظ ٘ Unicodeیبظٔٙسیس.
ثٕٞ ٝیٗ سطسیتPython ،ث ٝقٕب اػبظٔ ٜی زٞس ؤ ٝشٗ Unicodeضا اؾشفبز ٜوٙیس -سٕبْ چیعٞبیی و ٝالظْ
اؾز ا٘ؼبْ زٞیس ،اؾشفبز ٜاظ دیك٘ٛس uیب Uاؾزٔ .ظال
@PythonForever
ث ٝیبز زاقش ٝثبقیس وٚ ٝلشی ثب فبیُ ٞبی ٔشٙی ؾطٚوبض زاضیس اظ ضقشٞ ٝبی Unicodeاؾشفبز ٜوٙیسٔ ،رهٛنب
ٚلشی ؤ ٝی زا٘یس و ٝفبیُٔ ،شٗ ٘ٛقش ٝقس ٜث ٝغیط اظ اٍّ٘یؿی ضا زضثط ذٛاٞس زاقز .
ایٗ ث ٝایٗ ٔؼٙی اؾز وٚ ٝلشی ضقش ٝای ضا ٔی ؾبظیسٕ٘ ،ی سٛا٘یس آٖ ضا سغییط زٞیس.اٌطچ ٝقبیس ایٗ یه چیع
ثس ث٘ ٝظطآیس ،أب ٚالؼب ایٗ چٙیٗ ٘یؿز ٔ.ب ذٛاٞیٓ زیس و ٝچطا ایٗ یه ٔحسٚزیز ثطای ثط٘بٔٞ ٝبی ثؼسی ؤ ٝب
ٔی ٘ٛیؿیٓ٘ ،یؿز .
اٌط قٕب ز ٚضقشِ ٝفظی ضا وٙبض ٓٞلطاض زٞیس ،آٖ ٞب ث ٝنٛضر ذٛزوبض سٛؾٍ Pythonازغبْ ٔی ق٘ٛسٔ .ظال
'?'What\'s' 'your nameث ٝنٛضر ذٛزوبض ث"What's your name?" ٝسجسیُ ٔی قٛز .
زض ٞ Pythonیچ ٘ٛع زاز char ٔ ٜػساٌب٘ ٝای ٚػٛز ٘ساضزٞ .یچ ٘یبظ ٚالؼی ثطای آٖ ٚػٛز ٘ساضز ُٕٔ ٗٔ ٚئٗ
ٞؿشٓ و ٝقٕب وٕجٛز آٖ ضا حؽ ٘رٛاٞیس وطز .
ث ٝیبز زاقش ٝثبقیس و ٝضقشٞ ٝبی زاضای ٘كبٖ ٘مُ ل َٛسىی ٚضقشٞ ٝبی ٘مُ ل َٛزٚسبیی یىی ٞؿشٙس -زض ٞط
نٛضر آٖ ٞب ٔشفبٚر ٘یؿشٙس .
ٕٞیكٚ ٝلشی و ٝثب ػجبضار ػبزی ؾطٚوبض زاضیس اظ ضقشٞ ٝبی ذبْ اؾشفبز ٜوٙیس .زض غیط ایٗ نٛضر قبیس سؼساز
ظیبزی الظْ ثبقس .
هتغییزّب
اؾشفبزٔ ٜحى اظ طبثز ٞبی ِفظی ٔی سٛا٘س ذیّی ظٚز ذؿش ٝوٙٙس ٜقٛز ٔ -ب ث ٝچٙس ضا ٜشذیطٞ ٜط اَالػبسی ٚ
زؾشىبضی نحیح آٖ ٘یبظٔٙسیٓ .ایٗ ػب ٔىب٘ی اؾز ؤ ٝشغییطٞب ٚاضز نحٔ ٝٙی ق٘ٛسٔ .شغییطٞب وبٔال چیعی
ٞؿشٙس ؤ ٝؼٙی ٔی زٙٞس -اضظـ آٖ ٞب ٔی سٛا٘س سغییط دیسا وٙس یؼٙی ٞط چیعی ضا ثب اؾشفبز ٜاظ ٔشغییطٞب ٔی
@PythonForever
سٛا٘یس شذیط ٜوٙیسٔ .شغییطٞب فمٍ لؿٕز ٞبیی اظ حبفظ ٝوبٔذیٛسط قٕب ٞؿشٙس ؤ ٝمساضی اَالػبر ضا زض آٖ
شذیطٔ ٜی وٙیس.ثط ذالف طبثز ٞبی ِفظی ،قٕب ث ٝضٚـ ٞبیی ثطای زؾشطؾی ث ٝایٗ ٔشغییطٞب ٘یبظٔٙسیس ٚاظ ایٗ
ض ٚقٕب آٖ ٞب ضا ٘بْ ٌصاضی ٔی وٙیس .
ٔشغییطٞب ٔظبَ ٞبیی اظ قٙبؾٞ ٝب ٞؿشٙس .قٙبؾٞ ٝب ٘بْ ٞبیی ٞؿشٙس و ٝثطای قٙبذشٗ چیعی ث ٝآٖ زازٔ ٜی
:اِٚیٗ حطف قٛز .ایٙؼب سؼسازی لب٘ٚ ٖٛػٛز زاضز و ٝثطای ٘بْ ٌصاضی قٙبؾٞ ٝب ٔؼجٛضیس اظ آٖ دیطٚی وٙیس
قٙبؾ ٝثبیس یىی اظ حطٚف اِفجب(ثعضي یب وٛچه) یب یه ذٍ ظیطیٗ )'_'(ثبقس .ثمی٘ ٝبْ قٙبؾٔ ٝی سٛا٘س قبُٔ
حطف اِفجب(ثعضي یب وٛچه) ،ذُ ٌٛظیطیٗ( '_') یب اػساز( )9-0ثبقس ٘.بْ ٞبی ٘كب٘ ٝث ٝثعضٌی ٚوٛچىی حطٚف
حؿبؼ ٞؿشٙس .ثطای ٔظبَmyName ٚmyname ،یىی ٘یؿشٙس .ث ٝحطف وٛچه nزض اِٚی ٚحطف ثعضي
Nزض زٔٚی سٛػ ٝوٙیس ٔ a1b2_c3 ٚ. i, __my_name, name_23ظبَ ٞبیی اظ ٘بْ ٞبی قٙبؾٔ ٝؼشجط
ٞؿشٙس ٔ my-name ٚ. 2things, this is spaced outظبَ ٞبیی اظ ٘بْ ٞبی قٙبؾ٘ ٝبٔؼشجط ٞؿشٙس .
اًَاع دادُّب
ٔشغییطٞب ٔی سٛا٘ٙس اضظـ ٞبیی اظ زؾشٛضار ٌ٘ٛبٌ ٖٛضا و ٝا٘ٛاع زاز٘(data types) ٜبٔیسٔ ٜی ق٘ٛس ٍٝ٘ ،زاضی
وٙٙس .زؾشٛضار انّی اػساز ٚضقشٞ ٝبی ٞؿشٙس ؤ ٝب زض ٔٛضز آٖ ٞب ثحض وطز ٜایٓ .زض فهُ ٞبی ثؼس ،ذٛاٞیٓ
زیس و ٝچٍ ٝ٘ٛثب اؾشفبز ٜاظ والؼ ٞب زؾشٛضار ذٛزٔبٖ ضا ثؿبظیٓ .
اشیب
ث ٝیبز زاقش ٝثبقیس وٞ Python ٝطچیعی و ٝزض ثط٘بٔ ٝث ٝوبض ٌطفش ٝقٛز ضا ث ٝػٛٙاٖ قیء سّمی ٔی وٙس .زض
ػٛو ایٙى ٝثٍٛییٓ چیعیٔ ،ب ٔی ٌٛییٓ قیئی .
Pythonقسیسا زض زضیبفشٗ ایٙى ٕٝٞ ٝچیع قبُٔ اػساز ،ضقشٞ ٝب ٚحشی سٛاثغ قیء ٞؿشٙس ،قیءٌطا اؾز ٔ.ب
حبال ٔی ثیٙیٓ چٍ ٝ٘ٛاظ ٔشغییطٞب ٕٞطا ٜثب طبثز ٞبی ِفظی اؾشفبز ٜوٙیٓٔ .ظبَ دیف ض ٚضا شذیط ٜوٙیس ٚثط٘بٔٝ
ضا اػطا وٙیس .
@PythonForever
چگًَگی ًَشتي ثزًبهِ ّبی Python
اظ ایٗ دؽ ،ضٚـ اؾشب٘ساضز ثطای شذیط ٚ ٜاػطای یه ثط٘بٔ Python ٝاظ ایٗ لطاض اؾز ٚ: 1-یطایكٍط ٔٛضز ػاللٝ
ذٛز ضا ثبظ وٙیس . 2-وسٞبی ثط٘بٔ ٝضا و ٝزض ٔظبَ زاز ٜقس ٜاؾز ضا ٚاضز وٙیس . 3-آٖ ضا ث ٝػٛٙاٖ یه فبیُ ثب
ٕٞبٖ ٘بْ فبیّی و ٝزض وبٔٙز ث ٝآٖ اقبض ٜقس ٜاؾز ،شذیط ٜوٙیس ٗٔ .اظ ایٗ لطاضزاز و ٝسٕبْ ثط٘بٔٞ ٝبی
Pythonضا ثب دؿ٘ٛس .pyشذیط ٜو ،ٓٙدیطٚی ٔی ؤ. 4- ٓٙفؿط ضا ثب زؾشٛض python program.pyاػطا
وٙیس یب اظ IDLEثطای اػطای ثط٘بٔٞ ٝب اؾشفبز ٜوٙیس .قٕب ٕٞچٙیٗ ٔی سٛا٘یس اظ ضٚـ لبثُ اػطا وطزٖ اؾشفبزٜ
وٙیس و ٝلجال زض ٔٛضز آٖ ثحض قس ٜاؾز ٔ.ظبَ .4.1اؾشفبز ٜاظ ٔشغییطٞب ٚطبثز ٞبی ِفظی
خزٍجی
$ python var.py
5
6
This is a multi-line string.
This is the second line.
5ضا ثٔ ٝشغییط iثٚ ٝؾیّ ٝػٍّٕط ایٙؼب چٍٍ٘ٛی وبضوطزٖ ثط٘بُٔٔ ٝطح اؾز .اثشسا ٔب اضظـ طبثز ِفظی
ٚاٌصاضی(;) ٔی زٞیٓ .ایٗ ذٍ یه زؾشٛض ٘بٔیسٔ ٜی قٛز ،ظیطا ٔكرم ٔی وٙیس و ٝچیعی ثبیس ایٗ ٌٝ٘ٛ
ا٘ؼبْ قٛزٔ .ب اؾٓ ٔشغییط iضا ث ٝاضظـ 5دی٘ٛس ٔی زٞیٓ .ؾذؽ ٔب اضظـ iضا ثب اؾشفبز ٜاظ زؾشٛض printچبح
ٔی وٙیٓ و ٝثَٛ ٝض اظ دیف سؼییٗ قس ،ٜفمٍ اضظـ ٔشغییط ضا ضٚی نفحٕ٘ ٝبیف چبح ٔی وٙس .ؾذؽ ٔب 1ضا
ث ٝاضظقی و i ٝزاضز ايبفٔ ٝی وٙیٓ ٚآٖ ضا زٚثبض ٜشذیطٔ ٜی وٙس .ؾذؽ ٔب آٖ ضا چبح ٔی وٙیٓ ٕٞ ٚبٖ َٛض
و ٝا٘شظبض زاقشیٓٔ ،ب ٔمساض 6ضا ٔی ٌیطیٓ .ثٕٞ ٝیٗ سطسیتٔ ،ب ضقشِ ٝفظی ضا ث ٝػٛٙاٖ ٔشغییط sسؼییٗ ٔی
وٙیٓ ٚؾذؽ آٖ ضا چبح ٔی وٙیٓ .
@PythonForever
سصوط ثطای ثط٘بٔٛ٘ ٝیؿبٖ C/C++
ٔشغییط ٞب سٟٙب ثب سؼییٗ یه اضظـ ثطای آٖ ٞب ث ٝوبض ٔی ض٘ٚسٞ .یچ ثیب٘ی ٝیب سؼطیف ٘ٛع زاز ٜای الظْ ٘یؿز/ثٝ
وبض ٕ٘ی ضٚز .
یه ذٍ فیعیىی چیعی اؾز و ٝزض حیٗ ٘ٛقشٗ ثط٘بٔٔ ٝی ثیٙیس .یه ذٍ ُٔٙمی چیعی اؾز و Python ٝثٝ
ػٛٙاٖ یه زؾشٛض سىی ٔی ثیٙس . Pythonيٕٙب فطو ٔی وٙس وٞ ٝط ذٍ فیعیىی ٔب٘ٙس یه ذٍ ُٔٙمی
اؾز .یه ٔظبَ ثطای یه ذٍ ُٔٙمی یه زؾشٛض ٔب٘ٙس ' print 'Hello Worldاؾز -اٌط ایٗ سٟٙب ضٚی یه
ذٍ ثٛز(ٕٞبُ٘ٛضی و ٝزض یه ٚیطایكٍط ٔی ثیٙیس) ،آٖ ٌب ٜایٗ قجی ٝیه ذٍ فیعیىی اؾز .يٕٙب Python
وبضثطز یه زؾشٛض سىی ضا ثط َجك ٞط ذٍ سمٛیز ٔی وٙس و ٝوس ضا ذٛا٘بسط ٔی وٙس .اٌط ٔی ذٛاٞیس ثیف سط اظ
;) یه ذٍ ضا زض یه ذٍ فیعیىی ٔكرم وٙیس ،آٍ٘بٔ ٜؼجٛضیس و ٝایٗ ضا ثٚ ٝؾیّ ٝیه ٘مُٚ ٚ ٝیطٌ(َٛ
ٔكرم وٙیس و ٝا٘شٟبی ذٍ/زؾشٛض ُٔٙمی ضا ٘كبٖ ٔی زٞسٔ .ظال ٔi = 5 print iظُ ;ٛٔi = 5; print iطط
اؾز ٕٞ ٚبٖ چیع ٔی سٛا٘س ایٗ ٌٛ٘ ٝ٘ٛقش ٝقٛز ;i = 5; print iیب حشی i = 5; print iثٞ ٝط حبَٗٔ ،
قسیسا سٛنیٔ ٝی و ٓٙو ٝثٛ٘ ٝقشٗ سٟٙب یه ذٍ ُٔٙمی زض ٖٚیه ذٍ فیعیىی ػبزر وٙیس .اظ ثیف اظ یه
ذٍ فیعیىی ثطای یه ذٍ ُٔٙمی زض نٛضسی اؾشفبز ٜوٙیس و ٝذٍ ُٔٙمی ٚالؼب َٛال٘ی ثبقسٞ .سف ایٗ اؾز
و ٝزض نٛضر أىبٖ اظ ٘مُٚ ٚ ٝیطٌ َٛثٔ ٝمساض ظیبز اؾشفبز٘ ٜىٙیس ،اظ آ٘ؼبیی و ٝایٗ ٔٛػت ذٛا٘بسط قسٖ وس
ٔی ٌطزز .زض حمیمزٞ ٗٔ ،یچ ٚلز یه ػالٔز ٘مُٚ ٚ ٝیطٌ َٛضا زض یه ثط٘بٔ Python ٝث ٝوبض ٘جطز ٜاْ ٚ
حشی ٘سیس ٜاْ .یه ٔظبَ ٘ٛقشٗ یه ذٍ ُٔٙمی سؼساز ظیبزی ذٍ فیعیىی ضا ٔی دٛقب٘س ،زض ظیط آٔس ٜاؾز.
ایٗ ث ٝاِحبق ذٍ ٚايح )(explicit line joiningاقبض ٜزاضز .
\ s = 'This is a string.
'This continues the string.
print s
ایٗ ،ذطٚػی
\ print
i
@PythonForever
ثب
print i
یىؿبٖ اؾز ٌ.بٞی اٚلبر یه فطو ُّٔك ٚػٛز زاضز و ٝقٕب ث ٝاؾشفبز ٜاظ ٘ backslashیبظ ٘ساضیس .ایٗ حبِشی
(explicit line اؾز و ٝذٍ ُٔٙمی اظ دطا٘شع ،وطٚق ٝیب آوٛالز اؾشفبزٔ ٜی وٙس .ایٗ اِحبق ذٍ ٚايح
)٘joiningبٔیسٔ ٜی قٛز .قٕب ٔی سٛا٘یس ایٗ ضا ٍٙٞبٔی ؤ ٝب ثط٘بٔٞ ٝب ضا ثب اؾشفبز ٜاظ ِیؿز ٞب زض فهُ ٞبی
ثؼسی ٔی ٘ٛیؿیٓ ،زض ػُٕ ثجیٙیس .
Indentation
(Indentationز٘سا٘ٝ فًبی ؾفیس زض دبیش ٟٓٔ ٖٛاؾز .زض حمیمز ،فًبی ؾفیس ا َٚذٍ ٔ ٟٓاؾز .ایٗ
ٌصاضی) ٘بٔیسٔ ٜی قٛز .فًبی ؾفیس ٞ(spaceب ٞ tab ٚب) زض اثشسای ذٍ ُٔٙمی ثطای سؼییٗ ؾُح ذٍ
ُٔٙمی ث ٝوبض ٔی ضٚز و ٝزض ػُٕ ثطای سؼییٗ ٌط ٜٚثٙسی زؾشٛضٞب ث ٝوبض ٔی ضٚز .ایٗ یؼٙی زؾشٛض ٞبیی وٝ
indentationیىؿب٘ی زاقش ٝثبقٙسٞ .ط ٌط ٜٚایٗ چٙیٙی اظ ػجبضار یه ثب ٓٞث ٝوبض ٔی ض٘ٚس ،ثبیس
ثالن )٘(blockبْ زاضزٔ .ب زض فهُ ٞبی ثؼسی ذٛاٞیٓ زیس و ٝچٍ ٝ٘ٛثالن ٞب ٔٞ ٟٓؿشٙس .چیعی و ٝثبیس ثٝ
ذبَط زاقش ٝثبقیس ایٗ اؾز و ٝچٍ indentation ٝ٘ٛغٍّ ٔی سٛا٘س ثبػض ظیبز قسٖ ذُبٞب قٛز .ثطای ٔظبَ :
i = 5
print 'Value is', i # Error! Notice a single space at
the start of the line
print 'I repeat, the value is', i
ٚلشی و ٝایٗ ضا اػطا ٔی وٙیس ،قٕب ذُبی ظیط ضا زضیبفز ٔی وٙیس :
سٛػ ٝوٙیس و ٝیه فبنّ ٝزض اثشسای ذٍ زٚ ْٚػٛز زاضز .ذُبی اقبض ٜقس ٜسٛؾٍ Pythonثٔ ٝب ٔی ٌٛیس وٝ
سطویت ثط٘بٔ٘ ٝبٔؼشجط اؾز ،یؼٙی ثط٘بٔ ٝث ٝزضؾشی ٘ٛقش٘ ٝكس ٜاؾز .آ٘چ ٝث ٝقٕب ٘كبٖ ٔی زٞس ایٗ اؾز وٝ
قٕب ٕ٘ی سٛا٘یس ث ٝنٛضر زِرٛا ٜثالن ٞبی ػسیسی اظ زؾشٛض ضا آغبظ وٙیس(اِجش ٝث ٝػع ثالن انّی و ٝسٕبْ آٖ
ضا اؾشفبز ٜوطز ٜایس)ٛٔ .اضزی و ٝقٕب ٔی سٛا٘یس اظ ثالن ٞبی ػسیس اؾشفبز ٜوٙیس ،زض فهُ ٞبی ثؼسی ٔب٘ٙس
فهُ ٔ control flowفهال قطح زاز ٜذٛاٙٞس قس .
@PythonForever
چگًَگی دًذاًِ گذاری
اظ یه سطویت اظ ٞ tabب ٞ space ٚب ثطای ز٘ساٌ٘ ٝصاضی ث ٝزِیُ وبض٘ىطزٖ زضؾز زض سٕبْ ٞ platformبی
ٔرشّف اؾشفبز٘ ٜىٙیس ٗٔ .قسیسا سٛنیٔ ٝی و ٓٙو ٝقٕب اظ یه tabسىی یب ز ٚیب چٟبض spaceثطای ٞط ؾُح
ز٘ساٌ٘ ٝصاضی اؾشفبز ٜوٙیس .یىی اظ ایٗ ؾ ٝقی ٜٛز٘ساٌ٘ ٝصاضی ضا ا٘شربة وٙیس ٟٓٔ .سط آٖ و ٝیىی ضا ا٘شربة
وٙیس ٚث ٝنٛضر دبیساض اظ آٖ اؾشفبز ٜوٙیس ،یؼٙی سٟٙب اظ آٖ قی ٜٛز٘ساٌ٘ ٝصاضی اؾشفبز ٜوٙیس .
خالصِ
اؤ ٖٛٙب اظ ػعئیبر ظیبزی ٌصقش ٝایٓٔ ،ب ٔی سٛا٘یٓ ث ٝچیعٞبی ػبِت سطی ٓٞچ ٖٛػجبضار ٌطزـ وٙشطَ
سغییط زٞیُٕٓٔ .ئٗ ثبقیس و ٝثب چیعٞبیی و ٝزض ایٗ فهُ ذٛا٘س ٜایس ضاحز ثبقیس .
ػولگزّب ٍ ػجبرات
فْزست هٌذرجبت
3ػٍّٕطٞب
8ذطٚػی
9.1 oذالنٝ
ػولگزّب ٍ ػجبرات
@PythonForever
هقذهِ
ثیكشط زؾشٛضٞبیی(ذٍ ٞبی ُٔٙمی) ؤ ٝی ٘ٛیؿیس ،قبُٔ ػجبضار ٞؿشٙس .یه ٔظبَ ؾبز ٜثطای ػجبضار 3 + 2
اؾز .یه ػجبضر ٔی سٛا٘س زض ٖٚػٍّٕطٞب ٚػّٕ٘ٛسٞب قىؿش ٝق٘ٛس .ػٍّٕطٞب ػبُٔ ٞبیی ٞؿشٙس و ٝچیعی ضا
ا٘ؼبْ ٔی زٙٞس ٔ ٚی سٛا٘ٙس سٛؾٍ ٕ٘بزٞبیی ٔب٘ٙس +یب ٚاغٞ ٜبی وّیسی ٔرهٛل ٘كبٖ زاز ٜق٘ٛس .ػٍّٕطٞب
ثطای وبضوطزٖ ثٔ ٝمساضی زاز ٚ ٜزازٞ ٜبیی و operands(ٝػّٕ٘ٛس) ٘بٔیسٔ ٜی ق٘ٛس٘ ،یبظٔٙس٘س .زض ایٗ ٔٛضز2 ،
3 ٚػّٕ٘ٛس ٞؿشٙس .
ػولگزّب
ًکتِ
قٕب ٔی سٛا٘یس ػجبضاسی و ٝزض ٔظبَ ٞب ٞؿشٙس ضا ثب اؾشفبز ٜاظ ٔفؿط ث ٝنٛضر سؼبّٔی ثطضؾی وٙیسٔ .ظال ،ثطای
سؿز ػجبضر ،3 + 2اظ اػالٖ ٔفؿط سؼبّٔی Pythonاؾشفبز ٜوٙیس .
>>> 2 + 3
5
>>> 3 * 5
15
>>>
اٍلَیت ػولگزّب
اٌط قٕب یه ػجبضر ٔب٘ٙس 4 * 3 + 2زاقشیس ،ػُٕ ػٕغ ا َٚا٘ؼبْ قس ٜاؾز یب ػُٕ يطة؟ ضیبيیبر
زثیطؾشبٖ ٔب ثٔ ٝب ٔی ٌٛیس و ٝػُٕ يطة اثشسا ثبیس ا٘ؼبْ قٛز -ایٗ یؼٙی ػٍّٕط يطة اِٛٚیز ثیكشطی ٘ؿجز
ث ٝػٍّٕط ػٕغ زاضز .ػس َٚظیط(ثب ػسٛٔ َٚػٛز زض ضإٙٞبی ٔطػغ Pythonیىؿبٖ اؾز )ػٍّٕطٞبیی و ٝسب
و ٖٛٙث ٝآٖ ثط٘رٛضز ٜایٓ ،زض فهُ ٞبی آسی قطح زاز ٜذٛاٙٞس قس .ػٍّٕطٞبی ثب حك سمسْ یىؿبٖ ،زض ػسَٚ
ثبال زض یه ضزیف ِیؿز قس ٜا٘سٔ .ظال - ٚ +حك سمسْ یىؿبٖ زاض٘س .
@PythonForever
تزتیت ارسیبثی
ث ٝنٛضر دیف فطو ،ػس َٚحك سمسْ ػٍّٕط سهٕیٓ ٔی ٌیطز و ٝوساْ ػٍّٕطٞب لجُ اظ زیٍط ػٍّٕطٞب اضظیبثی
ٔی ق٘ٛس .أب اٌط ثرٛاٞیس سطسیت ٔحبؾج ٝضا سغییط زٞیسٔ ،ی سٛا٘یس اظ دطا٘شعٞب اؾشفبز ٜوٙیس .ثطای ٔظبَ ،اٌط ٔی
ذٛاٞیس ايبف ٝوطزٖ لجُ اظ يطة زض یه ػجبضر ا٘ؼبْ قٛزٔ ،ی سٛا٘یس چیعی ٔظُ ( 4 * )3 + 2اؾشفبز ٜوٙیس .
شزکت پذیزی
ػٍّٕطٞب ٔؼٕٛال اظ چخ ث ٝضاؾز ثٔ ٓٞ ٝی دی٘ٛس٘س ،یؼٙی ػٍّٕطٞبیی ثب حك سمسْ یىؿبٖ اظ چخ ث ٝضاؾز ا٘ؼبْ
ٔی ق٘ٛسٔ .ظال ٔ 4 + 3 + 2ظُ ( ٔ 4 + )3 + 2حبؾجٔ ٝی قٛز .ثؼًی اظ ػٍّٕطٞب ٔظُ ػٍّٕطٞبی ٚاٌصاضی
قطوز دصیطی ضاؾز ث ٝچخ زاض٘س .یؼٙی ٔ a = b = cظُ ) a = (b = cضفشبض ٔی وٙس .
ػجبرت ّب
#!/usr/bin/python
# Filename: expression.py
length = 5
breadth = 2
area = length * breadth
print 'Area is', area
)print 'Perimeter is', 2 * (length + breadth
خزٍجی
@PythonForever
ایي چگًَِ کبر هی کٌذ؟
زضاظا ٚدٟٙبی ٔؿشُیُ زض ٔشغییعٞبیی ثب ٕٞیٗ ٘بْ شذیطٔ ٜی قٛزٔ .ب ایٗ ٞب ضا ثطای ٔحبؾجٔ ٝؿبحز ٔ ٚحیٍ
ٔؿشُیُ ثب وٕه ػجبضار ث ٝوبض ٔی ثطیٓٔ .ب ٘شیؼ ٝػجبضر length * breadthضا زض ٔشغییط areaشذیطٔ ٜی
وٙیٓ ٚؾذؽ ثب اؾشفبز ٜاظ زؾشٛض printآٖ ضا چبح ٔی وٙیٓ .زض ٔٛضز زٔٚیٔ ،ب ٔؿشمیٕب اضظـ ػجبضر * 2
)(length + breadthضا زض زؾشٛض printث ٝوبض ٔی ثطیٓ ٕٞ.چٙیٗ سٛػ ٝوٙیس چٍ Python ٝ٘ٛذطٚػی ضا
ظیجب چبح ٔی وٙس .حشی ثب ٚػٛز ایٗ و ٝفًبیی ثیٗ 'ٔ ٚ 'Area isشغییط ٔ areaكرم ٘ىطز ٜایٓ . Python
آٖ ضا ثطای ٔب لطاض ٔی زٞس ،چٙبٖ ؤ ٝب یه ذطٚػی سٕیع ظیجب ٔی ٌیطیٓ ٚثط٘بٔ ٝایٗ چٙیٗ ذیّی ثیكشط لبثُ
ذٛا٘سٖ ٔی قٛز(اظ آ٘ؼبیی ؤ ٝب ٍ٘طاٖ فبنّ ٝزض ذطٚػی ٘یؿشیٓ) .ایٗ ٔظبَ اؾز اظ ایٗ و ٝچٍPython ٝ٘ٛ
ظ٘سٌی ضا ثطای ثط٘بٔٛ٘ ٝیؽ آؾبٖ سط ٔی وٙس .
خالصِ
ٔب چٍٍ٘ٛی اؾشفبز ٜاظ ػٍّٕطٞب ،ػّٕ٘ٛسٞب ٚػجبضار ضا زیس ٜایٓ -ایٗ ٞب ثّٛن ٞبی اؾبؾی ؾبذشٕبٖ ٞط ثط٘بٔٝ
ای ٞؿشٙس .ؾذؽ ٔب ذٛاٞیٓ زیس و ٝچٍ ٝ٘ٛاظ ایٗ ٞب زض ثط٘بٔٔ ٝبٖ ثب اؾشفبز ٜاظ زؾشٛضار اؾشفبز ٜوٙیٓ .
رًٍذ کٌتزل
فْزست هٌذرجبت
3زؾشٛضif
6ذطٚػی
8.1 oزؾشٛضwhile
8.2 oاؾشفبز ٜاظ زؾشٛضwhile
ٔ 9ظبَ .6.2اؾشفبز ٜاظ زؾشٛضwhile
10ذطٚػی
@PythonForever
11ایٗ چٍ ٝ٘ٛوبض ٔی وٙس؟
12.1 oحّمforٝ
12.2 oاؾشفبز ٜاظ زؾشٛضfor
ٔ 13ظبَ .6.2اؾشفبز ٜاظ زؾشٛضfor
14ذطٚػی
19ذطٚػی
21زؾشٛضcontinue
23ذطٚػی
24.1 oذالنٝ
هقذهِ
زض ثط٘بٔٞ ٝبیی و ٝسبو ٖٛٙزیس ٜایٓ ،یه ؾطی اظ زؾشٛضار ٚػٛز زاقش ٝاؾز Python ٚث ٝزضؾشی آٖ ٞب ضا زض
ػبی ذٛزـ اػطا وطز ٜاؾز .اٌط قٕب ذٛاؾشیس و ٝض٘ٚس چٍٍ٘ٛی ا٘ؼبْ آٖ ضا سغییط زٞیس چٝ؟ ثطای ٔظبَ ،قٕب
ٔ.ب٘ٙس چبح ٔی ذٛاٞیس و ٝثط٘بٔٔ ٝمساضی سهٕیٓ ثٍیطز ٚچیعٞبی ٔشفبٚسی ضا ثؿش ٝثٛٔ ٝلؼیز ا٘ؼبْ زٞس
وطزٖ ' 'Good Morningیب ' 'Good Eveningثؿشٚ ٝلز ضٚظ؟
ٕٞبٖ َٛضی و ٝاحشٕبال حسؼ ظز ٜایس ،ایٗ ثب اؾشفبز ٜاظ زؾشٛضار ض٘ٚس وٙشطَ لبثُ ا٘ؼبْ اؾز .ؾ ٝزؾشٛض ض٘ٚس
وٙشطَ زض ٚ Pythonػٛز زاض٘سwhile. ٚfor ، - if
@PythonForever
ifدستَر
ضار ضاٛ ٔب یه ٔمساض اظ زؾش،يؼیز زضؾز ثبقسٚ اٌطٚ زٚ وبض ٔی ضٝيؼیز ثٚ ٖ ثطای ثطضؾی وطزif ضٛزؾش
(else- ٓیٙضار زیٍطی ضا دطزاظـ ٔی وٛ ٔب ٔمساض زؾشٝىٙ زیٍط ای،)زٛ ٔی قٜ(٘بٔیسif-block ٓیٙاػطا ٔی و
. اذشیبضی اؾزelse ػجبضر.)زٛ ٔی قٜ٘بٔیسblock
ifاستفبدُ اس دستَر
#!/usr/bin/python
# Filename: if.py
number = 23
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.' # New
block starts here
print "(but you do not win any prizes!)" # New
block ends here
elif guess < number:
print 'No, it is a little higher than that' #
Another block
# You can do whatever you want in a block ...
else:
print 'No, it is a little lower than that'
# you must have guess > number to reach here
print 'Done'
# This last statement is always executed, after the if
statement is executed
خزٍجی
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
@PythonForever
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
)!(but you do not win any prizes
Done
زض ایٗ ثط٘بٔٔ ،ٝب حسؼ ٞبیی ضا اظ وبضثط ٔی ٌیطیٓ ٚآٖ ضا ثطضؾی ٔی وٙیٓ اٌط ػسزی ثبقس ؤ ٝب زاضیٓٔ .ب
ٔشغییط numberضا ثٞ ٝط ػسز نحیحی و ٝثرٛاٞیٓ ٘ؿجز ٔی زٞیٓٔ ،ب٘ٙس .23ؾذؽ ،حسؼ وبضثط ضا ثب
اؾشفبز ٜاظ سبثغ )(ٔraw_inputی ٌیطیٓ .سبثغ ٞب سٟٙب لؿٕز ٞبی لبثُ اؾشفبز ٜزٚثبض ٜثط٘بٔٞ ٝب ٞؿشٙسٔ .ب
زضثبض ٜآٖ ٞب زض فهُ ثؼس ثیكشط ذٛاٞیٓ ذٛا٘س .
ٔب یه ضقش ٝضا ثطای سبثغ raw_inputزض ٘ظط ٔی ٌیطیٓ و ٝآٖ ضا ضٚی نفح٘ ٝكبٖ ٔی زٞس ٚثطای زضیبفز
ٚضٚزی اظ َطف وبضثط نجط ٔی وٙس .ثبض اِٚی و ٝچیعی ضا ٚاضز ٔی وٙیٓ enter ٚضا فكبض ٔی زٞیٓ ،سبثغٚ ،ضٚزی
ضا دؽ ٔی فطؾشس و ٝزض ٔٛضز raw_inputیه ضقش ٝاؾز .ؾذؽ ٔب ثب اؾشفبز ٜاظ intضقش ٝضا ث ٝػسز نحیح
سجسیُ ٔی وٙیٓ .ؾذؽ ،آٖ ضا ٔشغییط guessشذیطٔ ٜی وٙیٓ .زض حمیمز intیه والؼ اؾز ،أب سٕبْ
چیعٞبیی و ٝزض حبَ حبيط الظْ اؾز ثسا٘یس ایٗ اؾز و ٝقٕب ٔی سٛا٘یس آٖ ضا ثطای سجسیُ ضقش ٝث ٝػسز نحیح
ث ٝوبض ثجطیس(...قبُٔ یه ػسز نحیح ٔؼشجط زض ٔشٗ اؾز ).
.اٌط ثب ٓٞثطاثط ثٛز٘سٔ ،ب یه دیبْ ثؼس ٔب حسؼ وبضثط ضا ثب ػسزی و ٝا٘شربة وطز ٜایٓٔ ،مبیؿٔ ٝی وٙیٓ
ٔٛفمیز ضا ٘كبٖ ٔی زٞیٓ .سٛػ ٝوٙیس و ٝثطای ایٙى ٝث Python ٝثٍٛییٓ وساْ زؾشٛض ث ٝوساْ ثالن سؼّك زاضز،
اظ ؾُٛح ز٘ساٌ٘ ٝصاضی اؾشفبزٔ ٜی وٙیٓ .ایٗ زِیُ ثب إٞیز ثٛزٖ ز٘ساٌ٘ ٝصاضی زض Pythonاؾز .أیسٚاضْ
قٕب لبػس' ٜیه tabث ٝاظای ٞط ؾُح ز٘ساٌ٘ ٝصاضی ' ضا سحُٕ وٙیس .آیب ایٗ چٙیٗ ٞؿشیس؟ سٛػ ٝوٙیس وٝ
زؾشٛض ifقبُٔ یه ز٘ ٚمُ ٝزض ا٘شٟبیف اؾز ٔ -ب ث٘ Python ٝكبٖ ٔی زٞیٓ و ٝیه ثالن اظ ػجبضار زض ظیط
ٞؿشٙس .
آٖ ٌبٔ ،ٜب ثطضؾی ٔی وٙیٓ و ٝاٌط حسؼ اظ ػسز وٕشط ثبقس ٚ ،اٌط ایٗ چٙیٗ ثبقسٔ ،ب ث ٝوبضثط اَالع ٔی زٞیٓ
و ٝوٕی ثیف سط اظ آٖ ضا حسؼ ثع٘س .چیعی و ٝایٙؼب اظ آٖ اؾشفبز ٜوطز ٜایٓ ،زؾشٛض elifاؾز و ٝزض حمیمز
ز ٚزؾشٛض ٚاثؿش if else-if else ٝضا زض ٖٚیه زؾشٛض سطویت قس if-elif-else ٜسطویت ٔی وٙس .ایٗ ثط٘بٔٝ
ضا آؾبٖ سط ٔی وٙس ٔ ٚؿشّعْ ؾبز ٜوطزٖ ٔمساض ز٘ساٌ٘ ٝصاضی اؾز .
@PythonForever
زؾشٛض ٞبی ٕٞ else ٚ elifچٙیٗ ثبیس یه ز٘ ٚمُ ٝزض ا٘شٟبی ذٍ ُٔٙمی و ٝث ٝز٘جبَ ثالن ٔشٙبظط زؾشٛض ٞب
آٔس ٜاؾز ،زاقش ٝثبقٙس(اِجش ٝثب ز٘ساٌ٘ ٝصاضی ٔٙبؾت ).
قٕب ٔی سٛا٘یس یه زؾشٛض ifزیٍط زض if-block ٖٚیه زؾشٛض ifزیٍط زاقش ٝثبقیس -ایٗ یه زؾشٛض ifس ٛزض
س٘ ٛبٔیسٔ ٜی قٛز .
ث ٝیبز زاقش ٝثبقیس و ٝلؿٕز ٞبی elif ٚ elseاذشیبضی ٞؿشٙس .یه زؾشٛض ifوٛچه ٔؼشجط ایٗ چٙیٗ اؾز :
if True:
'print 'Yes, it is true
ثؼس اظ ایٙى Python ٝاػطا وطزٖ زؾشٛض وبُٔ ifضا ٕٞطا ٜثب ػجبضار else ٚ elifسٕبْ وطز ،آٖ ضا ث ٝزؾشٛض
ثؼسی زض ثالن ٕٞطا ٜزؾشٛض ٙٔ ifشمُ ٔی وٙس .زض ایٗ ٔٛضز ،ثالن انّی اؾز و ٝاػطای ثط٘بٔ ٝقطٚع ٔی قٛز
ٚزؾشٛض ثؼسی 'print 'Doneاؾز .ثؼس اظ آٖPython ،ا٘شٟبی ثط٘بٔ ٝضا ٔی ثیٙس ٚث ٝؾبزٌی آٖ ضا سٕبْ ٔی
وٙس .اٌط چ ٝایٗ یه ثط٘بٔ ٝذیّی ؾبز ٜاؾز ٗٔ ،ث ٝثؿیبضی اظ چیعٞبیی وٕٛٞ ٝاض ٜزض ایٗ ثط٘بٔ ٝؾبز ٜثبیس ثٝ
آٖ سٛػ ٝوٙیس ،اقبض ٜوطز ٜاْ ٕٝٞ .ایٗ ٞب ذیّی آؾبٖ ا٘س( ٚثَٛ ٝض قٍفز آٚض آؾبٖ ثطای آٖ ٞبیی اظ قٕب وٝ
ؾبثم C/C++ ٝزاضیس) ٔ ٚؿشّعْ ایٗ اؾز و ٝقٕب زض اثشسا ثب ٕٝٞایٗ ٞب آقٙب قٛیس .أب ثؼس اظ آٖ ،قٕب ثب آٖ
ضاحز ذٛاٞیس ثٛز ٚثطای قٕب َجیؼی ذٛاٞس ثٛز .
ٞیچ زؾشٛض switchای زض ٚ Pythonػٛز ٘ساضز .قٕب ٔی سٛا٘یس اظ زؾشٛض if..elif..elseثطای ا٘ؼبْ ٕٞبٖ
چیع اؾشفبز ٜوٙیس( ٚزض ثؼًی ٔٛاضز ،اظ یه ٚاغ٘ ٜبٔ ٝثطای ا٘ؼبْ ؾطیغ آٖ اؾشفبز ٜوٙیس ).
دستَرwhile
زؾشٛض whileث ٝقٕب ایٗ اػبظ ٜضا ٔی زٞس و ٝیه ثالن اظ زؾشٛض ضا ٔىطضا سب ظٔب٘ی و ٝقطٌ نحیح ثبقس ،اػطا
وٙیس .یه زؾشٛض whileیه ٔظبَ اظ چیعی اؾز و ٝزؾشٛض ٘ loopingبٔیسٔ ٜی قٛز .یه زؾشٛض while
ٔی سٛا٘س یه ػجبضر elseاذشیبضی ضا زاقش ٝثبقس .
استفبدُ اس دستَرwhile
@PythonForever
#!/usr/bin/python
# Filename: while.py
number = 23
running = True
while running:
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed
it.'
running = False # this causes the while
loop to stop
elif guess < number:
print 'No, it is a little higher than
that.'
else:
print 'No, it is a little lower than
that.'
else:
print 'The while loop is over.'
# Do anything else you want to do here
print 'Done'
خزٍجی
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done
@PythonForever
ایي چگًَِ کبر هی کٌذ؟
زض ایٗ ثط٘بٔٔ ،ٝب ٛٙٞظ ثبظی حسؼ ظزٖ ضا ا٘ؼبْ ٔی زٞیٓ ،أب ثب ایٗ سفبٚر و ٝوبضثط ٔی سٛا٘س حسؼ ظزٖ ضا سب
ظٔب٘ی و ٝحسؾف زضؾز ثبقس ،ازأ ٝزٞس ٞ-یچ ٘یبظی ٘یؿز ؤ ٝىطضا ثط٘بٔ ٝضا ثطای ٞط حسؼ اػطا وٙیس
ٕٞبٖ َٛضی و ٝلجال آٖ ضا ا٘ؼبْ زاز ٜایٓ .ایٗ ثَٛ ٝض ٔٙبؾت وبضثطز زؾشٛض whileضا ٘كبٖ ٔی زٞس .
ٔب ٔىبٖ زؾشٛضٞبی if ٚ raw_inputضا ث ٝزض ٖٚحّم while ٝسغییط ٔی زٞیٓ ٚلجُ اظ حّم، while ٝثٝ
ٔشغییط runningػجبضر Trueضا ٘ؿجز ٔی زٞیٓ .اثشسا ٔب ثطضؾی ٔی وٙیٓ و ٝاٌط ٔشغییط runningثطاثط
Trueثبقس ،ثطای اػطای ٔwhile-blockشٙبظط الساْ قٛز .ثؼس اظ ایٙى ٝایٗ ثالن اػطا قس ،قطٌ زٚثبضٜ
ثطضؾی ٔی قٛز و ٝزض ایٙؼب ٔشغییط runningاؾز .اٌط ایٗ زضؾز ثبقسٔ ،ب while-blockضا زٚثبض ٜاػطا ٔی
وٙیٓ .زیٍط ایٙىٔ ٝب ث ٝاػطای else-blockاذشیبضی ازأٔ ٝی زٞیٓ ٚؾذؽ ث ٝزؾشٛض ثؼسی ضا ازأٔ ٝی
زٞیٓ .
ثالن elseظٔب٘ی و ٝقطٌ حّم while ٝث False ٝسجسیُ قٛز ،اػطا ٔی قٛز -ایٗ حشی ٕٔىٗ اؾز اِٚیٗ
زفؼ ٝای ثبقس و ٝقطٌ ثطضؾی قٛز .اٌط یه ػجبضر elseثطای حّمٚ while ٝػٛز زاقش ٝثبقسٕٞ ،یك ٝاػطا
ٔی قٛزٍٔ ،ط ایٙى ٝقٕب یه حّم while ٝزاقش ٝثبقیس و ٝثطای ٕٞیك ٝثسٞ ٖٚیچ ٌطیعی حّم ٝثع٘س !
ٛ٘ False ٚTrueع ٞبی ثِٛی ٘بٔیسٔ ٜی ق٘ٛس ٚقٕب ٔی سٛا٘یس آٖ ٞب ضا ث ٝسطسیت ث ٝػٛٙاٖ 0 ٚ 1ثكٙبؾیس.
اؾشفبز ٜایٗ ػبیی وٛٔ ٝلؼیز یب ثطضؾی وطزٖ ٔ ٟٓاؾز ٚاضظـ ٚالؼی ٔظُ ٘ 1ساضز ٟٓٔ ،اؾز .
else-blockزض حمیمز اظ آٖ ػبییى ٝو ٝقٕب ٔی سٛا٘یس ایٗ زؾشٛضار ضا زض ٕٞبٖ ثالن لطاض زٞیس ثؼس اظ
زؾشٛض whileثطای زضیبفز ٘شیؼ ٝیىؿبٖ ،ايبفی اؾز(ٔب٘ٙس زؾشٛض while).
ث ٝیبز زاقش ٝثبقیس و ٝقٕب ٔی سٛا٘یس ػجبضر elseضا ثطای حّم while ٝزاقش ٝثبقیس .
حلقِfor
زؾشٛض for..inیه زؾشٛض ایؼبز حّم ٝزیٍط اؾز و ٝؾطاؾط سٛاِی یه قیء ضا سىطاض ٔی وٙس .یؼٙی ؾطاؾط ٞط
ثرف زض یه سٛاِی ضا ٔی ٌطززٔ .ب زض ٔٛضز سٛاِی ٞب زض فهُ ٞبی ثؼسی ثیكشط ذٛاٞیٓ زیس .چیعی و ٝحبال
الظْ اؾز ثسا٘یس ایٗ اؾز و ٝیه سٛاِی سٟٙب یه ٔؼٕٛػٙٔ ٝظٓ اظ اػعاؾز .
@PythonForever
استفبدُ اس دستَرfor
#!/usr/bin/python
# Filename: for.py
for i in range(1, 5):
print i
else:
'print 'The for loop is over
خزٍجی
زض ایٗ ثط٘بٔٔ ٝب یه سٛاِی اظ اػساز ضا چبح ٔی وٙیٓٔ .ب ایٗ سٛاِی اػساز ضا ثب اؾشفبز ٜاظ سبثغ سٛوبض rangeسِٛیس
ٔی وٙیٓ .
چیعی ؤ ٝب ایٙؼب ا٘ؼبْ ٔی زٞیٓ زض ٘ظط ٌطفشٗ ز ٚػسز اؾز range ٚیه سٛاِی اػساز اظ ػسز ا َٚسب ػسز زْٚ
ضا ٌعاضـ ٔی وٙسٔ .ظالrange(1,5) ،سٛاِی = <4 ,3 ,2 ,1ضا ٘كبٖ ٔی زٞس .ث ٝنٛضر دیف فطوrange ،یه
قٕبضـ ٔطحّ ٝاظ 1ضا ٔی ٌیطز .اٌط ٔب یه ػسز ؾٔٛی ضا ثطای rangeزض ٘ظط ثٍیطیٓ ،ث ٝقٕبضـ ٔطحّ ٝای
سجسیُ ٔی قٛزٔ .ظال ) range(1,5,2سٛاِی = <1,3ضا ٘كبٖ ٔی زٞس .ث ٝیبز زاقش ٝثبقیس ؤ ٝحسٚز ٜسب ػسز زْٚ
ٌؿشطـ ٔی یبثس .یؼٙی ػسز ز ْٚضا زض ثط ٘ساضز .
@PythonForever
حّم for ٝؾذؽ سٕبْ ایٗ ٔحسٚز ٜضا سىطاض ٔی وٙس )ٔ - for i in range(1,5ؿبٚی ]for i in [1, 2, 3, 4
اؾز ؤ ٝب٘ٙس سؼییٗ ٞط ػسز(یب قیء )یىی یىی زض سٛاِی ث i ٝاؾز ٚؾذؽ اػطای ٞط ثالن اظ زؾشٛض ثطای
ٕٝٞاضظـ ٞبی iاؾز .زض ایٗ ٔٛضزٔ ،ب سٟٙب اضظـِ زض ثالنِ زؾشٛض ضا چبح ٔی وٙیٓ .
ث ٝیبز زاقش ٝثبقیس و ٝثرف elseاذشیبضی اؾزٚ .لشی وٚ ٝػٛز زاقش ٝثبقسٕٞ ،یك ٝیه ثبض ثؼس اظ اسٕبْ حّمٝ
forاػطا ٔی قٛزٍٔ ،ط ایٙى ٝیه زؾشٛض قىؿش ٝث ٝآٖ ثط ثرٛضز .
ث ٝیبز زاقش ٝثبقیس و ٝحّم for..in ٝثطای ٞط سٛاِی ای وبض ٔی وٙس .زض ایٙؼبٔ ،ب یه ِیؿز اظ اػساز و ٝسٛؾٍ
سبثغ سٛوبض rangeسِٛیس قس ٜاؾز ضا زاضیٓ ،أب ثَٛ ٝض وّی ٔب ٔی سٛا٘یٓ اظ ٞط ٘ٛع اظ سٛاِی ٞبی ٞط قیء ای
اؾشفبز ٜوٙیٓ! ٔب ٔؼٙی ایٗ ضا زض فهُ ٞبی ثؼسی ثب ػعئیبر ثطضؾی ٔی وٙیٓ .
حّم loop ٝدبیش ٖٛاؾبؾب ثب حّم for ٝظثبٖ ٞبی ٔ C/C++شفبٚر اؾز .ثط٘بٔٛ٘ ٝیؿبٖ C#سٛػ ٝذٛاٙٞس وطز
و ٝحّم for ٝزض Pythonقجی ٝحّم foreach ٝزض C#اؾز .ثط٘بٔٛ٘ ٝیؿبٖ Javaسٛػ ٝذٛاٙٞس وطز وٝ
ٕٞبٖ چیع قجی for (int i : IntArray) ٝزض Java 1.5اؾز .
زض C/C++اٌط ٔی ذٛاٞیس ثٛٙیؿیس ) ، for (int i = 0; i < 5; i++آٍ٘ب ٜزض Pythonسٟٙب for i in
)range(0,5ضا ٔی ٘ٛیؿیسٕٞ .بٖ َٛضی ؤ ٝی سٛا٘یس ثجیٙیس ،حّم loop ٝؾبز ٜسطٌٛ ،یب سط ٔ ٚؿشؼس ذُبی
وٕشطی زض Pythonاؾز .
دستَر شکستِ
زؾشٛض breakثطای قىؿشٗ ،ثیط ٖٚاظ یه زؾشٛض حّم ٝای ث ٝوبض ٔی ضٚز .یؼٙی اػطای یه زؾشٛض حّم ٝظٖ ضا
ٔشٛلف ٔی وٙس ،حشی اٌط قطٌ حّم٘ False ٝجبقس یب سٛاِی اػعا ثَٛ ٝض وبُٔ سىطاض قس ٜثبقس .یه سصوط ٟٔٓ
ایٗ اؾز و ٝاٌط قٕب ثیط ٖٚیه زؾشٛض forیب whileثكىٙیسٞ ،ط حّم ٝثالن elseاػطا ٕ٘ی قٛز .
استفبدُ اس دستَرbreak
#!/usr/bin/python
# Filename: break.py
while True:
@PythonForever
s = raw_input('Enter something : ')
if s == 'quit':
break
print 'Length of the string is', len(s)
print 'Done'
خزٍجی
$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something : use Python!
Length of the string is 12
Enter something : quit
Done
ٌ ٔب یه قط.ٓیٙط ثبض چبح ٔی وٞ زی ضاٚضٚ طٞ ََٛ ٚ ٓزی ضا اظ وبضثط ٔی ٌیطیٚضٚ ٔب ٔىطضاٝٔزض ایٗ ثط٘ب
ٔب.' ثبقسquit' زیٚضٚ اٌط،ٓ ایٝ ثطضؾی وطزٖ زض ٘ظط ٌطفشّٝؾیٚ ٝ ثب ثٝٔلف وطزٖ ثط٘بٛل ضا ثطای ٔشٛٔره
زی ٔیٚضٚ َٝ ضقشَٛ. ٓ ٔی ضؾیٝٔبی ثط٘بٟ ا٘شٝ ثٚ ٓیٙلف ٔی وٛ ٔشٖٝ حّمٚ قىؿشٗ ثیطّٝؾیٚ ٝ ضا ثٝٔثط٘ب
ٝ ثfor ٝ حّمٜٕطاٞ ا٘سٛ ٔی سbreak ضٛ زؾشٝ ثبقیس وٝ یبز زاقشٝث. زٛ ثطضؾی قlen وبضٛ سبثغ سّٝؾیٚ ٝا٘س ثٛس
. لطاض ٌیطزٜضز اؾشفبزٛٔ ثیٛذ
: ٘بْ زاضزG2's Poetic Python ٚ ْ اٝقشٛ٘ ٝ اؾز وٜسبٛ یه قؼط و،ْ اٜ وطزٜؼب اؾشفبزٙ ٔٗ ایٝزی وٚضٚ
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
ٕٝسطػ
@PythonForever
اظ: یسٙیس وبضسبٖ ضا ٔفطح وٞاٛ ثبقس اٌط ٔی ذٜ وبض ا٘ؼبْ قسٍٝبٔی وٙٞ اؾزٜسٙٙیؿی ؾطٌطْ وٛ٘ ٝٔثط٘ب
! یسٙ وٜاؾشفبزPython
continueدستَر
اظ ؾطٌیطیٝٔ ازاٚ ٘یٛٙ ثالن وٝض زض حّمٛ زؾشٝ ثطای ضز وطزٖ ثمیPython ٝ ثطای ٌفشٗ ثcontinue ضٛزؾش
. زٚ وبض ٔی ضٝ ثٝثؼسی حّم
continueاستفبدُ اس دستَر
#!/usr/bin/python
# Filename: continue.py
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
continue
print 'Input is of sufficient length'
# Do other kinds of processing here...
خزٍجی
$ python continue.py
Enter something : a
Enter something : 12
Enter something : abc
Input is of sufficient length
Enter something : quit
حطفٝ حسالُ ؾٝیٓ وٙب ظٔب٘ی دطزاظـ ٔی وٟٙب ضا سٞ ٖ أب آ،ٓػی ضا اظ وبض ٔی دصیطیٚ ٔب ذط،ٝٔزض ایٗ ثط٘ب
ٝب وٕشط اظ ؾٞ اٌط حطفٚ ٓیٙ ٔی وَٜ اؾشفبزَٛ ٌیطیٜثطای ا٘ساظlen وبضٛ ٔب اظ سبثغ س،ٗبثطایٙ ث.سٙ ثبقٝزاقش
@PythonForever
continueضز ٔی وٙیٓ .زض غیط ایٗ نٛضر ،ثمیٝ ثبقٙسٔ ،ب ثمی ٝزؾشٛض زض ثالن ضا ثب اؾشفبز ٜاظ زؾشٛض
زؾشٛضار زض حّم ٝاػطا ٔی ق٘ٛس ٔ ٚب ٔی سٛا٘یٓ ٞط ٘ٛع دطزاظقی ضا ؤ ٝی ذٛاٞیٓ ایٙؼب ا٘ؼبْ ثسٞیٓ ،ا٘ؼبْ
زٞیٓ .سصوط ایٗ و ٝزؾشٛض continueثب حّم for ٝث ٝذٛثی وبض ٔی وٙس .
خالصِ
ٔب چٍٍ٘ٛی اؾشفبز ٜاظ ؾ ٝزؾشٛض ض٘ٚس وٙشطَ ضا زیسیٓ ٕٞ for ٚwhile ، - ifطاٚ ٜاثؿشٞ ٝبیكبٖ ،زؾشٛضار
continue. ٚbreakایٗ ٞب سؼسازی اظ لؿٕز ٞبیی ٞؿشٙس و ٝثیكشطیٗ اؾشفبز ٜضا زض Pythonزاض٘س ٚاظ
ایٗ ض ،ٚضاحز قسٖ ثب آ٘بٖ يطٚضی اؾز .ؾذؽ ٔب چٍٍ٘ٛی ؾبذشٗ ٚاؾشفبز ٜوطزٖ اظ سٛاثغ ضا ٔی ثیٙیٓ .
فْزست هٌذرجبت
8زؾشٛضreturn
10ذالنٝ
هؼزفی
سٛاثغ ثرف ٞبی لبثُ اؾشفبز ٜی ٔؼسز ثط٘بٔٞ ٝب ٞؿشٙس .آٟ٘ب ث ٝقٕب اػبظٔ ٜی زٙٞس و٘ ٝبٔی ضا ثط ضٚی یه
ثالن اظ زؾشٛضار ثٍصاضیس ٚؾذؽ آٖ ثّٛن ضا ثب اؾشفبز ٜاظ آٖ ٘بْ زض ٞط وؼبیی اظ ثط٘بٔ ٚ ٝثٞ ٝط سؼساز اػطا
@PythonForever
range ٚ len وٙیس .ایٗ ُّٔت فطاذٛا٘ی سبثغ ٘بٔیسٔ ٜی قٛز ٔ .ب سب و ٖٛٙاظ ثؿیبضی اظ سٛاثغ سٛوبض ٔظُ
اؾشفبز ٜوطز ٜایٓ .
سٛاثغ ثب اؾشفبز ٜاظ وّٕ ٝی وّیسی defسؼطیف ٔی ق٘ٛس .زض ازأ ٝی ٘ ،defبْ (قٙبؾ )ٝسبثغ ٔی آیس و ٝثب یه
ػفز دطا٘شع ٕٞطا ٜاؾز ،و ٝزض زاذُ ػفز دطا٘شع ٕٔىٗ اؾز ٘ ،بْ ٞبی ٔشغیطٞبیی آٚضز ٜقٛز ،زض ا٘شٟب ایٗ
ذٍ ثب وبضاوشط وّ ، ( : ) ٖٛسٕبْ ٔی قٛز .ؾذؽ زض ذُ ٌٛثؼسی ثالوی اظ زؾشٛضار و ٝثركی اظ ایٗ سبثغ
ٞؿشٙس ٔ ،ی آیٙس .یه ٔظبَ ث ٝقٕب ٘كبٖ ذٛاٞس زاز و ٝایٗ وبض ثؿیبض ؾبز ٜاؾز :
تؼزیف تبثغ
#!/usr/bin/python
# Filename: function1.py
def sayHello():
print 'Hello World!' # block belonging to the
function
# End of function
خزٍجی
ٔب سبثؼی ضا ث٘ ٝبْ sayHelloثب اؾشفبز ٜاظ ٘حٛی و ٝزض ثبال سٛيیح زاز ٜقس ،سؼطیف ٕ٘ٛزیٓ .ایٗ سبثغ دبضأشطی
ٕ٘ی دصیطز ،اظ ایٙط ٚاػالٖ ٔشغیطی زض ػفز دطا٘شع سؼطیف سبثغ نٛضر ٍ٘طفش ٝاؾز .دبضأشطٞبی سٛاثغ ٚ ،ضٚزی
@PythonForever
ٞبی سٛاثغ ٞؿشٙس ،ثُٛضیىٔ ٝب ٔی سٛا٘یٓ ٔمبزیط ٔشفبٚسی ضا ث ٝآٟ٘ب دبؼ زٞیٓ ٘ ٚشبیؼی ٔ ٌٛٙث ٝآٟ٘ب ،ضا
زضیبفز وٙیٓ .
پبراهتزّبی تَاثغ
یه سبثغ ٔی سٛا٘س دبضأشطٞبیی ثذصیطز و ٝزض ٚالغ ٔمبزیطقبٖ ضا قٕب ث ٝسبثغ ٔی زٞیس .اظ ایٙط ٚسٛاثغ ٔی سٛا٘ٙس
ایٗ ٔمبزیط ضا ثطای ا٘ؼبْ وبضٞبیی ث ٝوبض ٌیطز .ایٗ دبضأشطٞب زض ٚالغ قجی ٝثٔ ٝشغیطٞب ٞؿشٙس ،ث ٝاؾشظٙبء ایٗ
ؤ ٝمبزیط ایٗ ٔشغیطٞب ٍٙٞبٔیىٔ ٝب سبثغ ضا نسا ٔی ظ٘یٓ ،سؼطیف ٔی ق٘ٛس ٚزض زاذُ ذٛز سبثغ ا٘شؿبة ٔمبزیط
نٛضر ٍ٘طفش ٝاؾز .
دبضٔشطٞب زض زاذُ یه ػفز دطا٘شع زض سؼطیف سبثغ ٔكرم ٔی ق٘ٛس ٚ ،ثب وبضاوشط ( ) ,اظ ٓٞسفىیه ٔی ق٘ٛس .
ٚظٔب٘یى ٝسبثؼی ضا نسا ٔی ظ٘یٓ ٔ ،ب ٔمبزیط آٖ ٞب ضا ث ٝسبثغ ٔی ضؾب٘یٓ .ث ٝانُالح ث ٝوبضضفش ٝزض ایٙؼب زلز
وٙیس – ٘بْ ٞبیی و ٝزض سؼطیف سبثغ شوط ٔی ق٘ٛس ،دبضأشط ٘بٔیسٔ ٜی قٛز .زض حبِیىٔ ٝمبزیطی و ٝقٕب زض
حیٗ فطاذٛا٘ی سبثغ ٔی آٚضیس ،آضٌٔٛبٖ ٘بٔیسٔ ٜی قٛز .
#!/usr/bin/python
# Filename: func_param.py
x = 5
y = 7
@PythonForever
خزٍجی
زض ایٙؼب ٔ ،ب سبثؼی ث٘ ٝبْ printMaxضا سؼطیف ٕ٘ٛزیٓ و ٝز ٚدبضأشط ث٘ ٝبْ ٞبی ٔ b ٚaی دصیطز .زض زاذُ
سبثغ ػسز ثعضي سط ضا ثب زؾشٛض ؾبز ٜی if .. elseدیسا ٔی وٙیٓ ٚآٖ ضا چبح ٔی وٙیٓ .
زض اِٚیٗ اؾشفبز ٜاظ سبثغ ٔ ، printMaxب اػساز (آضٌٔٛبٖ ٞب) ضا ثُٛض ٔؿشمیٓ ث ٝسبثغ ضؾب٘سیٓ ،زض زٔٚیٗ
فطاذٛا٘ی ٔ ،ب سبثغ ضا ثب اؾشفبز ٜاظ ٔشغیطٞب نسا ظزیٓ .زؾشٛض (printMx(x,yثبػض ٔی قٛز ؤ ٝمساض آضٌٔٛبٖ
xث ٝدبضأشط ٔ ٚ aمساض آضٌٔٛبٖ yث ٝدبضأشط ٙٔ bشؿت قٛز .سبثغ printMaxزض ز ٚحبِز ثسضؾشی وبض ٔی
وٙس .
هتغیزّبی هحلی
ٍٙٞبٔیىٔ ٝشغجطٞبیی ضا زض زض ٖٚسؼطیف سبثغ اػالٖ ٔی وٙیس ،آٟ٘ب ثٞ ٝیچ ٚػ ٝثب ٔشغیطٞبی ٘ ٓٞبٔی وٝ
زضذبضع اظ سبثغ ٞؿشٙس ،اضسجبَی ٘ساض٘س .ثسیٗ ٔؼٙی و٘ ٝبْ ٞبی ٔشغیطٞب هحذٍد ث ٝسبثغ ٞؿشٙس .ایٗ ُّٔت
حَسُ ی هتغیز )٘(scope of the variableبٔیسٔ ٜی قٛز .سٕبٔی ٔشغیطٞبیی و ٝزض حٛظ ٜی یه ثّٛن
ٞؿشٙس ،اظ ٔحُ سؼطیف ٘بْ قبٖ اػالٖ ٔی ق٘ٛس .
#!/usr/bin/python
# Filename: func_local.py
def func(x):
print 'x is', x
x = 2
@PythonForever
print 'Changed local x to', x
x = 50
)func(x
print 'x is still', x
خزٍجی
زض سبثغ ،اِٚیٗ ثبضی ؤ ٝب اظ ٔمساض xاؾشفبز ٜوطزیٓ ،دبیش ٖٛاظ ٔمساض دبضأشطی و ٝزضسبثغ اػالٖ قس ٜاؾشفبزٜ
ٔی وٙس .ؾذؽ ٔ ،ب ٔمساض 2ضا ث٘ x ٝؿجز زازیٓ ٘ .بْ xثطای سبثغ ٔب ٔحّی اؾز .اظ ایٙطٚ ٚلشی ٔب ٔمساض xضا
زض سبثغ سغییط ثسٞیٓ ٔ ،شغیط xایی و ٝزض ثالن انّی ثط٘بٔ ٝسؼطیف قس ٜاؾز ،ثس ٖٚسبطیط ثبلی ٔی ٔب٘س .
زض آذطیٗ زؾشٛض ٔ ، printب سبئیس ٔی وٙیٓ ؤ ٝمساض ٔشغیط xزض ثالن انّی ثط٘بٔ ، ٝثی سغییط ٔب٘س ٜاؾز .
زض نٛضسی و ٝثرٛاٞیس یه ٔمساض ضا ث ٝیه ٘بْ سؼطیف قس ٜزض ذبضع اظ سبثغ ٔٙشؿت وٙیس .ثطای ایٙىبض ٔی
ثبیؿز ث ٝدبیش ٖٛثفٕٟب٘یس و ٝایٗ ٘بْ ٔحّی ٘یؿز ،ثّى ٝؾطاؾطی اؾز ٔ .ب ایٗ وبض ضا ثب اؾشفبز ٜاظ زؾشٛض
globalا٘ؼبْ ٔی زٞیٓ .ایٗ غیط ٕٔىٗ اؾز و ٝیه ٔمساض ضا ث ٝیه ٔشغیط سؼطیف قس ٜزضذبضع اظ سبثغ ثسٖٚ
اؾشفبز ٜاظ زؾشٛض ٘ globalؿجز زاز .
قٕب ٔی سٛا٘یس اظ ٔمبزیط ٔشغیطٞبیی و ٝزض ذبضع اظ سبیغ سؼطیف قس ٜا٘س ( ثب فطو ایٙىٔ ٝشغیطٞبی ٕٙٞبٔی ثب آٖ
ٞب زضزاذُ سبثغ سؼطیف ٘كس ٜا٘س ) اؾشفبز ٜوٙیس ٞ .ط چٙس و ٝایٗ وبض ضٚاع ٘ساضز ٕٞ ٚچٙیٗ ٔی ثبیؿز اػشٙبة
@PythonForever
قٛز ،چطا و ٝثسِیُ ایٙى ٝسؼطیف ٔشغیطٞب زض ػبیی زیٍط اؾز ،ثبػض ٔی قٛز و ٝذٛا٘بیی ٚقفبفیز ثط٘بٔ ٝاظ
ثیٗ ثطٚز .أب اؾشفبز ٜاظ زؾشٛض ، globalثَٛ ٝض ٚافطی ثبػض قفبفیز ایٗ ٔؿئّٔ ٝی قٛز ،چطا ؤ ٝكرم ٔی
وٙس ؤ ٝشغیط زض ثّٛن ثیط٘ٚی سؼطیف قس ٜاؾز .
#!/usr/bin/python
# Filename: func_global.py
def func():
global x
x = 50
)(func
print 'Value of x is', x
خزٍجی
زؾشٛض ، globalثطای ثیبٖ ایٙىx ٝیه ٔشغیط ؾطاؾطی اؾز ،ث ٝوبض ٔی ضٚز .اظ ایٙطٍٙٞ ٚبٔیىٔ ٝب ٔمساضی ضا
زض زض ٖٚسبثغ ث٘ x ٝؿجز ٔی زٞیٓ ،ایٗ سغییط ظٔب٘یى ٝزض ثّٛن انّی ثط٘بٔ ٝاظ xاؾشفبزٔ ٜی وٙیٓ ٕ٘ ،بیبٖ
ٔی قٛز .
@PythonForever
ٔ ، globalكرم وٙیس .ثطای قٕب ٔی سٛا٘یس ،ثیف اظ یه ٔشغیط ؾطاؾطی ضا ثب اؾشفبز ٜاظ یه زؾشٛض
ٔظبَ :global x,y,z
ثطای ثطذی سٛاثغ ٕٔ ،ىٗ اؾز و ٝقٕب ثرٛاٞیس ،دبضأشطٞبیی اذشیبضی ایؼبز وٙیس ،ثُٛضیى ٝزض نٛضسی وٝ
وبضثط ٔمبزیطی ضا ثطای آٖ دبضأشطٞب اضؾبَ ٘ىطز ،اظ ٔمبزیط دیف فطو ذٛزقبٖ اؾشفبز ٜوٙٙس .ایٗ وبض ث ٝوٕه
ٔمبزیط دیف فطو آضٌٔٛبٖ ٞب ا٘ؼبْ ٔی قٛز .قٕب ٔی سٛا٘یس ٔمبزیط دیف فطو آضٌٔٛبٖ ٞب ،ثطای دبضأشطٞب ثٝ
ایٗ نٛضر ٔكرم ٔی قٛز و ٝثؼس اظ ٘بْ دبضأشط زض سؼطیف سبثغ ،ػٍّٕط ا٘شؿبة ( ; ) لطاض ٔی ٌیطز ٚثس٘جبَ
آٖ ٔمساض دیف فطو ٔی آیس .
سٛػ ٝوٙیس ؤ ٝمساض دیف فطو آضٌٔٛبٖ ٔی ثبیؿز طبثز ثبقس .ثهٛضر ٔٛقىبفب٘ ٝسط ثبیس ٌفز ؤ ٝمساض دیف
فطو آضٌٔٛبٖ ٔی ثبیؿز سغییط٘بدصیط ) ( immutableثبقس .ایٗ ُّٔت ثب ػعئیبر ثیكشطی زض فهُ ٞبی
ثؼسی سٛيیح زاز ٜذٛاٞس قس .فؼال فمٍ آٖ ضا ثربَط ثؿذبضیس .
#!/usr/bin/python
# Filename: func_default.py
)'say('Hello
)say('World', 5
خزٍجی
@PythonForever
ًحَُ ی ػولکزد ایي هثبل
سبثغ ، sayثطای چبح یه ضقش ٝث ٝزفؼبر زضذٛاؾشی اؾشفبزٔ ٜی قٛز .اٌط ٔب ٔمساضی ضا ثطای سؼساز زفؼبر
چبح اضؾبَ ٘ىٙیٓ ،ثُٛض دیف فطو ،ضقش ٝسٟٙب یه ثبض چبح ٔی قٛز ٔ .ب ایٗ وبض ضا ثطای دبضأشط timesثب
سؼییٗ ٔمساضدیف فطو آضٌٔٛب٘ف ثط ضٚی ، 1ا٘ؼبْ ٔی زٞیٓ .
زض اِٚیٗ اؾشفبزٞب اظ سبثغ ٔ ، sayب سٟٙب ضقش ٝضا اضؾبَ وطزیٓ ٚزض٘شیؼ ، ٝسبثغ سٟٙب یه ثبض آٖ ضا چبح وطز .زض
زٔٚیٗ اؾشفبز ٜاظ ٔ ، sayب ٓٞضقش ٓٞ ٚ ٝسؼساز زفؼبر ضا ثطاثط ثب ٔ 5كرم وطزیٓ ،و ٝزض ٘شیؼ ٝثبػض ٔی
قٛز ،ضقشٔ ٝب ٔ 5طسج ٝچبح قٛز .
هْن
سٟٙب ،آٖ دبضأشطٞبیی و ٝزض ا٘شٟبی ِیؿز دبضأشطٞب ٞؿشٙس ٔ ،ی سٛا٘ٙس زاضای ٔمبزیط دیف فطو آضٌٔٛبٖ ثبقٙس
،یؼٙی زض سطسیت دبضأشطٞبی اػالٖ قس ٜزض سؼطیف زاز ، ٜقٕب ٕ٘ی سٛا٘یس یه دبضأشط ثب ٔمساض دیف فطو
آضٌٔٛبٖ ضا لجُ اظ یه دبضأشط ثسٔ ٖٚمساض دیف فطو آضٌٔٛبٖ ثیبٚضیس .
ایٗ ث ٝایٗ زِیُ اؾز ؤ ٝمبزیط سٛؾٍ ٔٛلؼیز قبٖ )(positionث ٝدبضأشطٞب ٔٙشؿت ٔی ق٘ٛس .ثطای ٔظبَ ،
)ٔdef func(a,b=5ؼشجط اؾز ِٚی )٘ def func(a=5,bبٔؼشجط اؾز .
اٌط قٕب سٛاثؼی زاقش ٝثبقیس و ٝدبضأشطٞبی ظیبزی ٔی دصیطز ِٚ ،ی قٕب ٔی ذٛاٞیس سٟٙب ثركی اظ آٖ دبضأشطٞب
ضا ٔكرم وٙیس ٔ ،ی سٛا٘یس ث ٝآٖ دبضأشطٞب سٛؾٍ ٘بْ قبٖ ٔمساض ثسٞیس – ایٗ ُّٔت آضٌٔٛبٖ ٞبی وّیسی
٘بٔیسٔ ٜی قٛز ٔ .ب اظ ٘بْ وّیسی ) (keywordزض ػٛو ٔٛلؼیز ) (positionثطای سؼییٗ آضٌٔٛبٖ ٞبی سبثغ
اؾشفبزٔ ٜی وٙیٓ .
ٚزٔ ٚعیز ٚػٛز زاضز – یه ،اؾشفبز ٜاظ سبثغ آؾبٖ سط اؾز ،چطا ؤ ٝب ٘یبظی ثٍ٘ ٝطا٘ی زضثبض ٜی سطسیت
آضٌٔٛبٖ ٞب ٘ساضیٓ .زٔ ، ٚب سٟٙب ث ٝآٖ دبضأشطٞبیی ؤ ٝی ذٛاٞیٓ ٔمساض ٔی زٞیٓ ٔ ،مبزیط ٔبثمی دبضأشطٞب اظ
َطیك آضٌٔٛبٖ ٞبی دیف فطو اضؾبَ ٔی قٛز .
@PythonForever
#!/usr/bin/python
# Filename: func_key.py
)func(3, 7
)func(25, c=24
)func(c=50, a=100
خزٍجی
سبثغ ، funcزاضای یه دبضأشط ثسٔ ٖٚمبزیط دیف فطو آضٌٔٛبٖ ٚز ٚدبضأشط ثب ٔمبزیط دیف فطو آضٌٔٛبٖ اؾز
.
زض اِٚیٗ اؾشفبز ٜاظ ایٗ سبثغ ،ثهٛضر ، (func(3,7دبضأشط ٔ aمساض ، 3دبضأشط ٔ bمساض ٚ 5دبضأشط ٔ cمساض
دیف فطو 10ضا ٔی ٌیطز .
زض زٔٚیٗ اؾشفبز ٜاظ ایٗ سبثغ ،ثهٛضر ٔ ، (func(25,c=24شغیط ٔ aمساض 25ضا ثطاؾبؼ ٔٛلؼیز آضٌٔٛبٖ ٔی
ٌیطز .ؾذؽ ،دبضأشط ٔ cمساض 24ضا ثطاؾبؼ ٘بْ ،یؼٙی آضٌٔٛبٖ ٞبی وّیسی ٔی دصیطز ٔ .شغیط ٔ ٓٞ bمساض
دیف فطو 5ضا ٔی ٌیطز .
زض ؾٔٛیٗ اؾشفبز ٜاظ ایٗ سبثغ ،ثهٛضر ٔ ، (func(c=50,a=100ب ثُٛضوبُٔ اظ آضٌٔٛبٖ ٞبی وّیسی ثطای
سؼییٗ ٔمبزیط اؾشفبز ٜوطزیٓ .سٛػ ٝوٙیس ؤ ٝب ٔمساض دبضأشط cضا لجُ اظ aسؼییٗ وطزیٓ ،حشی ثب آ٘ى a ٝزض
سؼطیف سبثغ لجُ اظ cسؼطیف قس ٜاؾز .
@PythonForever
دستَر return
زؾشٛض ، returnثطای ثطٌكشٗ اظیه سبثغ اؾشفبزٔ ٜی قٛز .یؼٙی ،ثطای ٌطیع اظ سبثغ ث ٝوبض ٔی ضٚز ٔ .ب ٔی
سٛا٘یٓ ثهٛضر اذشیبضی ٔمساضی ضا ٘یع اظ سبثغ ثطٌطزا٘یٓ .
#!/usr/bin/python
# Filename: func_return.py
خزٍجی
سبثغ ٔ ، maximumبوعیٕٓ دبضأشطٞب ضا ثطٔی ٌطزا٘س ،زض ایٗ ٔٛضز ٔ ،بوعیٕٓ اػسازی و ٝث ٝسبثغ اضؾبَ قسٜ
اؾز ضا ثطٔی ٌطزا٘س .ایٗ سبثغ اظ زؾشٛض if .. elseثطای یبفشٗ ػسز ثعضٌشط ٚؾذؽ ثطٌطزا٘سٖ آٖ اؾشفبزٔ ٜی
وٙس .
@PythonForever
سٛػ ٝوٙیس و ٝزؾشٛض ، returnثسٔ ٖٚمساض ،ثطاثط ثب زؾشٛض return Noneاؾز . Noneیه ٘ٛع ذبل زض
دبس ٖٛاؾز وٕ٘ ٝبیبٍ٘ط ٞیچ اؾز .ثطای ٔظبَ ،ثطای سؼییٗ ایٙى ٝیه ٔشغیط زاضای ٔمساضی ٘یؿز اٌط آٖ ٔشغیط
زاضای ٔمساض Noneثبقس ،ث ٝوبض ٔی ضٚز .
ٞط سبثؼی ثُٛض سّٛیحی قبُٔ زؾشٛض return Noneزض دبیبٖ ذٛز ٔی ثبقس ٍٔ ،ط ایٙى ٝقٕب زؾشٛض return
ذٛز ضا ثٛٙیؿیس .قٕب ٔی سٛا٘یس ایٗ ٔؿئّ ٝضا ثب اػطای زؾشٛض ، ()print someFunctionثُٛضیى ٝسبثغ
someFunctionاظ زؾشٛض returnاؾشفبز٘ ٜىطز ٜثبقس ٔ ،شٛػ ٝقٛیس ،ث ٝایٗ نٛضر :
def someFunction():
pass
زؾشٛض passزض دبیش ٖٛثطای ٔكرم وطزٖ یه ثّٛن ذبِی اظ زؾشٛضار ث ٝوبض ٔی ضٚز .
DocStrings
دبیش ٖٛزاضای یه ٚیػٌی ثؿیبضػبِی ث٘ ٝبْ documentation stringsاؾز ،و ٝثب ٘بْ وٛسب docstrings ٜثٝ
آٖ اقبضٔ ٜی قٛز .ضقشٞ ٝبی ٔؿشٙسؾبظ ) ( DocStringsاثعاض ٕٟٔی ٞؿشٙس و ٝقٕب ٔی ثبیؿز اظ آٖ ثطای
ٔؿشٙسؾبظی ثٟشط ثط٘بٔٞ ٝبی سبٖ ثطای زضن ثٟشط ثط٘بٔ ٝسبٖ وٕه ثٍیطیس ،ثب وٕبَ سؼؼت ثبیس ٌفز ،حشی ٔب
ٔی سٛا٘یٓ docstringیه سبثغ ضا زض حیٗ اػطای ثط٘بٔ٘ ٝیع ثسؾز آٚضیٓ !
استفبدُ اس DocStrings
#!/usr/bin/python
# Filename: func_doc.py
@PythonForever
x = int(x) # convert to integers, if possible
)y = int(y
)printMax(3, 5
__print printMax.__doc
خزٍجی
ضقش ٝایی و ٝزض اِٚیٗ ذٍ ُٔٙمی سبثغ آٔس ٜاؾز docstring ،آٖ سبثغ اؾز .سٛػ ٝوٙیس وDocStrings ٝ
ٞب ثطٚی ٔبغٞ َٚب ٚوالؼ ٞب ( و ٝزض فهُ ٞبی آسی زضثبض ٜی آٖ ٞب ذٛاٞیٓ آٔٛذز ) ٓٞاػٕبَ ٔی ق٘ٛس .
ضؾٓ اؾز وٞ docstring ٝب زض چٙسیٗ ذٍ ٘ٛقش ٝق٘ٛس ثُٛضیى ٝزض ذٍ ا َٚاِٚیٗ وّٕ ٝثب حطف ثعضي
قطٚع ٔی قٛز ٚآذطیٗ ذٍ ثب ٘مُ ٝدبیبٖ ٔی یبثس ٕٞ .چٙیٗ زٔٚیٗ ذٍ یه ذبِی اؾز ٞ ٚطٌ ٝ٘ٛسٛيیحبر
ػعئیبر ٔٛضز ٘یبظاظ ذٍ ؾ ْٛقطٚع ٔی قٛز .ث ٝقسر ث ٝقٕب سٛنیٔ ٝی قٛز و ٝایٗ ضؾٓ ضا ثطای سٕبٔی
ٞdocstringبی سٛاثغ ثب إٞیز سبٖ ضػبیز وٙیس .
@PythonForever
قٕب ٔی سٛا٘یس ث ٝضقشٔ ٝؿشٙسؾبظ سبثغ printMaxثب اؾشفبز ٜاظ ٚیػٌی ( ____docث ٝزٚثبض سىطاض دی زضدی
ظیطذٍ سٛػ ٝوٙیس ) اظ سبثغ زؾشطؾی دیسا وٙیس .زلز وٙیس و ٝدبیش ٖٛثٞ ٝطچیعی ث ٝچكٓ یه قیء ٍ٘بٔ ٜی
وٙس ٚایٗ قبُٔ سٛاثغ ٔ ٓٞی قٛز ( .زضثبض ٜی اقیبء زض فهُ والؼ ٞب ذٛاٞیٓ آٔٛذز ).
اٌط سب ث ٝحبَ اظ سبثغ )( helpزض دبیش ٖٛاؾشفبز ٜوطز ٜثبقیس ٔ ،ی ثبیؿز ٘ح ٜٛی اؾشفبز ٜاظ ٞ docstringب ضا
زیس ٜثبقیس ! وبضی و ٝایٗ سبثغ ا٘ؼبْ ٔی زٞس ،ایٙؿز وٚ ٝیػٌی __ __docاظ آٖ سبثغ ضا ٚاوكی ٔی وٙس ٚ
ؾذؽ آٖ ضا ثطای قٕب زض یه لبِت ٔٙظٓ ٕ٘بیف ٔی زٞس .قٕب ث ٝایٗ نٛضر ٔ ،(help(printMaxی سٛا٘یس
ایٗ وبض ضا ثطای سبثغ سؼطیف قس ٜزض ایٗ ٔظبَ أشحبٖ وٙیس .یبزسبٖ ثبقس ثطای ذطٚع اظ ، helpوبضاوشط qضا
سبیخ وٙیس .
ث ٝایٗ َطیك ،اثعاضٞبی ذٛزوبض ٔی سٛا٘ٙس ٔؿشٙسار ضا اظ ثط٘بٔ ٝی قٕب اؾشرطاع وٙٙس .ثٙبثطایٗ ٗٔ ،قسیسا ثٝ
قٕب دیكٟٙبز ٔی و ٓٙو ٝاظ ضقشٞ ٝبی ٔؿشٙس ؾبظ ثطای سٛاثغ ثب إٞیشی ؤ ٝی ٘ٛیؿیس ،اؾشفبز ٜوٙیس .زؾشٛض
pydocو ٝزض سٛظیغ دبیش ٖٛقٕب ٚػٛز زاضز ،ثُٛض ٔكبثٔ ٝظُ زؾشٛض ()helpاظ ٞdocstringب اؾشفبزٔ ٜی
وٙس .
خالصِ
قٕب ػٙجٞ ٝبی ٔرشّفی اظ سٛاثغ ضا ٔالحظٕٛ٘ ٝزیس ،أب سٛػ ٝوٙیس ؤ ٝب زض ایٙؼب سٕبٔی ػٙجٞ ٝب ضا دٛقف
٘سازیٓ .ثٞ ٝطحبَ ،ثیكشط آ٘چ ٝو ٝقٕب زضثبض ٜی سٛاثغ دبیش ٖٛثُٛض وّی ثب آٖ ضٚث ٝضٔ ٚی قٛیس ضا ُٔطح
وطزیٓ .
زض فهُ ثؼسی ٔ ،ی ذٛاٞیٓ ٘ح ٜٛی ایؼبز ٔبغٞ َٚبی دبیش ٖٛضا ثیبٔٛظیٓ .
فْزست هٌذرجبت
@PythonForever
from … import 7
8سبثغ)(dir
9ذالنٝ
هبصٍل ّب
هؼزفی
قٕب ٔالحظٕٛ٘ ٝزیس و ٝث ٝچ ٝنٛضر ٔی سٛا٘یٓ زض ثط٘بٔٞ ٝبی ٔبٖ ثب یىجبض سؼطیف سٛاثغ ،اظ وسـ اؾشفبز ٜی
ٔؼسز ثجطیٓ .حبَ اٌط ثرٛاٞیس اظ قٕبضی اظ سٛاثغ زض زیٍط ثط٘بٔٞ ٝبیی ؤ ٝی ٘ٛیؿیس اؾشفبزٔ ٜؼسز ثجطیس ،
چُٛض ؟ ٕٞبٖ َٛض و ٝحسؼ ظز ٜایس ،دبؾد ٔبغ َٚاؾز .یه ٔبغ َٚثُٛض وّی فبیّی ؾز و ٝقبُٔ سٛاثغ ٚ
ٔشغیطٞبیی ؾز و ٝقٕب سؼطیف وطز ٜایس .ثطای اؾشفبز ٜی ٔؼسز اظ ٔبغ َٚزض زیٍط ثط٘بٔٞ ٝب ٔ ،ی ثبیؿز ٘بْ
فبیُ ٔبغ َٚزاضای دؿ٘ٛس .pyثبقس .
یه ٔبغٔ َٚی سٛا٘س ثٛؾیّ ٝی زیٍط ثط٘بٔٞ ٝب ثطای اؾشفبز ٜی ػّٕیبسی ٚاضز ) (importقٛز ٚ .ثٕٞ ٝیٗ سطسیت
اؾز ؤ ٝب ٔی سٛا٘یٓ اظ وشبثرب٘ ٝی اؾشب٘ساضز دبیش ٖٛث ٝذٛثی اؾشفبز ٜوٙیٓ .زض ازأ٘ ٝح ٜٛی اؾشفبز ٜاظ
ٔبغٞ َٚبی وشبثرب٘ ٝی اؾشب٘ساضز دبیش ٖٛضا ذٛاٞیٓ زیس .
#!/usr/bin/python
# Filename: using_sys.py
import sys
@PythonForever
خزٍجی
زض اثشسا ٔ ،ب ٔبغ sys َٚضا ثب اؾشفبز ٜاظ زؾشٛض ٚ importاضز وطزیٓ .ثُٛضوّی ایٗ زؾشٛض ثطای ٔب ث ٝایٙهٛضر
سفؿیط ٔی قٛز و ٝث ٝدبیشٔ ٖٛی ٌٛئیٓ ؤ ٝی ذٛاٞیٓ اظ ایٗ ٔبغ َٚاؾشفبز ٜوٙیٓ ٔ .بغ sys َٚقبُٔ ػّٕیبسی
ٔطسجٍ ثب ٔفؿط دبیشٔ ٚ ٖٛحیٍ آٖ اؾز .
ظٔب٘ی و ٝدبیش ٖٛزؾشٛض import sysضا اػطا ٔی وٙس ،زض یىی اظ زایطوشٛضی ٞبی ِیؿز قس ٜزض ٔشغیط
sys.pathذٛزـ ،ث ٝز٘جبَ ٔبغٔ sys.py َٚی ٌطزز .اٌط و ٝفبیُ ضا زض آ٘ؼب دیسا وٙس ،ؾذؽ زؾشٛضار
ثّٛن انّی ایٗ ٔبغ َٚاػطا ٔی قٛز ٚؾذؽ ایٗ ٔبغ َٚثطای اؾشفبز ، ٜزضزؾشطؼ ٔب لطاض ٔی ٌیطز .سٛػ ٝوٙیس
و ٝوبضٞبی اِٚی ٝی ٔبغ (initialization) َٚسٟٙب اِٚیٗ ظٔب٘ی ؤ ٝب یه ٔبغ َٚضا ٚاضز ٔی وٙیٓ ا٘ؼبْ ٔی قٛز
ٕٞ .چٙیٗ ٔ'sys' ،رشهطی ثطای وّٕ ٝی ' 'systemاؾز .
ٔشغیط argvزض ٔبغ sys َٚاظ َطیك ػالٔز یه ٘مُ ٝثطای اؾشفبزٛٔ ٜضز اقبض ٜلطاض ٔی ٌیطز .یىی اظ ٔعیز
ٞبی ایٗ قی ، ٜٛایٙؿز و ٝایٗ ٘بْ ثب زیٍط ٔشغیطٞبی argvزض ثط٘بٔ ٝثطذٛضز ٚسًبز دیسا ٕ٘ی وٙس ٕٞ .چٙیٗ ،
ث ٝضٚقٙی ٔكرم ٔی وٙس و ٝایٗ ٘بْ ثركی اظ ٔبغ sys َٚاؾز .
@PythonForever
ٔشغیط sys.argvیه ِیؿز اظ ضقشٞ ٝبؾز ( ِیؿز ٞب ثُٛض ػعئی سطی زض ثرف ثؼسی سٛيیح زازٔ ٜی ق٘ٛس)
.ثُٛض ذبل sys.argv ،قبُٔ ِیؿشی اظ آضٌٔٛبٖ ٞبی ذٍ فطٔبٖ اؾز ،ثسیٗ ٔؼٙی و ٝحبٚی آضٌٔٛبٖ ٞبیی
ؾز و ٝاظ َطیك ذٍ فطٔبٖ ث ٝثط٘بٔ ٝدبؼ زاز ٜقس ٜا٘س .
اٌط قٕب اظ یه IDEثطای ٘ٛقشٗ ٚاػطای ایٗ ثط٘بٔٞ ٝب اؾشفبزٔ ٜی وٙیس ،اظ ٔٞٛٙبی آٖ ث ٝز٘جبَ ضاٞی ثطای
ٔكرم وطزٖ آضٌٔٛبٖ ٞبی ذٍ فطٔبٖ ث ٝثط٘بٔ ٝسبٖ ثٍطزیس .
زض ایٙؼب ٚ ،لشی و ٝزؾشٛض python using_sys.py we are argumentsضا اػطا ٔی وٙیٓ ،زض ٚالغ
ٔبغ using_sys.py َٚضا ثب ثط٘بٔ ٝی pythonاػطا ٔی وٙیٓ ٔ ٚبثمی چیعٞبیی و ٝثس٘جبَ آٖ ٘ٛقشیٓ ثٝ
ثط٘بٔ ٝدبؼ زازٔ ٜی قٛز .دبیش ٖٛآٟ٘ب ضا ثطای ٔب زض ٔشغیط sys.argvشذیطٔ ٜی وٙس .
ث ٝذبَط ثؿذبضیس و٘ ٝبْ اؾىطیذشی و ٝاػطا ٔی قٛز ٕٞ ،یك ٝثؼٛٙاٖ اِٚیٗ آضٌٔٛبٖ زض ِیؿز sys.argvلطاض
ٔی ٌیطز .اظ ایٙط ٚزض ایٗ ٔظبَ ٔ ،ب ضقش ٝی ' 'using_sys.pyضا زض ] ،sys.argv[0ضقش ٝی ' 'weضا زض
] ،sys.argv[1ضقش ٝی ' 'areضا زض ] ٚ sys.argv[2ضقش ٝی ' 'argumentsضا زض ] sys.argv[3ذٛاٞیٓ
زاقز .زلز وٙیس و ٝایٙسوؽ ِیؿز زض دبیش ٖٛاظ 0قطٚع ٔی قٛز ٝ٘ ٚاظ 1 .
)ٔ (importی ق٘ٛس . sys.pathقبُٔ ِیؿشی اظ ٘بْ ٞبی زایطوشٛضی ٞبیی ؾز ؤ ٝبغٞ َٚب اظ آ٘ؼب ٚاضز
ٔكبٞسٔ ٜی وٙیس و ٝاِٚیٗ ضقش ٝزض sys.pathذبِی ؾز – ایٗ ضقش ٝی ذبِی ٔكرم ٔی وٙس وٝ
زایطوشٛضی ػبضی ٘یع ثركی اظ sys.pathاؾز ٕٞ،یٗ َٛض ٔشغیط ٔحیُی ٓٞ PYTHONPATHثركی اظ
sys.pathاؾز .ایٗ ثسیٗ ٔؼٙی ؾز ؤ ٝؿشمیٕب ٔی سٛا٘یس ٔبغٞ َٚبیی و ٝزض زایطوشٛضی ػبضی ٚالغ قس ٜا٘س
ضا ٚاضز وٙیس .زض غیط ایٙهٛضر ثطای ٚاضز وطزٖ ٔبغ َٚسبٖ ٔ ،ی ثبیؿز آٖ ضا زض یىی اظ زایطوشٛضی ٞبیی و ٝزض
sys.pathفٟطؾز قس ٜا٘س ،لطاض ثسٞیس .
ٚاضز وطزٖ یه ٔبغ َٚسب حسی أط دطٞعی ٝٙایی ؾز ،اظ ایٙط ٚدبیش ٖٛسطفٙسٞبیی ضا ثطای ؾطػز ثركی ث ٝایٗ
لًی ٝاػٕبَ ٔی وٙس .یه ضا ٜآٖ ایؼبز فبیُ ٞبی وبٔذبیُ قس ٜی ثبیشی ) (byte-compiledثب دؿ٘ٛس .pyc
اؾز ؤ ٝطث ٌٛث ٝثرف ٔیب٘ی ایی اؾز و ٝدبیش ٖٛثط٘بٔٞ ٝب ضا ث ٝآٖ سجسیُ ٔی وٙس ( ،ثرف ٔؼطفی دبیشٖٛ
چٍ ٝ٘ٛوبض ٔی وٙس ؟ ضا ث ٝیبز ثیبٚضیس) ٚ .ایٗ ػُٕ ثبػض ؾطػز ثركی ٔی قٛز چطا و ٝثب ایٗ وبض ثركی اظ
فطآیٙس ٔٛضز ٘یبظ زض ٚاضزوطزٖ ٔبغ َٚا٘ؼبْ ٔی قٛز ٕٞ .چٙیٗ ایٗ فبیُ ٞبی وبٔذبیُ قس ٜی ثبیشی ٔؿشمُ اظ
ٞplatfromؿشٙس .ذت اؤ ٖٛٙی زا٘یس و ٝفبیُ ٞبی .pycثطای چٙٔ ٝظٛضی اؾشفبزٔ ٜی ق٘ٛس .
@PythonForever
دستَر from … import
اٌط ثرٛاٞیس ٔؿشمیٕب ٔشغیط argvزض ثط٘بٔ ٝسبٖ ٚاضز وٙیس ( ثطای دطٞیع اظ ایٗ و ٝزض ٞط ٘ٛثز sys.ضا ثطای آٖ
سبیخ وٙیس) ٔ ،ی سٛا٘یس اظ زؾشٛض from sys import argvاؾشفبز ٜوٙیس .اٌط ٔی ذٛاٞیس سٕبٔی ٘بْ ٞبی ثٝ
وبض ضفش ٝزض ٔبغ sys َٚضا ٚاضز وٙیس ٔ ،ی سٛا٘یس اظ زؾشٛض * from sys importاؾشفبز ٜوٙیس .ایٗ ضٚـ
ثطای ٞط ٔبغِٚی وبض ٔی وٙس .ثُٛض وّی ،اظ زؾشٛض from … importدطٞیع وٙیس ٚث ٝػبی آٖ اظ زؾشٛض
importاؾشفبز ٜوٙیس ،چطا و ٝث ٝایٗ َطیك ٓٞثط٘بٔ ٝسبٖ ذٛا٘بیی ثبالیی دیسا ٔی وٙس ٓٞ ٚاظ ثطذٛضز ٚسًبز
٘بْ ٞب اػشٙبة ٔی قٛز .
ٞط ٔبغ َٚزاضای یه ٘بْ اؾز ٚاظ ایٙط ٚزؾشٛضاسی و ٝزض یه ٔبغٞ َٚؿشٙس ٔی سٛا٘ٙس اظ َطیك آٖ ٘ ،بْ ٔبغَٚ
قبٖ ضا دیسا وٙٙس .ایٗ ُّٔت ٔرهٛنب زض قطایُی ذبل ثبػض ضاحشی وبض ٔی قٛز ٕٞ .یٗ َٛض و ٝلجال ٓٞ
.حبَ اٌط اقبض ٜقس ٚ ،لشی یه ٔبغ َٚثطای اِٚیٗ ثبض ٚاضز ٔی قٛز ،ثّٛن انّی آٖ ٔبغ َٚاػطا ٔی قٛز
ثرٛاٞیٓ و ٝایٗ ثّٛن سٟٙب ٚلشی و ٝثط٘بٔ ٝسٛؾٍ ذٛزـ ث ٝوبض ٌطفشٔ ٝی قٛز ٝ٘ ٚظٔب٘ی و ٝسٛؾٍ زیٍط
ٔبغٞ َٚب ٚاضز ٔی قٛز ،اػطا قٛز ،چ ٝوبضی ثبیس ا٘ؼبْ ثسٞیٓ ؟ ایٗ وبض ٔی سٛا٘س ثب اؾشفبز ٜاظ ٚیػٌی
____nameاظ ٔبغ َٚثسؾز آیس .
#!/usr/bin/python
# Filename: using_name.py
خزٍجی
@PythonForever
$ python using_name.py
This program is being run by itself
$ python
>>> import using_name
I am being imported from another module
>>>
ٞط ٔبغ َٚدبیش ، ٖٛزاضای ٚیػٌی __ __nameسؼطیف قس ٜی ذٛزـ اؾز ،و ٝاٌط ثطاثط ثب '__ '__mainثبقس
،ثط ایٗ ٔٛيٛع زالِز زاضز ؤ ٝبغ َٚث ٝسٟٙبیی سٛؾٍ وبضثط اػطا قسٔ ٚ ٜب ٔی سٛا٘یٓ ثب سٛػ ٝث ٝایٗ ُّٔت
اػٕبَ ٔٙبؾجی ضا ا٘ؼبْ ثسٞیٓ .
ایؼبز ٔبغٞ َٚبی زِرٛا ٜثؿیبض ضاحز اؾز ،قٕب ایٗ وبض ضا ثبضٞب ا٘ؼبْ زاز ٜایس ! ٞط ثط٘بٔ ٝی دبیش ٖٛیه ٔبغَٚ
٘یع ٞؿز .قٕب سٟٙب ٔی ثبیؿز ُٕٔئٗ ثبقیس و ٝآٖ ثط٘بٔ ٝزاضای دؿ٘ٛس .pyاؾز ٔ .ظبَ ظیط ایٗ ُّٔت ضا
ضٚقٗ ذٛاٞس وطز .
#!/usr/bin/python
# Filename: mymodule.py
def sayhi():
'print 'Hi, this is mymodule speaking.
'version = '0.1
@PythonForever
ٔظبَ ثبال یه ٔبغ ٕٝ٘ٛ٘ َٚثٛز ٕٞ .بُ٘ٛض ؤ ٝالحظٔ ٝی ٕ٘بئیس ،ایٗ ٔبغٞ َٚیچ چیع ذبل ثرهٛنی ثطای
ٔمبیؿ ٝثب ثط٘بٔٞ ٝبی دبیشٔ ٖٛؼِٕٛی ٘ساضز ٔ .ب زض ازأ ٝذٛاٞیٓ آٔٛذز و ٝث ٝچ ٝنٛضر ایٗ ٔبغ َٚضا زض زیٍط
ثط٘بٔٞ ٝبی ٔبٖ ٚاضز وٙیٓ .
ث ٝیبز ثیبٚضیس و ٝایٗ ٔبغٔ َٚی ثبیؿز زض زایطوشٛضی یىؿب٘ی اظ ثط٘بٔ ٝایی و ٝزض آٖ ٔ importی قٛز لطاض
ٌطفش ٝثبقس ٚ ،یب ٔی ثبیؿز ایٗ ٔبغ َٚزض یىی اظ زایطوشٛضی ٞبی ِیؿز قس ٜزض sys.pathلطاض ثٍیطز .
#!/usr/bin/python
# Filename: mymodule_demo.py
import mymodule
)(mymodule.sayhi
print 'Version', mymodule.version
خزٍجی
زلز وٙیس ؤ ٝب اظ ٕٞبٖ ػالٔز ٘مُ ٝثطای زؾشطؾی ث ٝاػًبی ٔبغ َٚاؾشفبز ٜوطزیٓ .دبیش ٖٛث ٝذٛثی اظ ٕٞبٖ
ػالٔز اؾشفبزٔ ٜؼسز ٔی ثطز سب ''Pythonicضا ثٕ٘ ٝبیف ثٍصاضز ،ثُٛضی ؤ ٝب ٔؼجٛض٘جبقیٓ ضٚـ ٞبی
ػسیسی ضا ثطای ا٘ؼبْ وبضٞب یبز ثٍیطیٓ .
@PythonForever
from … import
زض ایٗ ػب ٔظبِی ٞؿز و٘ ٝح from … import ٛضا ث ٝوبض ٔی ٌیطز .
#!/usr/bin/python
# Filename: mymodule_demo2.py
)(sayhi
print 'Version', version
ذطٚػی ثط٘بٔ ٝی ٕٞ mymodule_demo2.pyب٘ٙس ذطٚػی ثط٘بٔ ٝی mymodule_demo.pyاؾز .
تبثغ )(dir
قٕب ٔی سٛا٘یس اظ سبثغ سٛوبض dirثطای فٟطؾز ٌطفشٗ ٞidentifierبیی و ٝزض یه ٔبغ َٚسؼطیف قس ٜا٘س ،
اؾشفبز ٜوٙیس ٞ . identiferب قبُٔ سٛاثغ ،والؼ ٞب ٔ ٚشغیطٞبی سؼطیف قس ٜزض ٔبغٞ َٚؿشٙس .
ٍٙٞبٔی و٘ ٝبْ ٔبغِٚی ضا ث ٝسبثغ سٛوبض ٔ dirی زٞیس ،ایٗ سبثغ ِیؿشی اظ ٘بْ ٞبی سؼطیف قس ٜزض آٖ ٔبغ َٚضا
ثطٔی ٌطزا٘س ٍٙٞ .بٔی و ٝآضٌٔٛب٘ی ضا ث ٝایٗ سبثغ ٘فطؾشیس ،آٖ ِیؿشی اظ ٘بْ ٞبی سؼطیف قس ٜزض ٔبغ َٚفؼّی ضا
ثط ٔی ٌطزا٘س .
$ python
>>> import sys
>>> dir(sys) # get list of attributes for sys module
@PythonForever
['__displayhook__', '__doc__', '__excepthook__',
'__name__', '__stderr__',
'__stdin__', '__stdout__', '_getframe', 'api_version',
'argv',
'builtin_module_names', 'byteorder', 'call_tracing',
'callstats',
'copyright', 'displayhook', 'exc_clear', 'exc_info',
'exc_type',
'excepthook', 'exec_prefix', 'executable', 'exit',
'getcheckinterval',
'getdefaultencoding', 'getdlopenflags',
'getfilesystemencoding',
'getrecursionlimit', 'getrefcount', 'hexversion',
'maxint', 'maxunicode',
'meta_path','modules', 'path', 'path_hooks',
'path_importer_cache',
'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval',
'setdlopenflags',
'setprofile', 'setrecursionlimit', 'settrace',
'stderr', 'stdin', 'stdout',
'version', 'version_info', 'warnoptions']
>>> dir() # get list of attributes for current module
['__builtins__', '__doc__', '__name__', 'sys']
>>>
>>> a = 5 # create a new variable 'a'
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'sys']
>>>
>>> del a # delete/remove a name
>>>
>>> dir()
['__builtins__', '__doc__', '__name__', 'sys']
>>>
ا٘یٓ ِیؿشیٛ ایٗ سطسیت ٔی سٝ ثٝ و، ٓزیٕٛ٘ ٜ اؾشفبز، ٜاضز قسٚ sys َٚ ثطای ٔبغdir وبضٛ ٔب اظ سبثغ س، زض اثشسا
ٖٔبٌٖٛ آضٚ ثس، dir وبضٛ ٔب اظ سبثغ س، ؾذؽ. ٓیٙ وٝؿز ضا ٔالحظٞ َٚ زض ایٗ ٔبغٝبیی وٞ یػٌیٚ ثعضٌی اظ
@PythonForever
اؾشفبز ٜوطزیٓ ،و ٝثُٛض دیف فطو ِیؿشی اظ ٚیػٌی ٞبی ٔطث ٌٛثٔ ٝبغ َٚفؼّی ضا ثط ٔی ٌطزا٘س .سٛػ ٝوٙیس
وِ ٝیؿز ٔبغٞ َٚبی ٚاضز قس ٜلجّی ٓٞزض ثركی اظ ایٗ ِیؿز اؾز .ثطای ایٗ و dir ٝضا زض ػُٕ ٔكبٞسٜ
وٙیٓ ٔ ،ب یه ٔشغیط ػسیس ث٘ ٝبْ aسؼطیف ٕ٘ٛزیٓ ٚیه ٔمساض ث ٝآٖ ٘ؿجز زازیٓ ٚؾذؽ ذطٚػی dirضا
ثطضؾی وطزیٓ ٚزض٘شیؼٔ ٝشٛػٔ ٝمساضايبف ٝقس ٜثب ٕٞبٖ ٘بْ aزض ِیؿز قسیٓ .ؾذؽ ٔشغیطٚ/یػٌی aاظ
ٔبغ َٚفؼّی ضا ثب زؾشٛض delحصف ٔی وٙیٓ ٚایٗ سغییط زٚثبض ٜزض ذطٚػی سبثغ ٙٔ dirؼىؽ ٔی قٛز .
یه ٘ىش ٝثطای delایٙؿز و ٝایٗ زؾشٛض ثطای حصف ٘بْٔ/شغیط ث ٝوبض ٔی ضٚز ٚثؼس اظ آٖ و ٝایٗ زؾشٛض اػطا
ٔی قٛز ،زض ایٗ ٔٛضز ٕ٘ ، del aی سٛا٘یس زیٍط ثٔ ٝشغیط aزؾشطؾی دیسا وٙیس – ثُٛضی وٌٛ ٝیب ٞیچ ٚلز
دیف اظ ایٗ ٚػٛز ٘ساقش ٝاؾز .
خالصِ
ٔبغٞ َٚب ٔفیس ٞؿشٙس ،چطا و ٝآٖ ٞب ؾطٚیؽ ٞب ٚػّٕیبسی ضا اضائٔ ٝی زٙٞس ،ؤ ٝی سٛا٘یس زضزیٍط ثط٘بٔٞ ٝب
اظ آٖ ٞب اؾشفبز ٜی ٔؼسز ثجطیس .وشبثرب٘ ٝی اؾشب٘ساضز دبیش ٖٛوٕٞ ٝطا ٜثب دبیش ٖٛاضائ ٝقس ٜاؾز ٔ ،ظبِی اظ
ٔؼٕٛػ ٝایی اظ ایٗ ٔبغٞ َٚبؾز ٔ .ب ث ٝذٛثی ٔالحظٕٛ٘ ٝزیٓ و ٝچُٛض اظ ایٗ ٔبغٞ َٚب اؾشفبز ٜوٙیٓ ٚچُٛض
ٔبغٞ َٚبی ذٛزٔبٖ ضا ایؼبز وٙیٓ .
زض فهُ ثؼسی ،زضثبض ٜی ثطذی زیٍط اظ ػٙجٞ ٝبی ػبِت سٛػ ٝدبیش ٖٛو ٝؾبذشٕبٖ زازٞ ٜب ٘بْ زاضز ،ذٛاٞیٓ
آٔٛذز .
فْزست هٌذرجبت
6زیىكٙطی
@PythonForever
ٔ 8طػغ ٞب
10ذالنٝ
هؼزفی
ؾبذشٕبٖ ٞبی زاز ٜثُٛض وّی ػجبضسؿز اظ ؾبذشبضٞبیی ؤ ٝی سٛا٘س زازٞ ٜبیی ضا ثب ٕٞسیٍط ٚزض وٙبض ٍٝ٘ ٓٞ
زاضز .ثؼجبضسی زیٍط ،ثطای شذیط ٜی ٔؼٕٛػ ٝایی اظ زازٞ ٜبی ٚاثؿش ٝث ٝوبض ٔی ض٘ٚس .
ؾ ٝؾبذشٕبٖ زاز ٜی سٛوبض زض دبیشٞ ٖٛؿز ،و ٝػجبضسٙس اظ ِیؿز ) ،(listچٙسسبیی ) ٚ (tupleزیىكٙطی
ٔ (dictionary) .ب زض ازأ٘ ٝح ٜٛی اؾشفبز ٜاظ ٞط یه اظ آٖ ٞب ٚایٙى ٝچُٛض ظ٘سٌی ضا ثطای ٔب ضاحز سط ٔی
ؾبظ٘س ضا ذٛاٞیٓ زیس .
لیست
یه ِیؿز ،ؾبذشٕبٖ زاز ٜایی ؾز ؤ ٝؼٕٛػ ٝایی سطسیجی اظ آیشٓ ٞب ضا ٍ٘ٔ ٝی زاضز ،ثسیٗ ٔؼٙی ؤ ٝی
سٛا٘یس یه ز٘جبِ ٝاظ آیشٓ ٞب ضا زض یه ِیؿز شذیط ٜوٙیس .ایٗ ُّٔت ٔی سٛا٘س ث ٝضاحشی ثب زض ٘ظط ٌطفشٗ یه
ِیؿز ذطیس سهٛض قٛز ،چطا و ٝآٖ ػب ِ ٓٞیؿشی اظ آیشٓ ٞب ضا ثطای ذطیسٖ زاضیٓ ،ثب ایٗ سفبٚر و ٝاحشٕبال زض
ِیؿز ذطیس ٞط آیشٓ ضا زض ذُی ٔؼعا زاضیٓ ،زض حبِی و ٝزض دبیش ، ٖٛثیٗ آیشٓ ٞب ٚیطٌٔ َٛی ٌصاضیٓ .
ِیؿز آیشٓ ٞب ٔی ثبیؿز زض یه ػفز ثطاوز لطاض ثٍیط٘س ،سب دبیش ٖٛثفٕٟس و ٝقٕب یه ِیؿز ضا ٔكرم وطزٜ
ایس .یىجبض وِ ٝیؿشی ضا سؼطیف ٔی وٙیس ٔ ،ی سٛا٘یس آیشٓ ٞبیی ضا زض ِیؿز ايبف ، ٝحصف ٚیب ػؿشؼٕ٘ ٛبئیس ،
ٚچٔ ٖٛی سٛا٘یٓ آیشٓ ٞبیی ضا ثِ ٝیؿز ايبف ٚ ٝیب حصف وٙیٓ ،اظ ایٙطٔ ٚی ٌٛئیٓ وِ ٝیؿز یه ٘ٛع زاز ٜی
سغییط دصیط ) (mutable data typeاؾز ،یؼٙی ایٗ ٘ٛع ٔی سٛا٘س زؾشىبضی قٛز .
ٞط چٙس زضازأ ٝی وشبة ث ٝثحض وّی زضثبض ٜی والؼ ٞب ٚاقیبء ٞب ٔی دطزاظیٓ ،أب سٛيیح ٔرشهطی زض ایٙؼب
ثطای زضن ثٟشط ِیؿز ٔٙبؾت ٞؿز ٚ ،ثحض وّی ایٗ ٔٛيٛع ضا زض فهُ ذٛزـ ذٛاٞیٓ زاقز .
یه ِیؿز ٔظبِی اظ اؾشفبز ٜاظ اقیبء ٚوالؼ اؾز ٚ .لشی و ٝقٕب ٔشغیط iضا ثىبض ٔی ثطیس ٚیه ٔمساضی ضا ثٝ
آٖ ٘ؿجز ٔی زٞیس ( فطو وٙیس و ٝػسز نحیح 5ضا ث ٝآٖ ٘ؿجز زاز ٜایس) ٔ ،ی سٛا٘یس ث ٝایٗ نٛضر فىط
@PythonForever
وٙیس و ٝیه قیء (ٕ٘ )ٝ٘ٛث٘ ٝبْ iاظ والؼ (٘ٛع ) intایؼبز ٕ٘ٛز ٜایس .ثطای زضن ثٟشط ایٗ ُّٔت ذطٚػی
)help(intضا ٔالحظٕ٘ ٝبئیس .
یه والؼ ٔی سٛا٘س زاضای هتذّبیی ثبقس .ثسیٗ ٔؼٙی و ، ٝسٛاثؼی و ٝسؼطیف قس ٜا٘س ،سٟٙب زض ٔٛضز آٖ والؼ
ث ٝوبض ٌطفشٔ ٝی ق٘ٛس ٔ ٚ .ی سٛا٘یس اظػّٕیبر آٖ لؿٕز سٟٙب ٍٙٞبٔی و ٝیه قیء اظ آٖ والؼ زاقش ٝثبقیس ،
اؾشفبز ٜوٙیس .ثطای ٔظبَ ،دبیشٔ ٖٛشس appendضا ثطای والؼ listاضائٕٛ٘ ٝز ٜاؾز و ٝث ٝقٕب اػبظٔ ٜی زٞس
آیشٕی ضا زض ا٘شٟبی ِیؿز ايبف ٝوٙیس .ثطای ٔظبَ ،زؾشٛض )' ،mylist.append('an itemآٖ ضقش ٝضا ثٝ
ا٘شٟبی ِیؿز mylistايبفٔ ٝی وٙس .سٛػ ٝوٙیس و ٝاظ ػالٔز ٘مُ ٝثطای زؾشطؾی ثٔ ٝشسٞبی یه قیء
اؾشفبزٔ ٜی وٙیس .
یه والؼ ٔی سٛا٘س زاضای فیلذّبیی ثبقس و ٝچیعی ثیف اظ یه ٔشغیط ٘یؿشٙس ِٚی ٔشغیطٞبیی ٞؿشٙس و ٝسٟٙب
زض ٔٛضز والؼ ث ٝوبض ٌطفشٔ ٝی ق٘ٛس ٔ .ی سٛا٘یس اظ ایٗ ٔشغیطٞب٘/بْ ٞب ٍٙٞبٔی و ٝقیء ایی اظ آٖ والؼ زاضیس
،اؾشفبز ٜوٙیس .فیّسٞب ٕٞ ٓٞچٙیٗ اظ َطیك ػالٔز ٘مُ ٝزضزؾشطؼ لطاضٔی ٌیط٘س ،ثطای ٔظبَ ،
mylist.field .
#!/usr/bin/python
# Filename: using_list.py
@PythonForever
print 'I will sort my list now'
shoplist.sort()
print 'Sorted shopping list is', shoplist
خزٍجی
$ python using_list.py
I have 4 items to purchase.
These items are: apple mango carrot banana
I also have to buy rice.
My shopping list is now ['apple', 'mango', 'carrot',
'banana', 'rice']
I will sort my list now
Sorted shopping list is ['apple', 'banana', 'carrot',
'mango', 'rice']
The first item I will buy is apple
I bought the apple
My shopping list is now ['banana', 'carrot', 'mango',
'rice']
بییٞ ٝ ٔب فمٍ ضقش،shoplist زض. زٚ ٔی ضٜقٍبٚ فطٝ ثٝ یه ِیؿز ذطیس ثطای وؿی ؾز وshoplist ٔشغیط
ٚ قبُٔ اػساز، ػی اظ اقیبء ضاٛ٘ طٞ ا٘یسٛ ٔی سٝ أب یبزسبٖ ثبقس و، ٓ ایٜ وطزٜبی الالْ ذطیس ضا شذیطٞ ْاظ ٘ب
. یسٙ وٝ ایٗ ِیؿز ايبفٝب ضا ثٞ حشی زیٍط ِیؿز
@PythonForever
ٔب ٕٞچٙیٗ اظ ػجبضر for .. inزض حّم ٝثطای حطوز ثطٚی آیشٓ ٞبی ِیؿز اؾشفبزٕٛ٘ ٜزیٓ .دؽ اؤ ، ٖٛٙی
ثبیؿز سكریم زاز ٜثبقیس وٕٞ ٝچیٗ یه ِیؿز یه ز٘جبِٞ ٓٞ(sequence) ٝؿز ٚ .یػٌی ٞبی ز٘جبِٞ ٝب
زض ثرف ثؼسی ثحض ذٛاٞس قس .
سٛػ ٝوٙیس ؤ ٝب اظ یه ػالٔز وبٔب ( ),زض ا٘شٟبی زؾشٛض printثطای ػٌّٛیطی اظ چبح ذٛزوبض وبضاوشط line
breakثؼس اظ ٞط زؾشٛض printاؾشفبزٕٛ٘ ٜزیٓ .ایٗ ضٚـ وٕی ٘بذٛقبیٙس ٞؿز ِٚی ؾبز ٜؾز ٚذٛاؾش ٝی
ٔب ضا ثطآٚضزٔ ٜی وٙس .
زض ازأ ، ٝآیشٓ ٞبیی ضا ثِ ٝیؿز ثب اؾشفبز ٜاظ زؾشٛض appendاظ قیء ِیؿز و ٝلجال ثحض قس ،ايبفٔ ٝی
وٙیٓ ،ؾذؽ ،ثطای إَیٙبٖ اظ ایٙى ٝآیب ٚالؼب آیشٓ ثِ ٝیؿز ايبف ٝقس ٜاؾز ٔ ،حشٛای ِیؿز ضا ث ٝؾبزٌی ثب
فطؾشبزٖ ِیؿز ث ٝزؾشٛض printچبح ٔی وٙیٓ ،و ٝزض ٘شیؼ ٝثَ ٝطظ ٔٙبؾجی ِیؿز ضا ثطای ٔب چبح ٔی وٙس.
ؾذؽ ٔب ِیؿز ضا ثب ٔشس sortاظ ِیؿز ٔطست ٔی وٙیٓ .سٛػ ٝوٙیس و ٝایٗ ٔشس ثطٚی ِیؿز ذٛزـ سبطیط ٔی
ٌصاضز ِ ٚیؿز سغییط یبفش ٝی ػسیسی ثطٕ٘ی ٌطزا٘س – ٚایٗ ثطذالف ضٚقی ؾز و ٝضقشٞ ٝب وبض ٔی وٙٙس .ثٝ
ٕٞیٗ زِیُ اؾز ؤ ٝب ٔی ٌٛئیٓ وِ ٝیؿز ٞب سغییط دصیطٞؿشٙس ٚضقشٞ ٝب سغییط٘بدصیط٘س .
ؾذؽ ٚلشی و ٝذطیس یه آیشٓ ضا زض فطٚقٍب ٜث ٝاسٕبْ ضؾب٘سیٓ ٔ ،ی ذٛاٞیٓ و ٝآٖ ضا اظ ِیؿز حصف وٙیٓ .وٝ
ایٗ وبض ضا ثب اؾشفبز ٜاظ زؾشٛض delثسؾز ٔی آٚضیٓ .زض ایٙؼب ٔب اقبض ٜوطزیٓ و ٝآیشٕی ضا اظ ِیؿز ٔی ذٛاٞیٓ
حصف وٙیٓ ٚزؾشٛض delآٖ ضا ثطای ٔب اظ ِیؿز حصف ٔی وٙس ٚ .چٔ ٖٛی ذٛاٞیٓ و ٝاِٚیٗ آیشٓ اظ ِیؿز ضا
حصف وٙیٓ ،اظ ایٙط ٚاظ زؾشٛض ] ، del shoplist[0اؾشفبزٔ ٜی وٙیٓ ( .یبزسبٖ ثبقس و ٝدبیش ٖٛقٕبضـ ضا اظ
0قطٚع ٔی وٙس ) .
) help(listضا ثطای اٌطٔی ذٛاٞیس سٕبٔی ٔشسٞبی سؼطیف قس ٜزض قیء ِیؿز ضا ثسا٘یس ،ذطٚػی زؾشٛض
ػعئیبر ثیكشط ٔالحظٕ٘ ٝبئیس .
چٌذتبیی )(Tuple
تغییزًبپذیزًذ ،ثسیٗ ٔؼٙی وٕ٘ ٝی چٙسسبیی ٞب ٔكبثِ ٝیؿز ٞب ٞؿشٙس ،ثب ایٗ سفبٚر ؤ ٝب٘ٙس ضقشٞ ٝب
سٛا٘یس چٙسسبیی ٞب ضا سغییط ثسٞیس ،چٙسسبیی ٞب ثب اؾشفبز ٜاظ آیشٓ ٞبیی و ٝثب وبٔب ( ),اظ ٓٞػسا قس ٚ ٜزض زضٖٚ
یه ػفز دطا٘شع احبَ ٝقس ٜا٘س ،سؼطیف ٔی ق٘ٛس .چٙسسبیی ٞب ٔؼٕٛال زض ٔٛاضزی ث ٝوبض ٌطفشٔ ٝی ق٘ٛس وٝ
یه زؾشٛض یب یه سبثغ سؼطیف قس ٜسٛؾٍ وبضثط ثب ٔؼٕٛػ ٝایی اظ ٔمبزیط ثس ٖٚآ٘ى ٝآؾیجی ثٔ ٝحشٛیبر آٟ٘ب ٚاضز
ثكٛز ثشٛا٘س وبض وٙس ،ثسیٗ ٔؼٙی و ٝچٙسسبیی و ٝاؾشفبز ٜقس ٜاؾز ٔ ،مبزیطـ سغییط ٘رٛاٙٞس وطز .
@PythonForever
استفبدُ اس چٌذتبیی ّب
#!/usr/bin/python
# Filename: using_tuple.py
خزٍجی
$ python using_tuple.py
Number of animals in the zoo is 3
Number of animals in the new zoo is 3
All animals in new zoo are ('monkey', 'dolphin',
('wolf', 'elephant', 'penguin'))
Animals brought from old zoo are ('wolf', 'elephant',
'penguin')
Last animal brought from old zoo is penguin
ََٛ ٗ ثطای ٌطفشlen اظ سبثغٝیس وٙ ٔی وٝ ٔالحظ، سٙ ٔی وٜب اقبضٞ ٓسسبیی اظ آیشٙ یه چٝ ثzoo ٔشغیط
ٓٞ ِٝ یه ز٘جب، سسبییٙ یه چٝس وٞثی ٘كبٖ ٔی زٛ ذٝیٗ ثٕٙچٞ ّٝ ایٗ ٔؿئ. اؾزٜ قسٜسسبیی اؾشفبزٙچ
. ؿزٞ
@PythonForever
ؾذؽ ٔب حیٛا٘بر ثبؽ ٚحف لجّی ضا ث ٝزاذُ ثبؽ ٚحف ػسیسی ا٘شمبَ زازیٓ ،چطا و ٝثبؽ ٚحف لجّی ثؿشٝ
قس ٜاؾز ! ثٙبثطایٗ چٙسسبیی new_zooحبٚی ٓٞسؼسازی حیٛاٖ ٞؿز و ٝزض ذٛزـ ثٛز ٜاؾز ٓٞ ٚ
حبٚی حیٛا٘بسی ؾز و ٝاظ ثبؽ ٚحف لجّی آٔس ٜا٘س .ذت ثٚ ٝالؼیز ثطٌطزیٓ ،سٛػ ٝوٙیس و ٝیه چٙسسبیی وٝ
زض زاذُ ذٛزـ یه چٙسسبیی زیٍط ضا ٍ٘ٔ ٝی زاضز ٛٞ ،یز چٙسسبیی ثٛز٘ف ضا اظ زؾز ٕ٘ی زٞس .
ٔی سٛا٘یٓ ث ٝآیشٓ ٞبی زاذُ یه چٙسسبیی ثب ٔكرم وطزٖ ٔٛلؼیز آیشٓ زض زاذُ یه ػفز ثطاوز ( =< ) ،
ٔكبث ٝث ٝوبضی و ٝثطای ِیؿز ٞب ا٘ؼبْ ٔی زٞیٓ ،زؾشطؾی دیسا وٙیٓ .دؽ ٔب ث ٝؾٔٛیٗ آیشٓ زض چٙسسبیی
new_zooثب ٔكرم وطزٖ ]new_zoo[2زؾشطؾی دیسا ٔی وٙیٓ ٚث ٝؾٔٛیٗ آیشٓ اظ ؾٔٛیٗ آیشٓ زض
چٙسسبیی new_zooثب ٔكرم وطزٖ ] new_zoo[2][2زؾشطؾی دیسا ٔی وٙیٓ .سٟٙب اٌط و ٝیىجبضقی ٜٛی
آٖ ضا زضن وٙیس ،ایٗ وبض ثطای سبٖ ثؿیبض آؾبٖ ذٛاٞس قس .
یه چٙسسبیی ذبِی ثب یه ػفز دطا٘شع ٕٞچ my_empty=() ٖٛؾبذشٔ ٝی قٛز ِٚ .ی ایؼبز یه چٙسسبیی ثب
سه آیشٓ وبض ضاحشی ٘یؿز .قٕب ٔی ثبیؿز آٖ ضا ثب اؾشفبز ٜاظ یه وبٔب و ٝث ٝز٘جبَ اِٚیٗ ( ٚسٟٙب) آیشٓ
چٙسسبیی ٔی آیس ٔ ،كرم وٙیس ،سب اظ ایٗ َطیك دبیش ٖٛثشٛا٘س زض یه ػجبضر ،ثیٗ یه چٙسسبیی ٚیه چفز
دطا٘شع و ٝاَطاف یه قیء لطاض ٔی ٌیطز ،سفبٚر لبئُ ثكٛز ،یؼٙی ٔی ثبیؿز یه چٙسسبیی ثب سه آیشٓ ضا اٌط
ٔی ذٛاٞیس ث ٝفطو قبُٔ آیشٓ 2ثبقس ،ث ٝنٛضر )ٔ singleton = ( 2,كرم وٙیس .
یه ِیؿز و ٝزض زاذّف یه ِیؿز زیٍطٞؿز ٛٞ ،یز ِیؿز ثٛزٖ ذٛزـ ضا اظ زؾز ٕ٘ی زٞس ،ثسیٗ ٔؼٙی
وِ ٝیؿز ٞب زض دبیشٕٞ ٖٛچِ ٖٛیؿز ٞبی دطَ ٔؿُح )٘(flattenedیؿشٙس ٕٞ ٚ ،یٗ َٛض زض ٔٛضز چٙسسبیی
ٞبیی و ٝزض زاذُ قبٖ چٙسسبیی ٞبی زیٍطی ؾز ،یب یه چٙسسبیی و ٝزض زاذّف ِیؿز اؾز ،یب یه ِیؿشی
و ٝزض زاذّف چٙسسبیی ؾز ٚغیط . ٜسب آ٘ؼب و ٝث ٝدبیشٔ ٖٛطسجٍ اؾز ،آٟ٘ب سٟٙب اقیبء ایی ٞؿشٙس و ٝثب
اؾشفبز ٜاظ اقیبء ی زیٍط شذیطٔ ٜی ق٘ٛس .سٕبْ ُّٔت ٕٞیٗ ٞؿز .
یىی اظ ثیكشطیٗ اؾشفبز ٜی چٙسسبیی ٞب زض زؾشٛض printاؾز .زض ایٙؼب ٔظبِی آٚضز ٜقس ٜاؾز .
@PythonForever
هثبل .9.3خزٍجی ثب استفبدُ اس چٌذتبیی ّب
#!/usr/bin/python
# Filename: print_tuple.py
age = 22
'name = 'Swaroop
زؾشٛض ٔ ، printی سٛا٘س ضقش ٝایی ضا ثٍیطز و ٝایٗ ضقش ٝاظ ٔكرهٞ ٝبیی ٔؼیٗ و ٝػالٔز %ث ٝز٘جبَ قبٖ
ٞؿز ٚ ،ثس٘جبَ آٖ یه چٙسسبیی اظ آیشٓ ٞبیی و ٝثب آٖ ٔكرهٞ ٝب سُبثك زاض٘س سكىیُ قس ٜثبقس .ایٗ
ٔكرهٞ ٝب ثطای لبِت ثٙسی ذطٚػی زض یه ضٚـ ٔؼیٗ ث ٝوبض ٌطفشٔ ٝی ق٘ٛس .ایٗ ٔكرهٞ ٝب ٔی سٛا٘س
ٔظُ %sثطای ضقشٞ ٝب %d ٚثطای اػساز نحیح ثبقس .چٙسسبیی و ٝثس٘جبَ آٖ ٞب ٔی آیس ٔ ،ی ثبیؿز زاضای
آیشٓ ٞبیی ٔطسجٍ ثب ایٗ ٔكرهٞ ٝب ٚزض یه سطسیت یىؿبٖ ثب آٖ ٞب ثبقس .
ضٚقٗ ٞؿز و ٝاِٚیٗ وبضثطز آٖ ،زض ػبیی ؾز ؤ ٝب اظ اِٚیٗ %sاؾشفبز ٜوطزیٓ ٚایٗ ثٔ ٝشغیط nameایی
ٔطثٞ ٌٛؿز و ٝاِٚیٗ آیشٓ زض چٙسسبیی اؾز ٚزٔٚیٗ ٔكرهٔ %d ٝی ثبقس ؤ ٝطث ٌٛث age ٝایی ؾز وٝ
زٔٚیٗ آیشٓ زض چٙسسبیی ؾز .
وبضی و ٝدبیش ٖٛزض ایٙؼب ا٘ؼبْ ٔی زٞس ،ایٙؿز وٞ ٝط آیشٓ زض چٙسسبیی ضا ث ٝضقش ٝایی سجسیُ ٔی وٙس ٚآٖ
ٔمساض ضقش ٝضا ثب ٔىبٖ ٔطث َٝٛاـ ػبیٍعیٗ ٔی وٙس .ثٙبثطایٗ %sثب ٔمساض ٔشغیط nameػبیٍعیٗ ٔی قٛز ٚ
اِی آذط .
ای ٍٝ٘ٛٙاؾشفبز ٜاظ زؾشٛض ٛ٘ ، printقشٗ ذطٚػی ضا ث ٝقسر آؾبٖ ٔی ؾبظز ٚاظ زؾشىبضی ثیكشطضقش ٝو ٝثطای
ضؾیسٖ ثٕٞ ٝچیٗ وبضی ا٘ؼبْ ٔی قٛز ػٌّٛیطی ٔی وٙسٕٞ .چیٗ اظ اؾشفبز ٜاظ وبٔب ضا و ٝسبو ٖٛٙاؾشفبزٔ ٜی
وطزیٓ ػٌّٛیطی ٔی وٙس .
@PythonForever
ثیكشط اٚلبر ،قٕب وبفیؿز و ٝاظ ٔكره ، %s ٝاؾشفبز ٜوٙیس ٚث ٝدبیش ٖٛاػبظ ٜثسٞیس و ٝث ٝػبی قٕب ٔطالت
ثبقس .ایٗ لًی ٝحشی ثطای اػساز ٓٞوبض ٔی وٙس ٞ .طچٙس ،قٕب ٕٔىٗ اؾز ثرٛاٞیس ٔكرهٞ ٝبی زضؾشی ضا
لطاض ثسٞیس و ٝزض ایٙهٛضر یه ٔطحّ ٝی چه وطزٖ ضا ث ٝثط٘بٔ ٝسبٖ ايبفٔ ٝی قٛز .
زض زؾشٛض زٔ ، print ْٚب اظ یه ٔكرهٔ ٝؼطز و ٝث ٝز٘جبَ ػالٔز %آٔس ٚ ٜث ٝز٘جبِف یه آیشٓ سٟٙب ٞؿز
اؾشفبز ٜوطزیٓ – زض ایٗ حبِز زیٍطػفز ػالٔز دطا٘شع ٘یبٔس ٜاؾز ٚایٗ حبِز فمٍ ثطای ٔٛاضزی و ٝیه
ٔكره ٝسٟٙب زض ضقش ٝاؾز ث ٝوبض ٔی ضٚز .
دیکشٌزی
یه زیىكٙطی ٔظُ یه وشبثچ– ٝآزضؼ اؾز .و ٝقٕب ٔی سٛا٘یس آزضؼ یب ػعئیبر سٕبؼ یه قرم ضا ثب
زا٘ؿشٗ فمٍ ٘بٔف دیسا ٕ٘بئیس .ثسیٗ ٔؼٙی ؤ ، ٝب کلیذّبیی (٘بْ) ضا ث ٝهقبدیزی(ػعئیبر )ٔطسجٍ ٚ ٚاثؿشٝ
ٔی ؾبظیٓ .سٛػ ٝوٙیس و ٝوّیسٞب ٔی ثبیؿز یى ٝثبقٙس ،چطاو ٝزض غیطایٙهٛضر ثطای ٔظبَ قٕب ثب زاقشٗ زٚ
قرم ثب ٘بْ ٞبی یىؿبٖ ٕ٘ی سٛا٘یس اَالػبر زضؾشی ضا دیسا وٙیس .
سٛػ ٝوٙیس و ٝسٟٙب ٔی سٛا٘یس اظ اقیبء سغییط٘بدصیط ثطای وّیسٞبی یه زیىكٙطی اؾشفبز ٜوٙیس (ٔظُ ضقشٞ ٝب) ،
ِٚی ٔی سٛا٘یس ٓٞاظ اقیبء سغییطدصیط ٓٞٚاظ اقیبء سغییط٘بدصیطثطای ٔمبزیط زیىكٙطی اؾشفبز ٜوٙیس .ایٗ ُّٔت
ثُٛض وّی ث ٝایٗ نٛضر سفؿیطٔی قٛز ؤ ٝی ثبیؿز سٟٙب اظ اقیبء ی ؾبز ٜثطای وّیسٞب اؾشفبز ٜقٛز .
ػفز ٞبی وّیس ٔ ٚمساض زض یه زیىكٙطی ثب اؾشفبز ٜاظ ٘كبٖ }d = {key1: value1 , key2 : value2
ٔؼیٗ ٔی ق٘ٛس .زلز وٙیس و ٝػفز ٞبی وّیسٔ/مساض ثب ػالٔز :اظ ٓٞػسا ٔی ق٘ٛس ٚذٛز ػفز ٞب ثب ػالٔز
,اظ ٓٞػسا ٔی ق٘ٛس ٍٕٞ ٚی زض زاذُ یه ػفز ثطاوز ?> لطاض ٔی ٌیط٘س .
زیىكٙطی ٞبیی و ٝاؾشفبز ٜذٛاٞیس وطز ٞ ٕٝ٘ٛ٘ ،بیی/اقیبیی اظ والؼ ٞ dictؿشٙس .
استفبدُ اس دیکشٌزی
#!/usr/bin/python
# Filename: using_dict.py
@PythonForever
'Swaroop' : ab = {
'[email protected]',
'Larry' : '[email protected]',
'Matsumoto' : '[email protected]',
'Spammer' : '[email protected]'
}
خزٍجی
$ python using_dict.py
Swaroop's address is [email protected]
@PythonForever
ًحَُ ی ػولکزد ایي هثبل
ٔب زض ایٗ ٔظبَ ،زیىكٙطی abضا ثب ٕٞبٖ ٘كب٘ی و ٝلجال سٛيیح زاز ٜقس ،ایؼبز ٕ٘ٛزیٓ .ؾذؽ ث ٝػفز ٞبی
وّیسٔ/مساض آٖ ،ثب ٔكرم وطزٖ وّیسی و ٝزضػٍّٕط ایٙسوؽ ث ٝوبض ضفش ٝاؾز ،ثٕٞ ٝبٖ نٛضسی و ٝزض
ٔجحض ِیؿز ٞب ٚچٙسسبیی ٞب ثحض قس ،زؾشطؾی دیسا ٕ٘ٛزیٓ ٚ .ايح اؾز و٘ ٝحٛی ) (syntaxو ٝثطای
زیىكٙطی ث ٝوبض ضفش ٝاؾز ،ثؿیبض ؾبز ٜاؾز .
ثطای ايبف ٝوطزٖ ػفز ٞبی وّیسٔ/مساض ػسیس ٔ ،ی سٛا٘یٓ ایٗ وبض ضا ث ٝؾبزٌی ثب اؾشفبز ٜاظ ػٍّٕط ایٙسوؽ ،
ثطای زؾشطؾی ث ٝیه وّیس ٔ ٚمساضزٞی ث ٝآٖ ث ٝوبض ثجطیٓ ٕٞ .بٖ َٛضی و ٝثطای Guidoزض ٔظبَ ثبال ا٘ؼبْ
زازیٓ .
delحصف وٙیٓ .ثطای ایٗ وبض ،ث ٝؾبزٌی ٔب ٔی سٛا٘یٓ ػفز ٞبی وّیسٔ/مساض ضا ثب اؾشفبز ٜاظ زؾشٛض
زیىكٙطی ٚػٍّٕط ایٙسوؽ ضا ثطای وّیسی ؤ ٝی ذٛاٞس حصف قٛز ٔكرم ٕ٘ٛز ٚ ٜؾذؽ آٖ ضا ث ٝزؾشٛض
ٔdelی فطؾشیٓ .ثطای ایٗ ػُٕ ٘ ،یبظی ٘یؿز ؤ ٝمساض ٔطسجٍ ثب وّیس ضا ثسا٘یٓ .
ؾذؽ ٔ ،ب ثٞ ٝطیه اظ ػفز ٞبی وّیسٔ/مساض اظ زیىكٙطی ثب ٔشس itemsاظ قیء زیىكٙطی زؾشطؾی دیسا ٔی
وٙیٓ ،ایٗ ٔشس یه ِیؿز اظ چٙسسبیی ٞبیی ضا وٞ ٝط چٙسسبیی حبٚی یه ػفز اظ آیشٓ ٞبی وّیس ٔ ٚمساض
زیىكٙطی ؾز ضا ثطٔی ٌطزا٘س ٔ ،ب ثب اؾشفبز ٜاظ حّم ٝی ٞ foor .. inط ػفز اظ ایٗ ػفز ٞب ضا ثبظیبثی ٕ٘ٛزٚ ٜ
ث ٝسطسیت ثٔ ٝشغیطٞبیی ث٘ ٝبْ ٘ Addrees ٚ nameؿجز ٔی زٞیٓ ٚؾذؽ ایٗ ٔمبزیط ضا زض یه ثّٛن for
چبح ٔی وٙیٓ .
ٔی سٛا٘یٓ ثب اؾشفبز ٜاظ ػٍّٕط inیب حشی ٔشس has_keyاظ والؼ dictثطضؾی وٙیٓ و ٝآیب یه ػفز ِ
وّیسٔ/مساض زض زیىكٙطی ٚػٛز زاضز یب ذیط .قٕب ٔی سٛا٘یس ثطای ِیؿز وبّٔی اظ ٔشسٞبی والؼ dict
ٔؿشٙسار آٖ ضا ثب اؾشفبز ٜاظ زؾشٛض )ٔ help(dictالحظٕ٘ ٝبئیس .
دیکشٌزی ٍ آرگَهبى ّبی کلیذی ٘ .ىش ٝایی زض حبقی ، ٝاٌط قٕب اظ آضٌٔٛبٖ ٞبی وّیسی زض سبثغ سبٖ
اؾشفبز ٜوطز ٜثبقیس ،زض ٚالغ اظ زیىكٙطی اؾشفبز ٜوطز ٜایس ! وبفیؿز زض ایٗ ٔٛضز فىط وٙیس .ػفز ٞبی
وّیسٔ/مساض سٛؾٍ قٕب زض ِیؿز دبضأشطٞبی سؼطیف سبثغ ٔكرم ٔی ق٘ٛس ٚ ،آٖ ٌبٍٙٞ ٜبٔی و ٝزض زاذُ سبثغ
سبٖ ثٔ ٝشغیطٞب زؾشطؾی دیسا ٔی وٙیس ،ایٗ زلیمب ٕٞبٖ زؾشطؾی ث ٝوّیسٞبی یه زیىكٙطی ؾز ( .و ٝزض
انُالح َطاحی وبٔذبیّط ٘ symbol tableبٔیسٔ ٜی قٛز )
@PythonForever
دًجبلِ ّب
بییٞ یػٌیٚ ٝ چٚ سٙؿشٞ ٝب چٞ ِٝ أب ز٘جب، سٙؿشٞ بٞ ِٝبیی اظ ز٘جبٞ َ ٔظب، بٞ ٝ ضقشٚ بٞ سسبییٙ چ، بٞ ِیؿز
ٓا٘یٛز ثشٛ ثبػض ٔی قٝ(وindexing) سوؽ ٌصاضیٙب ػجبضسؿز اظ ػٍّٕط ایٞ ِٝیػٌی انّی اظ ز٘جبٚ ٚزاض٘س ؟ ز
زٛ ثبػض ٔی قٝ(وslicing) ٖ وطزٝ ػٍّٕطسىٚ ٓیٙ زؾشطؾی دیسا وِٝ یه آیشٓ ذبل زض ز٘جبٝٔؿشمیٕب ث
. ضاِٝی یه ثرف اظ ز٘جبٙ یؼ، ٓضیٚ ضا ثسؾز آٝ اظ ضقشٝا٘یٓ یه سىٛثش
#!/usr/bin/python
# Filename: seq.py
# Slicing on a list
print 'Item 1 to 3 is', shoplist[1:3]
print 'Item 2 to end is', shoplist[2:]
print 'Item 1 to -1 is', shoplist[1:-1]
print 'Item start to end is', shoplist[:]
# Slicing on a string
name = 'swaroop'
print 'characters 1 to 3 is', name[1:3]
print 'characters 2 to end is', name[2:]
print 'characters 1 to -1 is', name[1:-1]
print 'characters start to end is', name[:]
@PythonForever
خزٍجی
زض اثشسا ،چٍٍ٘ٛی اؾشفبز ٜاظ ایٙسوؽ ،ثطای ٌطفشٗ سه آیشٓ ٞبیی اظ ز٘جبِ ٝضا ٔالحظٔ ٝی وٙیٓ .و ٝث ٝایٗ
ُّٔت ٕٞچٙیٗ ثؼٛٙاٖ ػٍّٕط ٘subscriptionیع اقبضٔ ٜی قٛز ٞ .ط ٌب ٜو ٝقٕب یه ػسز زض زاذُ ػفز
ثطاوز ثطای یه ز٘جبِٔ ٝكرم ٔی وٙیس ،دبیش ٖٛآیشٓ ٔطث ٌٛث ٝآٖ ٔٛلؼیز زض ز٘جبِ ٝضا ثطای قٕب ثسؾز ٔی
آٚضز .یبزسبٖ ثبقس و ٝدبیش ٖٛػسز قٕبضـ ضا اظ 0قطٚع ٔی وٙس .ثٙبثطایٗ ،shoplit[0] ،اِٚیٗ آیشٓ ٚ
] ،shoplist[3چٟبضٔیٗ آیشٓ زضز٘جبِ ٝی shoplistضا ثسؾز ٔی آٚضز .
ٕٞچٙیٗ ایٙسوؽ ٔی سٛا٘س یه ػسز ٔٙفی ثبقس ،و ٝزض ایٗ ٔٛضز ٛٔ ،لؼیشف اظ آذط ز٘جبِٔ ٝحبؾجٔ ٝی قٛز .
ثٙبثطایٗ ] shoplist[-1ث ٝآذطیٗ آیشٓ shoplist[-2] ٚث ٝزٔٚیٗ آیشٓ اظ آذط ،زض ز٘جبِ ٝاقبضٔ ٜی وٙس .
ػٍّٕط ، slicingثب ٘بْ ز٘جبِ ٚ ٝثس٘جبَ آٖ یه ػفز اظ اػساز اذشیبضی و ٝثب ػالٔز :زض ٖٚػفز ثطاوز اظ ٓٞ
ػسا قس ٜا٘س ٔ ،كرم ٔی قٛز .زلز وٙیس و ٝایٗ ُّٔت ثؿیبض ظیبز قجی ٝث ٝػٍّٕط ایٙسوؽ ٌصاضی ٞؿز وٝ
سب ثسیٗ ػب اظ آٖ اؾشفبزٔ ٜی وطزیٓ ٚ .یبزسبٖ ثبقس و ٝاػساز اذشیبضی ٞؿشٙس ،أب ػالٔز :ایٗ َٛض ٘یؿز .
@PythonForever
اِٚیٗ ػسز ( دیف اظ ػالٔز ) :زض ػٍّٕط slicingثٛٔ ٝلؼیشی و ٝسى ٝوطزٖ اظ آ٘ؼب قطٚع ٔی قٛز ،اقبضٔ ٜی
وٙس ٚػسز ز ( ْٚثؼس اظ ػالٔز ) ٔ :كرم ٔی وٙس و ٝزض وؼب سى ٝوطزٖ دبیبٖ یبثس .اٌط اِٚیٗ ػسز ٔكرم
ٍ٘طزز ،دبیش ٖٛاظ اثشسای ز٘جبِ ٝقطٚع ذٛاٞس وطز ٚاٌط زٔٚیٗ ػسز ٔكرم ٘كٛز ،زض ا٘شٟبی ز٘جبِ ٝدبیبٖ ٔی
یبثس .سٛػ ٝوٙیس و ، slice ٝاظ ٔٛلؼیز قطٚع سب دیف اظ ٔٛلؼیز دبیبٖ ضا ثط ٔی ٌطزا٘س ،ثسیٗ ٔؼٙی و ٝزض سىٝ
ی ز٘جبِٛٔ ، ٝلؼیز قطٚع ضا قبُٔ ٔی قٛز ِٚی ٔٛلؼیز دبیبٖ ضا قبُٔ ٕ٘ی قٛز .
ثٙبثطایٗ ،زؾشٛض ] shoplist[1:3یه سى ٝاظ ز٘جبِ ٝضا و ٝقطٚػف اظ ٔٛلؼیز 1اؾز ( ،و ٝزاضای ٔىبٖ 2
ٞؿز ) ِٚی دبیب٘ف زض ٔىبٖ 3اؾز ضا ثط ٔی ٌطزا٘س ،دؽ ثٙبثطایٗ یه سى ٝاظ ز ٚآیشٓ ضا ثطٔی ٌطزا٘س ٚ
زؾشٛض ]shoplist[:یه وذی اظ سٕبْ ز٘جبِ ٝضا ثط ٔی ٌطزا٘س .
سطویت ٞبی ٌ٘ٛبٌ٘ٛی اظ سى ٝوطزٖ ضقش ٝضا ثب اسىب ث ٝسؼبّٔی ثٛزٖ ٔفؿطدبیش ٖٛأشحبٖ وٙیس ،چطا و٘ ٝشیؼ ٝی
زؾشٛضار ٚاضز ٜقس ٜضا فٛضا زض ذٍ فطٔبٖ ٔالحظ ٝذٛاٞیس وطز .یه ٘ىش ٝثب اضظـ زض ٔٛضز ز٘جبِٞ ٝب ایٙؿز وٝ
ث ٝیه ضٚـ یىؿبٖ ٔی سٛا٘یس ث ٝسٕبٔی چٙسسبیی ٞب ِ ،یؿز ٞب ٚضقشٞ ٝب زؾشطؾی یبثیس .
هزجغ ّب
رجَع ٔی ٚلشی قٕب یه قیء ضا ایؼبز ٔی وٙیس ٚیه ٔشغیط ضا ث ٝآٖ ٘ؿجز ٔی زٞیس ٔ ،شغیط فمٍ ث ٝقیء
وٙس ٘ ٚكبٖ زٙٞس ٜی ذٛز قیء ٘یؿز ! و ٝایٗ یؼٙی ٘ ،بْ ٔشغیط ث ٝثركی اظ حبفظ ٝی وبٔذیٛسط قٕب و ٝآٖ
قیء زض آ٘ؼب شذیط ٜقس ٜاؾز اقبضٔ ٜی وٙس ٚ .ثؼٛٙاٖ bindقسٖ یه ٘بْ ث ٝیه قیء اظ آٖ ٘بْ ثطزٔ ٜی
قٛز .
زضوُ ،الظْ ٘یؿز وٍ٘ ٝطاٖ ایٗ ٔٛيٛع ثبقیس ،أب سبطیطار ظطیفی اظ ٔطػغ ٞب )ٞ (referencesؿز ؤ ٝی
ثبیؿز اظ آٖ آٌب ٜثبقیس ،ایٗ ُّٔت ثب ٔظبَ ظیط ضٚقٗ ٔی قٛز .
#!/usr/bin/python
# Filename: reference.py
@PythonForever
mylist = shoplist # mylist is just another name
pointing to the same object!
خزٍجی
$ python reference.py
Simple Assignment
shoplist is ['mango', 'carrot', 'banana']
mylist is ['mango', 'carrot', 'banana']
Copy by making a full slice
shoplist is ['mango', 'carrot', 'banana']
mylist is ['carrot', 'banana']
ذبَط ثؿذبضیسٝ ٔی ثبیؿز ثٝ چیعی و. اؾزٜ آٔسcomment ضرٛ ثهٝٔز ثط٘بٛيیحبر ایٗ ٔظبَ زض ذٛاوظط س
اقیبءٝ٘ ٚ ( یسٙ ایؼبز وcomplex ب یب اقیبء یٞ ِٝاع ز٘جبٛ٘ یب زیٍط اٚ اٌط یه وذی اظ یه ِیؿشیٝایٗ اؾز و
ْب ٘بٟٙ سٝ اٌط و. یسٙ وٜ ؾبظی ثطای ا٘ؼبْ وذی اؾشفبزٝ اظ ػٍّٕط سىٝ ٔی ثبیؿز و، ) بٞinteger ُ ٔظٜؾبز
@PythonForever
ٔشغیطی ضا ث٘ ٝبْ زیٍطی ٘ؿجز ثسٞیس ٞ ،ط زٚی آٟ٘ب ث ٝیه قیء یىؿبٖ اقبض ٜذٛاٙٞس وطز ٚایٗ زض نٛضسیىٝ
ٔطالت ٘جبقیس ٔ ،ی سٛا٘س ٔٙؼط ث ٝثٛػٛز آٔسٖ ا٘ٛاع ٔكىالسی ثكٛز .
ث ٝذبَط ثؿذبضیس و ٝزؾشٛض ا٘شؿبة ثطای ِیؿز ٞب یه وذی اظ آٖ ٞب ضا ایؼبز ٕ٘ی وٙس .قٕب ٔی ثبیؿز اظ
ػٍّٕط سى ٝؾبظی ثطای ایؼبز یه وذی اظ ز٘جبِ ٝاؾشفبز ٜوٙیس .
ٔب زضثبض ٜی ػطئیبر ضقشٞ ٝب ثحض وطزیٓ .چ ٝچیع ثیكشط زیٍطی ثطای زا٘ؿشٗ ٞؿز ؟ ذت ،آیب ٔی زا٘یس وٝ
ضقشٞ ٝب ٓٞاقیبیی ٞؿشٙس ٚزض ٘شیؼٔ ٝشسٞبیی زاض٘س و ٝثطٚی ثرف ٞبیی اظ ضقش. ٝ
ٞ strؿشٙس .ثطذی اظ ضقشٞ ٝبیی و ٝقٕب زض ثط٘بٔٞ ٝبی سبٖ اؾشفبزٔ ٜی وٙیس ٍٕٞ ،ی اقیبیی اظ والؼ
ٔشسٞبی ٔفیس ایٗ والؼ زض ٔظبَ ثؼسی ٘كبٖ زازٔ ٜی ق٘ٛس .ثطای ِیؿز وبّٔی اظ ٔشسٞبی آٖ ذطٚػی زؾشٛض
)help(strضا ٔالحظٕ٘ ٝبئیس .
هتذّبی رشتِ
#!/usr/bin/python
# Filename: str_methods.py
if name.startswith('Swa'):
'"print 'Yes, the string starts with "Swa
@PythonForever
'"print 'Yes, it contains the string "war
'_*_' = delimiter
]'mylist = ['Brazil', 'Russia', 'India', 'China
)print delimiter.join(mylist
خزٍجی
زضایٗ ٔظبَ ،زض ػُٕ ثؿیبضی اظ ٔشسٞبی ضقش ٝضا ٔی ثیٙیٓ ٔ .شس startswithثطای ٔكرم وطزٖ ایٙى ٝآیب
ضقش ٝی انّی ثب ضقش ٝی زاز ٜقس ٜآغبظ قس ٜاؾز یب ذیط ث ٝوبض ٔی ضٚز .ػٍّٕط ، inثطای ثطای ثطضؾی ایٙىٝ
ضقش ٝزاز ٜقس ٜثركی اظ ضقش ٝانّی ٔی ثبقس یب ذیط ث ٝوبض ٔی ضٚز .
ٔشس findثطای دیساوطزٖ ٔٛلؼیز ضقش ٝزاز ٜقس ٜزض ضقش ٝانّی ثىبض ٔی ضٚز ٚ ،اٌط ٔٛفك ث ٝدیساوطزٖ ایٗ
ظیط ضقش ٝزض ضقش ٝانّی ٘كٛز ٔ ،مساض 1 -ضا ثط ٔی ٌطزا٘س ٕٞ .چٙیٗ والؼ strزاضای یه ٔشس ثؿیبض ػبِی ثٝ
٘بْ ٔ joinی ثبقس و ٝثطای الحبق آیشٓ ٞبی یه ؾبذشٕبٖ زاز ٜی ز٘جبِ ٝایی ث ٝیىسیٍط ثب اسىب ث ٝضقش ٝایی وٝ
٘مف ػساوٙٙس ٜی ٔبثیٗ ٞط آیشٓ ضا زض ز٘جبِ ٝزاضز ث ٝوبض ٔی ضٚز ٚ ،زض ٘شیؼ ٝیه ضقش ٝی ثعضي سطی ضا و ٝاظ
آٖ سِٛیس ٔی قٛز ضا ثطٔی ٌطزا٘س .
خالصِ
ٔب ػعئیبر ا٘ٛاع ٔرشّفی اظ ؾبذشبضٞبی زاز ٜایی سٛوبض ضا زض دبیش ٖٛثطضؾی وطزیٓ .ایٗ ؾبذشٕبٖ ٞبی زاز ٜثطای
٘ٛقشٗ ثط٘بٔٞ ٝبیی ثب ؾبیعٞبی ٔؼمٙٔ َٛبؾت ا٘س .
او ٖٛٙسب ثسیٗ ػب ٔ ،ب ثب ثؿیبضی اظ ان َٛدبی ٝایی دبیش ٖٛآقٙب قس ٜایٓ ،زض فهُ ثؼسی ذٛاٞیٓ زیس و ٝچُٛض
یه ثط٘بٔ ٝی ٚالؼی ث ٝظثبٖ دبیش ٖٛضا َطاحی ٚدیبز ٜؾبظی ٔی ٕ٘بئیٓ .
@PythonForever
کتبة یک ثبیت اس پبیتَى.فصل دّن.حل هسبئلًَ.شتي ثزًبهِ ایی ثِ سثبى پبیتَى
فْزست هٌذرجبت
1فهُ ز. ٓٞحُ ٔؿبئُ ٛ٘ .قشٗ ثط٘بٔ ٝایی ث ٝظثبٖ دبیشٖٛ
9ذالنٝ
فصل دّن .حل هسبئل ًَ .شتي ثزًبهِ ایی ثِ سثبى پبیتَى
ٔب ثرف ٞبی ٔشٛٙػی اظ ظثبٖ ثط٘بٔٛ٘ ٝیؿی دبیش ٖٛضا سكطیح وطزیٓ ٚاؤ ٖٛٙی ذٛاٞیٓ ثب َطاحی ٛ٘ ٚقشٗ یه
ثط٘بٔ ٝو ٝلطاض اؾز وبضٔفیسی ضا ثطای ٔب ا٘ؼبْ ثسٞس ،ثجیٙیٓ و ٝچُٛض ٔی سٛا٘یٓ سٕبٔی ایٗ ثرف ٞب ضا
ثسضؾشی زضوٙبض ٓٞلطاض زٞیٓ .
هسئلِ
ٔؿئّ ٝی ٔٛضز ٘ظط ٔب ػجبضسؿز اظ ٔ ٗٔ " :ی ذٛا ٓٞثط٘بٔ ٝایی ثطای دكشیجبٖ ٌیطی اظ سٕبٔی فبیُ ٞبی
يطٚضی اْ ایؼبز و." ٓٙ
ٞطچٙس ،ایٗ ٔؿئّ ٝی ؾبز ٜایی ؾز ِٚ ،ی اَالػبر ٔٛضز ٘یبظ ضا ثطای قطٚع حُ ٔؿئّ ٝزض اذشیبض ٔب لطاض ٕ٘ی
زٞس .زض ٚالغ تجشیِ ٍ تحلیل ثیكشطی ٔٛضز ٘یبظ اؾز .ثطای ٔظبَ ،ث ٝچ ٝنٛضر ثبیس ٔكرم وٙیٓ و ٝوساْ
فبیُ ٞب قبُٔ دكشیجبٖ ٌیطی ٔی ق٘ٛس ؟ ایٗ فبیُ ٞب ث ٝچ ٝنٛضر زض فبیُ دكشیجبٖ شذیطٔ ٜی ق٘ٛس ؟ ٚفبیُ
دكشیجبٖ سٟی ٝقس ٜزض وؼب شذیطٔ ٜی قٛز ؟
@PythonForever
ثؼس اظ سؼعی ٚ ٝسحّیُ ٔٙبؾت ٔؿئّ ، ٝثط٘بٔٔ ٝبٖ ضا طزاحی ٔی وٙیٓ ٔ .ب ِیؿشی اظ ٘ح ٜٛی ػّٕىطز ثط٘بٔٝ
ایؼبز ٔی وٙیٓ .زض ایٗ ٔٛضز ِ ٗٔ ،یؿز ظیط ضا ثهٛضسی ؤ ٝی ذٛا ٓٞثط٘بٔ ٝوبض وٙس ،ایؼبز وطز ٜاْ .اٌط قٕب
َطاحی ثط٘بٔ ٝضا ثط ػٟس ٜثٍیطیس ٕٔ ،ىٗ اؾز و ٝثب چٙیٗ ٔٛاضز یىؿب٘ی و ٝزض ِیؿز ظیط آٔس ٜاؾز ضٚث ٝضٚ
٘كٛیس – ٞط قرهی ضٚـ ذبل ذٛزـ ضا ثطای ا٘ؼبْ ایٗ وبضزاضز ٚ ،زضؾز ٞ ٓٞؿز .
٘ بْ فبیُ ٞب ٚزایطوشٛضی ٞبیی ؤ ٝی ثبیؿز اظ آٟ٘ب ٘ؿر ٝی دكشیجبٖ ٌطفش ٝقٛز زض یه ِیؿز
ٔكرم ٔی ق٘ٛس .
فبیُ دكشیجبٖ سٟی ٝقسٔ ٜی ثبیؿز زض یه زایطوشٛضی انّی شذیط ٜقٛز .
فبیُ ٞبی دكشیب٘ی ٌطفش ٝقس ٜزض زاذُ یه فبیُ zipلطاض ٔی ٌیط٘س .
زض ٘بْ فبیُ آضقی ، (zip) ٛسبضید ٚؾبػز فؼّی ضا شوط ٔی وٙیٓ .
ٔ ب اظ زؾشٛضاؾشب٘ساضز zipو ٝزض سٛظیغ ٞبی اؾشب٘ساضز ی٘ٛیىؽ ِ /یٛٙوؽ ،لبثُ زؾشطؼ اؾز ،
ثطای ایؼبز فبیُ دكشیجبٖ وٕه ٔی ٌیطیٓ .وبضثطاٖ ٚیٙسٚظ ٔی سٛا٘ٙس اظ ثط٘بٔ ٝی Info-Zip
اؾشفبز ٜوٙٙس .سٛػ ٝوٙیس و ٝقٕب ٔی سٛا٘یس اظ ٞط ثط٘بٔ ٝی فكطز ٜؾبظی و ٝاظ زؾشٛضار ذٍ
فطٔبٖ دكشیجب٘ی ٔی وٙس ،اؾشفبز ٜوٙیس ،چطا ؤ ٝی سٛا٘یٓ اظ َطیك ثط٘بٔٔ ٝبٖ زؾشٛضار ضا ث ٝآٖ
ثط٘بٔ ٝاضؾبَ وٙیٓ .
حل هسئلِ
اظ آ٘ؼبیی وَ ٝطاحی ثط٘بٔ ٝی ٔب ث ٝیه ٔطحّ ٝی ٔٙبؾت ٚدبیساض ضؾیس ،اؤ ٖٛٙی سٛا٘یٓ وس٘ٛیؿی ضا ،و ٝزض
ٚالغ یه دیبز ٜؾبظی اظ حُ ٔؿئّٔ ٝبٖ ٔی ثبقس ضا آغبظ وٙیٓ .
#!/usr/bin/python
# Filename: backup_ver1.py
import os
import time
@PythonForever
# If you are using Windows, use source =
[r'C:\Documents', r'D:\Work'] or something like that
خزٍجی
$ python backup_ver1.py
Successful backup to /mnt/e/backup/20041208073244.zip
. ٓیٙ ٔبٖ ضا أشحبٖ ٔی وٝٔ زضؾشی ػّٕىطز ثط٘بٚ نحزٝ و، ٓؿشیٞ ٝٔ ی (فبظ) سؿز ثط٘بّٝ ٔب زض ٔطح، ٖٛٙاو
یٙ ثسیٗ ٔؼ، ٓیٙ( وDebug) ضا اقىبَ ظزاییٝٔ ٔب ٔی ثبیؿز ثط٘ب، سٙ ثسضؾشی وبض ٘ىٝٔ ثط٘بّٝاٌط زضایٗ ٔطح
. ٓیٙ ضا ضفغ وٝٔ(ثط٘بbug) بیٞ ذُبٝو
@PythonForever
ًحَُ ی ػولکزد ایي هثبل
قٕب ٔالحظٔ ٝی ٕ٘بئیس و ٝچُٛض ٔب زض یه ضٚـ ٔطحّ ٝثٔ ٝطحَّ ٝطاحی ٔبٖ ضا ث ٝؾٕز سِٛیس وس ؾٛق ٔی
زٞیٓ ٔ .ب اظ ٔبغٞ َٚبی time ٚ osزض ثط٘بٔ ٝوٕه ذٛاٞیٓ ٌطفز ،اظ ایٙط ٚآٟ٘ب ضا زض اثشسا ٚاضز )(import
ثط٘بٔ ٝوطزیٓ .ؾذؽ ،زض ِیؿز sourceفبیُ ٞب ٚزایطوشٛضی ٞبیی و ٝلطاض اؾز اظ آٖ ٞب ٘ؿر ٝی دكشیجبٖ
ٌطفش ٝقٛز ضا ٔكرم وطزیٓ ٔ .ؿیط زایطوشٛضی ٔمهس ٘یع ،و ٝسٕبٔی فبیُ ٞبی دكشیب٘ی زض آٖ شذیطٔ ٜی
قٛز ضا زض ٔشغیط ٔ target_dictكرم ٕ٘ٛز ٜایٓ ٘ .بْ فبیُ آضقیٛی ) (zipو ٝلهس ایؼبز آٖ ضا زاضیٓ ،ثط
اؾبؼ سبضید ٚظٔبٖ فؼّی ایی ٞؿز و ٝاظ َطیك سبثغ ()time.strftimeثسؾز ٔی آٚضیٓ .ایٗ فبیُ آضقیٛ
ٕٞچٙیٗ زاضای دؿ٘ٛس ٔzip.ی ثبقس ٚزض زایطوشٛضی target_dirشذیط ٜذٛاٞس قس .
سبثغ ٔ ، ()time.strftimeكره ٝایی ) (specificationضا ثؼٛٙاٖ آضٌٔٛبٖ ٚضٚزی ثهٛضسی ؤ ٝب زض ٔظبَ ثبال
اؾشفبز ٜوطزیٓ ٔی دصیطز .ث ٝایٗ نٛضر ؤ ٝكره ٝی y%ثب ؾبَ ػبضی ػبیٍعیٗ ذٛاٞس قس .ؾبَ ثسٖٚ
ؾسٔ ٜی ثبقس ٚػسزی نحیح اظ 00سب 99اؾز ٔ .كره ٝی ، %mثب ٔب ٜػبضی ػبیٍعیٗ ذٛاٞس قس ٔ ،بٜ
ثهٛضر ػسزی نحیح اظ 01سب ٔ 12ی ثبقس ِ .یؿز وبّٔی اظ ایٗ ٔكرهٞ ٝب ضا ٔی سٛا٘یس زض ٔؿشٙسار دبیشٖٛ
ٔالحظٕ٘ ٝبئیس .سٛػ ٝوٙیس و ٝایٗ ُّٔت ٔكبثِٚ ( ٝی ٘ ٝیىؿبٖ ) ثب ٔكرهٞ ٝبی ثىبض ضفش ٝزض زؾشٛض print
(و ٝثب یه چٙسسبیی ٕٞطا ٜثٛز ) اؾز .
٘بْ فبیُ ٔ zipمهس ضا ثب اؾشفبز ٜاظ ػٍّٕط +و ٝثبػض اسهبَ ضقشٞ ٝب ثٔ ٓٞ ٝی قٛز ،ایؼبز ٔی ٕ٘بئیٓ .ثسیٗ
ٔؼٙی و ٝایٗ ػٍّٕط ز ٚضقش ٝضا ثىسیٍط اِحبق ٔی وٙس ٚیه ضقش ٝػسیس ضا ثط ٔی ٌطزا٘س .ؾذؽ ضقش ٝی
zip_commandضا و ٝحبٚی زؾشٛضاسی ؾز ؤ ٝی ذٛاٞیٓ اػطا قٛز ضا ایؼبز ٔی وٙیٓ .ثطای ثطضؾی ایٙىٝ
( shellذٍ فطٔبٖ ٚ dosیب سطٔیٙبَ آیب ایٗ زؾشٛض ث ٝزضؾشی اػطا ٔی قٛز یب ذیط ٔی سٛا٘یس آٖ ضا زض
ِیٛٙوؽ )اػطا ٕ٘بئیس .
زؾشٛض zipایی ؤ ٝب زضایٙؼب اؾشفبزٕٛ٘ ٜز ٜایٓ زاضای چٙسیٗ دبضٔشط ٚؾٛئیچ اضؾبِی اؾز .دبضأشط – qثطای
ٔكرم وطزٖ ایٗ اؾز و ٝزؾشٛض zipث ٝنٛضر ؾبوز ) (quietlyوبض وٙس ٌ .عی ٝٙی –ٔ rؼیٗ ٔی وٙس وٝ
زؾشٛض ٔ zipی ثبیؿز ثهٛضر ثبظٌكشی ثطٚی زایطوشٛضی ٞب ػُٕ وٙس ،ثسیٗ ٔؼٙی ؤ ٝی ثبیؿز زایطوشٛضی
ٞبی زاذّی ٚفبیُ ٞبی زض ٖٚزایطوشٛضی ٞبی زاذّی ضا ٘یع قبُٔ قٛز .ایٗ زٌ ٚعی ٝٙث ٝضٚـ وٛسبٞشطی
ثهٛضر –ٛ٘ qrقشٔ ٝی ق٘ٛس .ثس٘جبَ ٌعیٞ ٝٙب ٘بْ فبیُ آضقیٛی ) (zipؤ ٝی ذٛاٞس ایؼبز قٛز ِ ٚیؿز فبیُ
sourceضا ثب ٞب ٚزایطوشٛضی ٞبیی و ٝلطاض اؾز ٘ؿر ٝی دكشیجبٖ اظ آٟ٘ب ٌطفش ٝقٛز ٔ ،ی آیس ٔ .ب ِیؿز
ضٚقی سبظ ٜو ٝاو ٖٛٙزض ایٙؼب ٔالحظٔ ٝی ٕ٘بئیس ،ثب وٕه ٔشس joinؤ ٝطث ٌٛث ٝضقشٞ ٝب اؾز ،ث ٝضقشٝ
سجسیُ ٕ٘ٛزیٓ .
@PythonForever
زض ٟ٘بیز ایٗ زؾشٛض ایؼبز قس ٜضا ثب اؾشفبز ٜاظ سبثغ os.systemاػطا ٔی وٙیٓ ،زض نٛضسیى ٝایٗ زؾشٛض ثب
ٔٛفمیز زض ؾیؿشٓ اػطا قٛز ٙٔ ،ظٛض زض – ٔshellمساض 0ضا ثطٔی ٌطزا٘س ٚزض غیطایٙهٛضر قٕبض ٜی ذُبی
اسفبق افشبز ٜضا ثط ٔی ٌطزا٘س .
ٌٛٙٔ ٚث ٝذطٚػی ایٗ زؾشٛض ٔ ،ب دیغبْ ٔٙبؾت ضا و٘ ٝؿر ٝی دكشیجبٖ ثب ٔٛفمیز یب ثب قىؿز ایؼبز قسٜ
اؾز ضا ٕ٘بیف ٔی زٞیٓ .
ثّ ، ٝاؤ ٖٛٙب ٔٛفك قسیٓ ثط٘بٔ ٝایی ثٛٙیؿیٓ و ٝاظ فبیُ ٞبی ٔٔ ٟٓب ٘ؿر ٝی دكشیجبٖ ٔی ٌیطز !
قٕب ٔی سٛا٘یس ِیؿز ٚ sourceزایطوشٛضی targetضا ثطٚی ٞط فبیُ ٚزایطوشٛضی زِرٛاٞی سٙظیٓ وٙیس ،أب
زض ٔٛضز ٚیٙسٚظ ٔی ثبیؿز وٕی ٔطالت ثبقیس .زِیّف ایٙؿز وٚ ٝیٙسٚظ اظ وبضاوشط ( \ ) ثطای ػساوٙٙس ٜی
ٔؿیط اؾشفبزٔ ٜی وٙس ،أب دبیش ٖٛاظ ایٗ وبضاوشط ( \ ) ثطای ٕ٘بیف ز٘جبِٞ ٝبی ٌطیع )(escape sequences
اؾشفبزٔ ٜی وٙس !
\ ) زیٍطثؼٛٙاٖ escape اظ ایٙط ، ٚثطای ٕ٘بیف وبضاوشط ) \ ( ٔی ثبیؿز دیف اظ آٖ اظ یه وبضاوشط (
sequenceاؾشفبز ٜوٙیس ٚیب ایٙى ٝاظ raw stringsاؾشفبز ٜوٙیس .دؽ ثطای ٔظبَ ،ثبیس یب ث ٝایٗ نٛضر
' ٚ'C:\\Doumentsیب ثهٛضر '\ r'C:\Documentsثٛٙیؿس ٘ ٚ ،جبیس ث ٝقىُ ' 'C:\Docmentsثٛٙیؿیس ،
چطا و ٝزضایٗ نٛضر قٕب اظ یه ٘ escape sequenceبٔف ( D\ )ْٕٟٛاؾشفبز ٜوطز ٜایس !
او ٖٛٙؤ ٝب ثب ایٗ ثط٘بٔ ٝی دكشیجبٖ ٌیط وبض وطزیٓ ٔ ،ی سٛا٘یٓ اظ آٖ زض ٞط ػبیی ؤ ٝی ذٛاٞیٓ اظ فبیُ ٞب
٘ؿر ٝی دكشیجبٖ ٌطفش ٝقٛز ،اؾشفبز ٜوٙیٓ .وبضثطاٖ ٘ Unix\Linuxیع اظ ضٚـ ٞبی لبثُ اػطایی و ٝاذیطا
سٛيیح زاز ٜقس ثطای اػطای ثط٘بٔ ٝی دكشیجبٖ ٌیط زض ٞط ظٔبٖ ٞ ٚط ٔىب٘ی ٔی سٛا٘ٙس اؾشفبز ٜوٙٙس .ایٗ لًیٝ
ثؼٛٙاٖ فبظ ػّٕىطز ) ٚ (operationیب فبظ سٛؾؼ ( deploymet ) ٝاظ ٘طْ افعاض ٘بْ ثطزٔ ٜی قٛز .
ثط٘بٔ ٝی ثبال ثسضؾشی وبض ٔی وٙس ِٚ ،ی (ٔؼٕٛال) اِٚیٗ ثط٘بٔٞ ٝب آُ٘ٛض و ٝا٘شظبض زاضیٓ وبض ٕ٘ی وٙٙس .ثطای
ٔظبَ ،اٌط ثسضؾشی َطاحی ثط٘بٔ ٝضا ا٘ؼبْ ٘ساز ٜثبقیس ٕٔ ،ىٗ اؾز ٔكىالسی دیف ثیبیس ،یب اٌط وسی ضا
اقشجبٞی سبیخ وطز ٜثبقیس ٚیب چیعٞبی زیٍط .زض ایٗ قطایٍ ٔی ثبیؿز و ٝث ٝفبظ َطاحی ثطٌطزیس ٚیب قبیس
ٔؼجٛض ثبقیس ثط٘بٔ ٝسبٖ ضا اقىبَ ظزایی ٕ٘بئیس .
@PythonForever
ًسخِ ی دٍم ثزًبهِ
.ایٗ ٘ؿر ٝی ا َٚاظ ثط٘بٔ ٝی ٔب وبض وطز .أب ٔ ،ی ذٛاٞیٓ آٖ ضا وٕی ثٟی ٚ ٝٙانالح وٙیٓ سب ثٟشط وبضوٙس
لًی ٝفبظ ًگْذاری )٘(maintenanceطْ افعاض ٘بٔیسٔ ٜی قٛز .
یىی اظ ثٟجٛزٞبیی و ٗٔ ٝاحؿبؼ ٔی وٛٔ ٓٙطط اؾز ،ثٟشط وطزٖ ٔىب٘یؿٓ ٘بْ زٞی فبیُ اؾز – ث ٝایٗ نٛضر
و ٝاظ ظٔبٖ فؼّی ثؼٛٙاٖ ٘بْ فبیُ اؾشفبز ٜقٛز ٚایٗ فبیُ زض زاذُ زایطوشٛضی لطاض ثٍیطز و ٝثط اؾبؼ سبضید
فؼّی زض زایطوشٛضی انّی دكشیجبٖ ایؼبز ٔی قٛز ،یىی اظ ٔعیز ٞبی ایٗ ضٚـ ایٗ اؾز و ٝدكشیجبٖ ٞبی
سٟی ٝقس ٜی قٕب زض یه ضٚـ ؾّؿّٔ ٝطاسجی شذیطٔ ٜی ق٘ٛس ٚزض٘شیؼٔ ٝسیطیز آٟ٘ب آؾبٖ سط ٔی قٛز .زیٍط
ٔعیز ایٗ ضٚـ وٛسب ٜقسٖ َ٘ َٛبْ فبیُ ٞبؾز ٔ ٚ .عیز زیٍط ایٙؿز و ٝػساؾبظی زایطوشٛضی ٞب ث ٝقٕب
وٕه ٔی وٙس و ٝث ٝآؾب٘ی ٘ؿرٞ ٝبی دكشیجبٖ سٟی ٝقس ٜضا ث ٝاظای ٞط ضٚظ ثطضؾی وٙیس ،چطا وٞ ٝط
زایطوشٛضی سٟٙب زضنٛضسی و٘ ٝؿر ٝی دكشیجب٘ی ثطای آٖ ضٚظ ٌطفش ٝقٛز ،ایؼبز ٔی قٛز .
#!/usr/bin/python
# Filename: backup_ver2.py
import os
import time
@PythonForever
# The current time is the name of the zip archive
now = time.strftime('%H%M%S')
خزٍجی
$ python backup_ver2.py
Successfully created directory /mnt/e/backup/20041208
Successful backup to /mnt/e/backup/20041208/080020.zip
$ python backup_ver2.py
Successful backup to /mnt/e/backup/20041208/080428.zip
ایٗ اؾز، اؾزٜ ضخ زازٝٔ زض ثط٘بٝ سغییطی و. ی لجّی اؾزٝ ٘ؿر، سٕٙ٘بٞ ٝٔ اظ ثط٘بٝبی ایٗ ٘ؿرٞثیكشط وس
ضیٖٛ زایطوشٚظ زضٚ اؾٓ سبضید أطٝضی ثٛ آیب یه زایطوشٝیٓ وٙ ثطضؾی ٔی وos.exists اظ سبثغٜ ثب اؾشفبزٝو
@PythonForever
os.mkdir دكشیجبٖ انّی ٚػٛز زاضز یب ذیط .اٌط چٙیٗ زایطوشٛضی ٔٛػٛز ٘جبقس ،آٖ ضا ثب اؾشفبز ٜاظ سبثغ
ایؼبز ٔی وٙیٓ .
ث ٝوبضثطز ٔشغیط os.sepسٛػ ٝوٙیس – ایٗ ٔشغییط حبٚی وبضاوشط ػساوٙٙس ٜی زایطوشٛضی ُٔبثك ثب ٘ٛع ؾیؿشٓ
ػبُٔ قٕب اؾز .ثسیٗ ٔؼٙی و ، ٝزض ؾیؿشٓ ػبُٔ ِیٛٙوؽ/ی٘ٛیىؽ ثطاثط ثب ' '/اؾز ٚزض ٚیٙسٚظ ثطاثط ثب '\\' ٚ
زض ٔىیٙشبـ ثطاثط ثب وبضاوشط ' ':اؾز .اؾشفبز ٜاظ ٔشغیط os.sepث ٝػبی اؾشفبز ٜی ٔؿشمیٓ اظ ایٗ وبضاوشط ٞب
ثبػض ٔی قٛز ،ثط٘بٔ ٝی قٕب لبثُ حُٕ ثبقس ٚثطٚی ؾیؿشٓ ػبُٔ ٞبی ٔرشّف ث ٝذٛثی وبض وٙس .
٘ؿر ٝی ز ْٚثط٘بٔٚ ٓٞ ٝلشی و ٗٔ ٝث ٝزفؼبر ثطای دكشیجبٖ ٌیطی اظ آٖ اؾشفبز ٜوطزْ ث ٝذٛثی وبض ٔی وٙس ،
أب ٚلشی و ٝفبیُ ٞبی دكشیجبٖ ظیبز ٔی ق٘ٛس ،فٕٟیسْ و ٝدیساوطزٖ ایٗ وٞ ٝط فبیُ دكشیجبٖ ٔطث ٌٛث ٝچٝ
چیعی اؾز ؾرز ٔی قٛز .ثطای ٔظبَ ٗٔ ،یه ؾطی سغییطاسی ضا زض یه ثط٘بٔ ٝیب یه فبیُ ٔطث ٌٛثٝ
وٙفطا٘ؽ ایؼبز ٔی و ، ٓٙؾذؽ ٔی ذٛا ٓٞایٗ چٙیٗ سغییطاسی ضا زض ٘بْ فبیُ آضقیٛی ) (zipوٌ ٝطفشٔ ٝی
قٛز ا٘ؼىبؼ ثس ، ٓٞایٗ وبض ٔی سٛا٘س ث ٝآؾب٘ی ثب اؾشفبز ٜاظ ٌطفشٗ سٛيیحبر وبضثط زض حیٗ ایؼبز ٘ؿر ٝی
دكشیجبٖ ٚزضع آٖ زض ٘بْ فبیُ آضقی ٛثسؾز آیس .
هثبل . 10.3ثزًبهِ ی تْیِ ی ًسخِ ی پشتیجبى – ًسخِ ی سَم ( کِ الجتِ کبر ًوی کٌذ ) !
#!/usr/bin/python
# Filename: backup_ver2.py
import os
import time
@PythonForever
# 3. The files are backed up into a zip file.
# 4. The current day is the name of the subdirectory in
the main directory
today = target_dir + time.strftime('%Y%m%d')
# The current time is the name of the zip archive
now = time.strftime('%H%M%S')
خزٍجی
$ python backup_ver3.py
File "backup_ver3.py", line 25
target = today + os.sep + now + '_' +
^
@PythonForever
SyntaxError: invalid syntax
ایٗ ثط٘بٔ ٝثسضؾشی وبض ٕ٘ی وٙس ! ٔفؿط دبیش ٖٛاػالْ ٔی وٙس و ٝذُبی ٘حٛی ٚػٛز زاضز ،ثسیٗ ٔؼٙی وٝ
ؾبذشبض نحیحی و ٝدبیش ٖٛا٘شظبض زیسٖ آٖ ضا زاقش ٝاؾز ضػبیز ٘كس ٜاؾز ٚ .لشی ؤ ٝب ٔشٛػ ٝی ذُبیی اظ
ؾٛی ٔفؿط دبیشٔ ٖٛی قٛیٓ ،ایٗ ذُب ٔ ،ىب٘ی و ٝذُب زض آٖ ضخ زاز ٜقس ٜاؾز ضا ٘یع ثرٛثی اػالْ ٔی وٙس .
زض٘شیؼ ٝاقىبَ ظزایی ثط٘بٔ ٝضا اظ ٕٞبٖ ذٍ قطٚع ٔی وٙیٓ .
اٌط وٕی ثیكشط زلز وٙیٓ ٔ ،الحظٔ ٝی وٙیٓ و ٝیه ذٍ ُٔٙمی اظ وس ثط٘بٔ ٝزض ز ٚذٍ ٔؼعا قىؿش ٝقسٜ
اؾز ،أب ٔب ٔكرم ٘ىطز ٜایٓ و ٝایٗ زٚذٍ زضازأٔ ٚ ٝشؼّك ث ٝیىسیٍط ٞؿشٙس .ثُٛض وّی ٔفؿط دبیش ٖٛزض
ا٘شٟبی ذٍ ا َٚثب ػٍّٕط ( )+ض ٚث ٝضٔ ٚی قٛز ،ثس ٖٚآ٘ى ٝػّٕ٘ٛسی ثؼس اظایٗ ػٍّٕط ثیبثس ٚاظ ایٙطٕ٘ ٚی زا٘س
و ٝچُٛض ثبیس ازأ ٝثسٞس .ثطای ایٗ ٔٙظٛض ثطای ثیبٖ ٔطسجٍ ثٛزٖ ایٗ ز ٚذٍ ث ٝیىسیٍط ٔی ثبیؿز زض ذٍ
ا َٚاظ وبضاوشط ) \ ( ،اؾشفبز ٜوٙیٓ .دؽ ث ٝایٗ ضٚـ ثط٘بٔٔ ٝبٖ ضا سهحیح ٔی وٙیٓ .ث ٝایٗ وبضی و ٝاوٖٛٙ
ا٘ؼبْ زازیٓ ،ضفغ اقىبَ ثط٘بٔٔ ٝی ٌٛیٙس .
ًسخِ ی چْبرم
#!/usr/bin/python
# Filename: backup_ver2.py
@PythonForever
target_dir = '/mnt/e/backup/' # Remember to change this
to what you will be using
خزٍجی
@PythonForever
$ python backup_ver4.py
Enter a comment --> added new examples
Successful backup to
/mnt/e/backup/20041208/082156_added_new_examples.zip
او ٖٛٙایٗ ثط٘بٔ ٝث ٝزضؾشی وبض ٔی وٙس ! اػبظ ٜثسٞیس ،ثٟجٛزٞبیی ضا و ٝزض ایٗ ثط٘بٔ٘ ٝؿجز ث٘ ٝؿر ٝی ؾْٛ
اػٕبَ وطزیٓ ،ضا ثطضؾی وٙیٓ ٔ .ب سٛيیحبر وبضثط ضا ثب اؾشفبز ٜاظ سبثغ ، raw_inputزضیبفز ٔی وٙیٓ .
ؾذؽ َ َٛضقش ٝضا ثب سبثغ lenثطضؾی ٔی وٙیٓ سب ٔشٛػ ٝقٛیٓ و ٝآیب وبضثط ٚالؼب چیعی ٚاضز وطز ٜاؾز یب
ذیط .اٌط و ٝوبضثط ثٙب ث ٝزالیّی ( ٕٔىٗ اؾز یه دكشیجبٖ ٌیطی ػبزی ثبقس ٚیب سغییطار ذبنی ایؼبز ٘كسٜ
ثبقس ).سٟٙب وّیس Enterضا فكبض زاز ٜثبقس ،ؾذؽ ٔب ثهٛضسی و ٝلجال ضفشبض ٔی وطزیٓ ،ػُٕ ٔی وٙیٓ .
ٚاٌط سٛيیحی سٛؾٍ وبضثط ٚاضز قس ٜثٛز ،ایٗ سٛيیح زض ٘بْ فبیُ آضقی (zip) ٛدیف اظ دؿ٘ٛس .zipزضع ٔی
قٛز ،سٛػ ٝوٙیس ؤ ٝب فًبٞبی ذبِی ٔٛػٛز زض ضقش ٝی سٛيیحبر وبضثط ضا ثب وبضوشط ( _ ) ،ػبیٍعیٗ ٔی
وٙیٓ ،چطا و ٝایٗ وبض ٔسیطیز ٘بْ ٞبی فبیُ ٞب ضا آؾبٖ سط ٔی وٙس .
ثط٘بٔ ٝی چٟبضْ ،ثطای اوظط وبضثطاٖ ث ٝذٛثی وبض ٔی وٙس ،أب ٕٞیكٕٞ ٝچٙبٖ ػب ثطای ثٟجٛز ثط٘بٔٚ ٝػٛز
ذٛاٞس زاقز .ثطای ٔظبَ ٔ ،ی سٛا٘یس ؾُح دبؾرٍٛیی ضاث ٝثط٘بٔ ٝسبٖ ايبف ٝوٙیس ،ث ٝایٗ نٛضر وٌ ٝعی ٝٙی
–vضا ثطای دبؾرٍٛیی وبّٔشط ثط٘بٔٔ ٝكرم وٙیس .
ثٟجٛز ٕٔىٗ زیٍطایٙؿز و ٝاػبظ ٜثسٞیس و ٝزایطوشٛضی ٞب ٚفبیُ ٞبی ايبفی اظ َطیك ذٍ فطٔبٖ ث ٝثط٘بٔٝ
اضؾبَ ق٘ٛس ٔ .ب زض ثط٘بٔ ٝاؾبٔی آٟ٘ب ضا اظ َطیك ِیؿز sys.argvزضیبفز ٔی وٙیٓ ٔ ٚی سٛا٘یٓ ِیؿز آٖ ٞب
ضا ثب ٔشس extendاظ والؼ listثِ ٝیؿز sourceايبف ٝوٙیٓ .
ٚیىی زیٍطاظ ثٟجٛزٞبیی و ٗٔ ٝسطػیح ٔی ز ٓٞا٘ؼبْ قٛز ،ایٙؿز و ٝاظ زؾشٛض tarث ٝػبی زؾشٛض zip
اؾشفبز ٜوٙیٓ .یىی اظ ٔعیز ٞبی ایٗ وبض ایٙؿز وٍٙٞ ٝبٔی و ٝاظ زؾشٛض tarثٕٞ ٝطا gzip ٜاؾشفبزٔ ٜی
وٙیس ،فبیُ دكشیجبٖ ٓٞؾطیؼشط ٓٞ ٚذیّی وٛچه سط ایؼبز ٔی قٛز ٕٞ ٚ .چٙیٗ اٌط ٔٗ ث ٝایٗ فبیُ آضقیٛ
@PythonForever
زض ٚیٙسٚظ احشیبع زاقش ٝثبقٓ WinZip ،ث ٝذٛثی فبیُ ٞبیی ٕٞچ .tar.gz ٖٛضا ازاضٔ ٜی وٙس .زؾشٛض tar
ثُٛض دیف فطو زض اغّت ؾیؿشٓ ٞبی Unix/Linuxزضزؾشطؼ ٔی ثبقس .وبضثطاٖ ٚیٙسٚظ ٔ ٓٞی سٛا٘ٙس آٖ
ضا اظ آزضؼ [] 1زاّ٘ٛز ٘ ٚهت وٙٙس .
زض٘شیؼ ٝثطای اؾشفبز ٜاظ زؾشٛض tarضقش ٝی زؾشٛضی ث ٝنٛضر ظیط زض ٔی آیس :
verbose ،-vضا ٔكرم ٔی وٙس ،ثسیٗ ٔؼٙی و ٝزؾشٛضار ٔی ثبیؿز دبؾرٍٛیی وبّٔشطی زاقشٝ
ثبقٙس .
ٔ ،-zكرم ٔی وٙس و ٝفیّشط ٔ gzipی ثبیؿز اػٕبَ قٛز .
، -fاػجبض زض ایؼبز فبیُ آضقی ٛضا ٔكرم ٔی وٙس ،ثسیٗ ٔؼٙی و ٝاٌط فبیُ ٘ ٓٞبٔی اظ لجُ ٔٛػٛز
~*ایٙؿز و ٝفبیُ آضقی ٛقبُٔ فبیُ ٞبیی و ٝاؾٓ قبٖ ث ~ ٝذشٓ ٔی قٛز ٕ٘ ،ی ثبقس .
هْن
یه ضٚـ ثؿیبض ػبِی ثطای ثٟجٛز ثط٘بٔ ٝایٙؿز و ٝاظ ذٛز ٔبغٞ َٚبی دبیش ٖٛث ٝاؾٓ zipfile ٚ tarfileثطای
ایؼبز فبیُ آضقی ٛاؾشفبز ٜوٙیٓ .ایٗ ٔبغٞ َٚب ػعء وشبثرب٘ ٝی اؾشب٘ساضز دبیشٞ ٖٛؿشٙس ٚزض ٘شیؼ ٓٞ ٝاوٖٛٙ
ثطای اؾشفبز ٜزض زؾشطؼ قٕب ٞؿشٙس .اؾشفبز ٜاظایٗ وشبثرب٘ٞ ٝب اظ ثىبضٌیطی زؾشٛض os.systemو ٝثُٛضوّی
ثطای اؾشفبز ٜسٛنیٕ٘ ٝی قٛز ( ،چطا و ٝایٗ زؾشٛض ثطاحشی ٕٔىٗ اؾز اقشجبٞبر دطٞعی ٝٙایی ضا ثٛػٛز
ثیبٚضز٘ ).یع ػٌّٛیطی ٔی وٙس .
ٞط چٙس و ٗٔ ٝزض ایٙؼب نطفب ث ٝػٟز آٔٛظـ اظ ضٚـ os.systemثطای ایؼبز فبیُ دكشیجبٖ اؾشفبز ٜوطزْ .
@PythonForever
فزآیٌذ تَسؼِ ی ًزم افشار
.ایٗ فبظ ٞب ٔی سٛا٘ٙس ٔب زض ایٗ فهُ زض حیٗ فطآیٙس ٘ٛقشٗ ٘طْ افعاض اظ ٔیبٖ فبظٞبی ٔرشّفی ٌصض وطزیٓ
ثهٛضر ظیط ذالن ٝق٘ٛس :
هْن
ضٚـ دیكٟٙبز قس ٜثطای ٘ٛقشٗ ثط٘بٔٞ ٝب ،ػجبضسؿز اظ قی ٜٛایی ؤ ٝب زض ٘ٛقشٗ ثط٘بٔ ٝی سٟی ٝی ٘ؿر ٝی
دكشیجبٖ آٖ ضا ز٘جبَ ٕ٘ٛزیٓ :
آ٘بِیع َ ٚطاحی ضا ا٘ؼبْ زازیٓ .دیبز ٜؾبظی ضا ثب یه ٘ؿر ٝی ؾبز ٜقطٚع وطزیٓ .آٖ ضا سؿز ٚاقىبَ ظازیی
وطزیٓ .آٖ ضا ثىبضٌطفشیٓ ٚاؾشفبز ٜوطزیٓ سب ُٕٔئٗ قٛیٓ وٕٞ ٝب٘ٙس ا٘شظبضٔبٖ ػُٕ ٔی وٙس .
اوٞ ٖٛٙط ٚیػٌی ؤ ٝی ذٛاٞیس ضا ث ٝثط٘بٔ ٝايبف ٝوٙیس ٚچطذ ٝی ا٘ؼبْ –سؿز – اؾشفبز ٜضا ثطای چٙسیٗ ثبض
سب ػبیی و٘ ٝیبظ ٞؿز سىطاض وٙیس ،ث ٝیبز زاقش ٝثبقیس و٘ ٝطْ افعاض ضقس ٔی وٙٙس ٝ٘ ،ایٙى ٝؾبذش ٝقٛز .
خالصِ
ٔب ٔالحظٕٛ٘ ٝزیٓ و ٝث ٝچ ٝقىُ ثط٘بٔٞ ٝبی دبیش ٖٛزِرٛا ٜذٛزٔبٖ ضا ایؼبز وٙیٓ ٚزضایٗ حیٗ زضٌیط فبظٞبی
ٔرشّفی زض٘ٛقشٗ ثط٘بٔ ٝقسیٓ ٕٞ ٚ .بٖ َٛض و ٝزض ایٗ فهُ زیسیٓ ،قٕب ٓٞایٗ فبظ ٞب ضا زض ایؼبز ثط٘بٔٞ ٝبی
سبٖ ٔفیس ذٛاٞیس یبفز ٚ ،اظ ایٙط ٚزض دبیش ٚ ٖٛثٕٞ ٝبٖ ا٘ساظ ٜزض حُ ٔؿبئُ آؾٛز ٜذٛاٞیس قس .
زض فهُ ثؼسی ٔ ،ب ثط٘بٔٛ٘ ٝیؿی قیء ٌطا ضا ثحض ذٛاٞیٓ وطز .
@PythonForever
کتبة یک ثبیت اس پبیتَى.فصل یبسدّن.ثزًبهِ ًَیسی شیء گزا
فْزست هٌذرجبت
9ذالنٝ
هؼزفی
سب ثسیٗ ػب زض سٕبٔی ثط٘بٔٞ ٝب ،ثطای َطاحی ثط٘بٔٞ ٝبی ٔبٖ ،اظ سٛاثغ ٚیب ثالن ٞبیی اظ زؾشٛضاسی و ٝزازٞ ٜب
( ضا زؾشىبضی ٔی وطز٘س اؾشفبزٔ ٜی وطزیٓ ،ایٗ ضٚـ زض ثط٘بٔٛ٘ ٝیؿی ثؼٛٙاٖ ثط٘بٔٛ٘ ٝیؿی ضٚیٌ ٝطا
) procedure-orientedقٙبذشٔ ٝی قٛز .قی ٜٛی زیٍطی اظ ؾبٔب٘سٞی ثط٘بٔٞ ٝب ٚػٛز زاضز و ٝزازٚ ٜ
ػّٕیبر ثطٚی زاز ٜضا زض وٙبض ٓٞسطویت ٔی وٙس ٚایٗ ز ٚضا زض زاذُ آٖ چیعی لطاض ٔی زٞس و ٝقیء ٘بٔیسٜ
ٔی قٛز .ایٗ قی ٜٛاظ ثط٘بٔٛ٘ ٝیؿی ثؼٛٙاٖ اٍِٛی ثط٘بٔٛ٘ ٝیؿی قیء ٌطا قٙبذشٔ ٝی قٛز .اوظط ٔٛالغ ٕٔىٗ
اؾز و ٝقٕب اظ ثط٘بٔٛ٘ ٝیؿی ؾبذز یبفش ٝاؾشفبز ٜوٙیس ِٚی ظٔب٘ی و ٝلهس ٘ٛقشٗ ثط٘بٔٞ ٝبی ثعضي ٚیب ضاٜ
حّی و ٝثیبٖ اـ زض ایٗ ضٚـ ٔٙبؾت سط اؾز ضا زاضیس ٔ ،ی سٛا٘یس اظ قی ٜٛثط٘بٔٛ٘ ٝیؿی قیء ٌطا اؾشفبزٜ
وٙیس .
والؼ ٞب ٚاقیبء زٔ ٚف ْٟٛاؾبؾی زض ثط٘بٔٛ٘ ٝیؿی قیء ٌطا ٞؿشٙس .یه کالط یه ٘ٛع ػسیس ضا ایؼبز ٔی
وٙس ،زض حبِیى ٝاشیبء ٕ٘ٞ ٝ٘ٛبیی اظ آٖ والؼ ٞؿشٙس .ثسیٗ ٔؼٙی و ، ٝایٙى ٝقٕب ٔی سٛا٘یس ٔشغیطٞبیی اظ
٘ٛع intزاقش ٝثبقیس ،ث ٝسؼجیطی زیٍط ٔظُ آ٘ؿز و ٝثٍٛئیس ٔ ،شغیطٞبیی و ٝاػساز نحیح ضا شذیطٔ ٜی وٙٙس ،
ٔشغیطٞبیی ٞؿشٙس وٞ ٕٝ٘ٛ٘ ٝبیی (اقیبء ایی ) اظ والؼ ٞ intؿشٙس .
@PythonForever
ًکبتی ثزای ثزًبهِ ًَیسبى C/C++/Java/C#
) intضفشبض ٔی وٙٙس .ایٗ سٛػ ٝزاقش ٝثبقیس و ٝحشی اػساز نحیح ٓٞثٔ ٝب٘ٙس اقیبء ( اقیبیی اظ والؼ
ثطذالف ٚ C++ػبٚا اؾز (اِجش ٝدیف اظ ٘ؿر1.5 ) ٝو ٝاػساز نحیح اظ ٘ٛع ٞبی اِٚی ٝانّی ٞؿشٙس .ثطای
ػعئیبر ثیكشط زض ٔٛضز ایٗ والؼ ) help(intضا ٔالحظ ٝوٙیس .
ثط٘بٔٛ٘ ٝیؿبٖ Java 1.5 ٚ C#ثب ایٗ ٔف ْٟٛآقٙب سط ٞؿشٙس ،چطا و ٝقجی ٝثٔ ٝفunboxing ٚ boxing ْٟٛ
زض ایٗ ظثبٖ ٞب ٞؿز .
اقیبء ٔی سٛا٘ٙس زازٞ ٜب ضا ثب اؾشفبز ٜاظ ٔشغیطٞبی ٔؼِٕٛی و ٝث ٝقیء سؼّك زاضز ،شذیط ٜوٙٙس ٔ .شغیطٞبیی وٝ
ث ٝیه قیء یب یه والؼ سؼّك زاض٘س ،فیلذ ٘بٔیسٔ ٜی ق٘ٛس ٕٞ .چٙیٗ اقیبء ٔی سٛا٘ٙس ػّٕیبسی ضا ثب اؾشفبزٜ
اظ سٛاثؼی ؤ ٝشؼّك ث ٝوالؼ ٞؿشٙس ،ا٘ؼبْ زٙٞس .ایٗ چٙیٗ سٛاثؼی ٞ methodبیی اظ والؼ ٘بٔیسٔ ٜی ق٘ٛس
.ایٗ انُالحبر ثؿیبض ٔٞ ٟٓؿشٙس ،چطا و ٝثٔ ٝب وٕه ٔی وٙس سب ثیٗ سٛاثغ ٔ ٚشغیطٞبیی و ٝثهٛضر ػسا اظ
ٓٞسؼطیف ٔی ق٘ٛس ثب سٛاثغ ٔ ٚشغیطٞبیی ؤ ٝشؼّك ث ٝیه والؼ ٚیب قیء ٞؿشٙس ،سفبٚر لبئُ ثكٛیٓ .ثُٛض
ٔكشطن ،فیّس ٞب ٔ ٚشسٞب ٔی سٛا٘ٙس ثؼٛٙاٖ ٔكرهٚ/ٝیػٌی ٞبیی ) (attributesاظ والؼ اقبض ٜق٘ٛس .
فیّسٞب ثط ز ٚلؿٓ ا٘س :یه لؿٓ آٟ٘بیی ؤ ٝی سٛا٘ٙس ثٞ ٝط قیء ٕٝ٘ٛ٘/ایی اظ والؼ سؼّك ثٍیط٘س ٚ ،یه لؿٓ
ٚinstance variablesلؿٓ زْٚ زیٍط آٟ٘بیی ؤ ٝی سٛا٘ٙس ث ٝوالؼ ذٛزقبٖ سؼّك ثٍیط٘س .لؿٓ اَٚ
٘class variablesبٔیسٔ ٜی ق٘ٛس .
والؼ ثب اؾشفبز ٜاظ وّٕ ٝوّیسی classایؼبز ٔی قٛز ،فیّسٞب ٔ ٚشسٞبی والؼ زض یه ثالن سٛضفش ٝفٟطؾز
ٔی ق٘ٛس .
Self
ٔشسٞبی والؼ سٟٙب یه سفبٚر ٔكرم ثب سٛاثغ ٔؼِٕٛی زاض٘س ،آٟ٘ب ٔی ثبیؿز زاضای یه اؾٓ ايبفی ثبقٙس وٝ
ثؼٛٙاٖ اِٚیٗ آضٌٔٛبٖ ث ٝفٟطؾز دبضأشطٞبی ٔشس ايبف ٝقٛز ،أب قٕب ٍٙٞبْ فطاذٛا٘ی ٔشس ٘جبیس ٔمساضی ث ٝآٖ
اضؾبَ وٙیس ،چطا و ٝدبیش ٖٛذٛز ایٗ وبض ضا ا٘ؼبْ ٔی زٞس .ایٗ ٔشغیط ذبل ث ٝقیء ذٛزـ ضػٛع ٔی وٙس ٚ ،
ضؾٓ ٞؿز و٘ ٝبْ selfث ٝآٖ زاز ٜقٛز .
ٞطچٙس ؤ ٝی سٛا٘یس ٞط اؾٕی ث ٝایٗ دبضأشط ثسٞیس ،أب ث ٝقسر دكٟٙبز ٔی قٛز و ٝاظ ٘بْ selfاؾشفبز ٜوٙیس
– ٞط ٘بْ زیٍطی ثُٛض ٔؼّ٘ ْٛبذٛقبیٙس اؾز ٔ .عیز ٞبی ظیبزی ٞؿز و ٝاظ یه ٘بْ اؾشب٘ساضز اؾشفبز ٜثكٛز –
@PythonForever
selfاؾشفبز ٜوٙیس ٞ IDEبی ٞط ذٛا٘ٙس ٜی ثط٘بٔٞ ٝبی قٕب فٛضا آٖ ضا سكریم ٔی زٞس ٚحشی اٌط اظ ٘بْ
(ٔحیٍ ٞبی سٛؾؼ ٝیىذبضچٔ )ٝرهٛل ٘یع ٔی سٛا٘ٙس ث ٝقٕب وٕه وٙٙس .
selfزض دبیشٕٞ ٖٛبٖ اقبضٌ ٜط selfزض ٔ ٚ C++طػغ thisزض ػبٚا C# ٚاؾز .
حشٕب وٙؼىبٞ ٚؿشیس و ٝدبیش ٖٛث ٝچ ٝنٛضر ٔمساض selfضا اضؾبَ ٔی وٙس ٚچطا قٕب ٘یبظی ثٔ ٝمساضزٞی ثٝ
آٖ ٘ساضیس .ثب یه ٔظبَ ایٗ ٔٛيٛع ضا قفبف ٔی وٙیٓ ،فطو وٙیس والؾی ث ٝاؾٓ ٕٝ٘ٛ٘ ٚ MyClassایی اظ
MyObjectزاضیس ٍٙٞ .بٔی ؤ ٝشسی اظ ایٗ والؼ ضا ثؼٛٙاٖ ٕ٘ٝ٘ٛ ایٗ والؼ ث٘ ٝبْ
)MyObject.method(arg1,arg2نسا ٔی ظ٘یس .ایٗ وس ثهٛضر ذٛزوبض سٛؾٍ دبیش ٖٛثٝ
)MyClass.method(Myobject,arg1,arg2سجسیُ ٔی قٛز -ایٗ سٕبْ آٖ چیعی ثٛز و self ٝثُٛض
ذبل زاقز .ایٗ ُّٔت ٕٞچٙیٗ ثسیٗ ٔؼٙی ؾز و ٝاٌط ٔشسی زاقش ٝثبقیس وٞ ٝیچ آضٌٔٛب٘ی ثؼٛٙاٖ ٚضٚزی
ٕ٘ی دصیطز ،ثبظ قٕب ٔی ثبیؿز آضٌٔٛبٖ selfضا ثطای آٖ سؼطیف ٕ٘بئیس .
کالط ّب
یه والؼ ِ سب حس ٕٔىٗ ؾبز ٜزض ٔظبَ ظیط آٚضز ٜقس ٜاؾز .
#!/usr/bin/python
# Filename: simplestclass.py
class Person:
pass # An empty block
)(p = Person
print p
خزٍجی :
@PythonForever
><__main__.Person instance at 0xf6fcb18c
ٔب یه والؼ ػسیس ضا ثب اؾشفبز ٜاظ زؾشٛض ٚ classثس٘جبَ آٖ ثب آٚضزٖ ٘بْ والؼ ٔ ٚشؼبلجب ثب یه ثالن س ٛضفشٝ
اظ زؾشٛضار و ٝثس٘ ٝوالؼ ضا قىُ ٔی زٞس ایؼبز وطزیٓ .زض ایٗ ٔظبَ ٔ ،ب ثالن ذبِی س ٛضفش ٝضا سٟٙب ثب یه
زؾشٛض ٘ passكبٖ زازیٓ .ؾذؽ ،یه قیء ٕٝ٘ٛ٘/اظ ایٗ والؼ ضا ثب اؾشفبز ٜاظ ٘بْ والؼ ٕٞطا ٜثب یه ػفز
دطا٘شع ثبظ ٚثؿش ، ٝایؼبز وطزیٓ ( .زض ثرف ثؼسی زضثبض ٕٝ٘ٛ٘ ٜؾبظی ثیكشط ذٛاٞیٓ آٔٛذز ٚ ) .ؾذؽ ثطای
اطجبر نحز وبضٔبٖ ث ٝؾبزٌی ثب چبح وطزٖ ٔشغیط ،اظ ٘ٛع آٖ ُٕٔئٗ ٔی قٛیٓ ،چطا و ٝثٔ ٝب ٘كبٖ ٔی زٞس
و ٝیه ٕ٘ ٝ٘ٛاظ والؼ ، Personزض ٔبغ __main__ َٚزاضیٓ .سٛػ ٝزاقش ٝثبقیس و ٝآزضؼ حبفظٝ
وبٔذیٛسطی و ٝقیء زض آٖ شذیط ٜقس ٜاؾز ٘یع چبح ٔی قٛز .ایٗ آزضؼ زض وبٔذیٛسطٞط وؿی ٔشفبٚر ٞؿز
،چطا و ٝدبیشٔ ٖٛی سٛا٘س قیء ضا زض ٞط وؼبیی اظ حبفظ ٝو ٝفًبی ذبِی یبفز شذیط ٜوٙس .
هتذّبی شیء
ٔب زضثبض ٜاقیبء /والؼ ٞب نحجز وطزیٓ ٌ ٚفشیٓ ؤ ٝی سٛا٘ٙس ٔشسٞبیی ٔكبث ٝث ٝسٛاثغ زاقش ٝثبقٙس ،سٟٙب ثب
ایٗ اؾشظٙبء و ٝیه آضٌٔٛبٖ ايبفی ث٘ ٝبْ selfزاض٘س .حبَ ٔی ذٛاٞیٓ ٔظبَ ٞبیی زضایٗ ضاثُ ٝزاقش ٝثبقیٓ .
#!/usr/bin/python
# Filename: method.py
class Person:
def sayHi(self):
'?print 'Hello, how are you
)(p = Person
)(p.sayHi
@PythonForever
خزٍجی
زض ایٗ ٔظبَ زض ػُٕ ثب selfآقٙب قسیٓ .زلز وٙیس ؤ ٝشس SayHiدبضأشطی ٕ٘ی ٌیطز ِٚی ثب ایٗ حبَ self
ضا زض سؼطیف سبثغ ذٛز زاضز .
هتذ ____init
سؼسازی اظ ٘بْ ٞبی ٔشسٞب ٞؿشٙس و ٝثطای والؼ ٞبی دبیشٔ ٖٛؼٙی ٔ ٚف ْٟٛذبنی زاض٘س .یىی اظ آٖ ٘بْ ٞب
__ٞ__initؿز ،و ٝاؤ ٖٛٙی ذٛاٞیٓ ثٔ ٝف ْٟٛآٖ دی ثجطیٓ ٔ.شس __ ، __initثٔ ٝؼطز ایٙى ٝیه قیء اظ
والؼ ٕ٘ ٝ٘ٛؾبظی ٔی قٛز ،اػطا ٔی قٛز .ایٗ ٔشس ثطای ٞط وبض اِٚی ٝایی ؤ ٝی ذٛاٞیس ثب قیء سبٖ ا٘ؼبْ
زٞیس ٙٔ ،بؾت اؾز .ث ٝز ٚظیطذُی و ٝزض اثشسا ٚا٘شٟبی ٘بْ ایٗ ٔشس ٞؿز زلز زاقش ٝثبقیس .
#!/usr/bin/python
# Filename: class_init.py
class Person:
def __init__(self, name):
self.name = name
def sayHi(self):
print 'Hello, my name is', self.name
)'p = Person('Swaroop
)(p.sayHi
@PythonForever
خزٍجی :
$ python class_init.py
Hello, my name is Swaroop
زض ایٙؼب ٔ ،ب ٔشس __ __initضا َٛضی سؼطیف وطزیٓ و ٝیه دبضأشط ث ٝاؾٓ nameثذصیطز ( زض وٙبضدبضأشط
ٔselfؼٕٕٞ ٚ َٛیكٍی ) .ؾذؽ سٟٙب یه فیّس ػسیس ث٘ ٝبْ nameایؼبز وطزیٓ .زلز وٙیس و ٝایٗ ٞب
ٔشغیطٞبیی ٔشفبٚر ٞؿشٙس ٞ ،ط چٙس و٘ ٝبْ ٞبی قبٖ ٔظُ ٓٞاؾز .ػالٔز ٘مٌُ ٝصاقش ٝقس ٜثبػض ٔی قٛز
و ٝثیٗ آٟ٘ب سٕبیع لبئُ قٛیٓ ٘ .ىش ٝحبئع إٞیز ایٗ اؾز ؤ ٝب ثُٛض نطیح ٔشس __ __initضا فطاذٛا٘ی
٘ىطزیٓ ،أب آضٌٔٛبٖ ٞبی آٖ ضا زض حیٗ ایؼبز یه ٕ٘ ٝ٘ٛاظ والؼ ،زض ثیٗ دطا٘شعٞبی ٘بْ والؼ ث ٝآٖ
فطؾشبزیٓ .ایٗ ٔف ْٟٛذبل ایٗ ٔشس ٞؿز .اؤ ٖٛٙب ٔی سٛا٘یٓ اظ فیّس self.nameزض سٕبٔی ٔشسٞبی ٔبٖ
اؾشفبز ٜوٙیٓ ،و ٝایٗ وبض زض ٔشس ٔ SayHiكرم ٞؿز .
ٔشس __ __initزض لیبؼ ٔی سٛا٘س ٔظُ ؾبظ٘سٞب زض ٚC# ، C++ػبٚا ثبقس .
سب ثسیٗ ػب زضثبض ٜػّٕیبسی و ٝثركی اظ اقیبء ٚوالؼ ٞؿشٙس ثحض قس ،اؤ ٖٛٙب ٔی ذٛاٞیٓ زضثبض ٜی زازٜ
و ٝثرف زیٍطی اظ اقیبء ٚوالؼ ٞؿشٙس ثحض وٙیٓ .زض ٚالغ ،زازٞ ٜب چیع ذبنی ث ٝػع ٔشغیطٞبی ٔؼِٕٛی
و ٝث ٝفًبی ٘بٔی اقیبء ٚوالؼ ٞب boundقس ٜا٘س ٘ ،یؿشٙس ،ثسیٗ ٔؼٙی و٘ ٝبْ ٞبی ایٗ ٔشغیطٞب سٟٙب زض
زاذُ ایٗ والؼ ٞب ٚاقیبء ٔؼشجط ٞؿشٙس .
زٛ٘ ٚع اظفیّس ٞب ٚػٛز زاض٘س – ٔشغیطٞبی والؼ ٔ ٚشغیطٞبی قیء ،وَ ٝجم ٝثٙسی قبٖ ث ٝسطسیت ٌٛٙٔ ،
ثطایٗ اؾز و ٝآیب ٔشغیطٞب ٔشؼّك ث ٝوالؼ ٞؿشٙس ٚیب ث ٝقیء .
ٔشغیطٞبی والؼ ث ٝایٗ ػٟز ث ٝاقشطان ٌصاقش ٝقس ٜا٘س سب ثطای سٕبٔی اقیبء ی (ٕ٘ٞ ٝ٘ٛب) والؼ لبثُ
زؾشطؼ ثبقٙس .سٟٙب یه وذی اظ ٔشغیط والؼ ٚػٛز زاضز ٍٙٞ ٚبٔی وٞ ٝط قیء ایی سغییطی زض یه ٔشغیط
والؼ ثسٞس ،ایٗ سغییط ث ٝزضؾشی زض سٕبٔی ٕ٘ٞ ٝ٘ٛبی زیٍط ٔٙؼىؽ ٔی قٛز .
ٔشغیطٞبی قیء ٔ،شؼّك ثٞ ٝط قیءٙٔ ٕٝ٘ٛ٘/حهط ث ٝفطز اظ یه والؼ ٞؿشٙس .زض ایٗ حبِز ٞ ،ط قیء وذی
ٔرهٛل ث ٝذٛزـ ضا اظ فیّس زاضز ،ثسیٗ ٔؼٙی و ٝآٟ٘ب اقشطان ٌصاضزٕ٘ ٜی ق٘ٛس ٚضاثُ ٝایی ثیٗ ٘بْ ٞبی
@PythonForever
ّٝٓ آؾبٖ ایٗ ٔؿئٟ یه ٔظبَ ثبػض ف. ز ٘ساضزٛػٚ رٚبی ٔشفبٞ ٕٝ٘ٛ٘ بی یىؿبٖ اظٞ ب زض والؼٞ ٖیىؿبٖ آ
. س قسٞاٛذ
#!/usr/bin/python
# Filename: objvar.py
class Person:
'''Represents a person.'''
population = 0
def __del__(self):
'''I am dying.'''
print '%s says bye.' % self.name
Person.population -= 1
if Person.population == 0:
print 'I am the last one.'
else:
print 'There are still %d people
left.' % Person.population
def sayHi(self):
'''Greeting by the person.
@PythonForever
Really, that's all it does.'''
print 'Hi, my name is %s.' % self.name
def howMany(self):
'''Prints the current population.'''
if Person.population == 1:
print 'I am the only person here.'
else:
print 'We have %d persons here.' %
Person.population
swaroop = Person('Swaroop')
swaroop.sayHi()
swaroop.howMany()
swaroop.sayHi()
swaroop.howMany()
خزٍجی
$ python objvar.py
(Initializing Swaroop)
Hi, my name is Swaroop.
I am the only person here.
(Initializing Abdul Kalam)
Hi, my name is Abdul Kalam.
We have 2 persons here.
Hi, my name is Swaroop.
We have 2 persons here.
Abdul Kalam says bye.
There are still 1 people left.
Swaroop says bye.
I am the last one.
@PythonForever
ًحَُ ی ػولکزد ایي هثبل
ایٗ ٔظبَ ٘ؿجشب ثعضٌی ؾز ِٚی ٔبٞیز ٔشغیطٞبی والؼ ٚقیء ضا ثطای ٔب ضٚقٗ ٔی وٙس .زض ایٙؼب ،
ٔpopulationشؼّك ث ٝوالؼ ٞ Personؿز ٚثٙبثطایٗ یه ٔشغیط والؼ ٞؿز ٔ .شغیط ٔ nameشؼّك ثٝ
قیء ( و ٝثب اؾشفبز ٜاظ ٘ selfؿجز زٞی نٛضر ٌطفش ٝاؾز) ٞؿز ٚاظ ایٙط ٚیه ٔشغیط قیء اؾز .
ٔكرم ٞؿز ؤ ٝشس __ __initثطای ایؼبز وبضٞبی ٔمسٔبسی ٚاِٚی ٝی ٕ٘ ٝ٘ٛی Personث ٝوبض ٌطفش ٝقسٜ
اؾز .زض ایٗ ٔشس ٔ ،ب ٔمساض populationضا ث ٝا٘ساظ ٜیه ٚاحس افعایف ٔی زٞیٓ ،چطا و ٝیه قرم ػسیس
ث ٝػٕؼیز ٔب ايبفٔ ٝی قٛز ٕٞ .چٙیٗ ٚايح ٞؿز ؤ ٝمساض ٔ self.nameرشم ٞط قیء اؾز ٔ ٚبٞیز
ٔشغیط قیء ضا ثطای ٔب ضٚقٗ ٔی وٙس .
ث ٝیبز زاقش ٝثبقیس ؤ ، ٝی ثبیؿز ثٔ ٝشغیطٞب ٔ ٚشسٞبی یه قیء یىؿبٖ سٟٙب ثب اؾشفبز ٜاظ ٔشغیط selfضػٛع
وٙیس .و ٝایٗ ُّٔت ،اضػبع ثٚ ٝیػٌی ) ٘ ( attribute referenceبٔیسٔ ٜی قٛز .
ٕٞچٙیٗ زض ایٗ ٔظبَ ٔ ،ب ٔی ثیٙیٓ و ٝاظ ٞ docstringب ٓٞ ،ثطای والؼ ٓٞ ٚثطای ٔشسٞب اؾشفبز ٜوطزیٓ .
ٔی سٛا٘یٓ زض ظٔبٖ اػطا ثٔ docstring ٝطث ٌٛث ٝوالؼ ثب اؾشفبز ٜاظ __ ٚ Person.__docثdocstring ٝ
ٔطث ٌٛثٔ ٝشس اظ َطیك __ Person.sayHi.__docزؾشطؾی زاقش ٝثبقیٓ .
ثٔ ٝب٘ٙس ٔشس ذبل __ٔ ،__initشس ٚیػ ٜزیٍطی ث٘ ٝبْ __٘ __delیع ٚػٛز زاضز وٍٙٞ ٝبٔیى ٝیه قیء زض
حبَ اظ ثیٗ ضفشٗ ٞؿز ،فطاذٛا٘ی ٔی قٛز ،ثسیٗ ٔؼٙی و ٝآٖ قیء اظ ایٗ دؽ ٔٛضز اؾشفبز ٜلطاض ٕ٘ی ٌیطز ٚ
ثطای اؾشفبزٔ ٜؼسز اظ آٖ ثرف اظ حبفظ ، ٝث ٝؾیؿشٓ ثطٌطزا٘سٔ ٜی قٛز ٔ .ب زض ایٗ ٔشس ث ٝؾبزٌی ٔمساض
Person.populationضا یه ٚاحس وبٞف زازیٓ .
ٔشس __ٚ __delلشی و ٝقیء ایی ثیف اظایٗ ٘یبظی ث ٝاؾشفبز ٜاظـ ٘یؿز اػطا ٔی قٛز ٚ ٚلشی و ٝایٗ ٔشس
اػطا قٛز زیٍط يٕب٘شی ث ٝآٖ قیء ٘یؿز ،اٌط و ٝقٕب ٔی ذٛاٞیس ثُٛض نطیح ایٗ وبض ضا ا٘ؼبْ ثسٞیس ٔ ،ی
ثبیؿز اظ زؾشٛض delثهٛضسی و ٝزض ٔظبَ ٞبی لجّی آٚضز ٜقس ٜثٛز ،اؾشفبز ٜوٙیس .
@PythonForever
ًکتِ ایی ثزای ثزًبهِ ًَیسبى C++/Java/C#زض دبیش ٖٛسٕبٔی اػًبی یه والؼ ( قبُٔ اػًبی زاز) ٜ
ػٕٔٛی ) ٞ ( publicؿشٙس ٚسٕبٔی ٔشسٞب ٔ ،ؼبظی ) ) ٞ virtualؿشٙس .
یه اؾشظٙبء :اٌط ٘بْ اػًبی زاز ٜضا ثهٛضر ز ٚظیطذٍ چؿذجیس ٜث٘ ٝبْ سؼطیف وٙیس ٔ ،ظُ __ privatevar
دبیش ٖٛاظ زؾشىبضی ٘بْ ) (name-manglingثٟطٔ ٜی ثطز سب ثُٛض ٔٛططی آٖ ٔشغیط ضا ذهٛنی )( private
ؾبظز .
[ٔشطػٓ :دؽ ایٗ ٔشغیط اظ َطیك ٘بْ ٕٞ classname._classname__privatevarچٙبٖ لبثُ زؾشطؼ ٚ
ػٕٔٛی ؾز ] .
اظ ایٙطَ ٚجك ػطف ٞ ،ط ٔشغیطی و ٝسٟٙب زض زاذُ ذٛز والؼ ٚیب اقیبء ٔٛضز اؾشفبز ٜلطاضٔی ٌیطز ٔ ،ی ثبیؿز
٘بٔف ثب یه ظیطذٍ قطٚع قٛز ٚ ،سٕبٔی زیٍط ٘بْ ٞب ػٕٔٛی ٞؿشٙس ٔ ٚی سٛا٘ٙس سٛؾٍ زیٍط والؼ ٞب /
اقیبءٞب اؾشفبز ٜق٘ٛس .ث ٝذبَط زاقش ٝثبقیس و ٝایٗ سٟٙب یه ػطف ٞؿز ٚاػجبضی اظ َطف دبیش ٖٛثطای آٖ
٘یؿز ( .اِجش ٝث ٝػع ثطای ٘بْ ٞبیی ثب دیك٘ٛس ز ٚظیط ذٍ ) .
ٕٞچیٗ ،زلز وٙیس ؤ ٝشس __ __delزض لیبؼ ٔی سٛاٖ ٌفز وٕٞ ٝبٖ ٔفٔ ْٟٛرطة ) (destructorضا زض
ظثبٖ ٞبی ثبال زاضز .
ٍراثت
یىی اظ ٔعایبی انّی ثط٘بٔٛ٘ ٝیؿی قیء ٌطا ،لبثّیز اؾشفبزٔ ٜؼسز اظ وس ٞؿز ٚ ،یىی اظ ضٚـ ٞبی ضؾیسٖ
ث ٝآٖ اظ َطیك ٔىب٘یؿٓ ٚضاطز اؾز .اضص ثطی ٔی سٛا٘س ثهٛضر ثٟشطی ای ٍٝ٘ٛٙسهٛض قٛز و ٝدیبز ٜؾبظی یه
ضاثُٛ٘ ٝع ٚظیط ٘ٛع ٔب ثیٗ والؼ ٞب اؾز .
فطو وٙیس ؤ ٝی ذٛاٞیس ثط٘بٔ ٝایی ثٛٙیؿیس و ٝاَالػبر ٔطث ٌٛث ٝاؾبسیس ٚزا٘كؼ ٛیه زا٘كىس ٜضا ٍ٘ ٝزاضز
.ایٗ ٔٛػٛزیز ٞب زاضای چٙسیٗ ٚیػٌی ضایغ ٕٞچ٘ ٖٛبْ ،ؾٗ ٚآزضؼ ٞؿشٙس ٕٞ .چٙیٗ زاضای چٙسیٗ ٚیػٌی
ٔرهٛل ث ٝذٛز ٕٞچ ٖٛحمٛق ،والؼ زضؼ ٔ ،طذهی ثطای اؾبسیس ٚقٟطیٕ٘ ٚ ٝط ٜثطای زا٘كؼٛیبٖ ٞؿشٙس
.
قٕب ٔی سٛا٘یس ز ٚوالؼ ٔؿشمُ ثطای ٞط وساْ اظ ایٗ ٞب ایؼبز وٙیس ٚآٟ٘ب ضا دطزاظـ وٙیس ِٚی ايبف ٝقسٖ یه
ٚیػٌی ػسیس ضایغ ،ثٔ ٝؼٙی ايبف ٝوطزٖ ایٗ ٚیػٌی ثٞ ٝط ز ٚوالؼ ٔؿشمُ اؾز .و ٝایٗ ُّٔت ث ٝؾطػز
ثبػض ػسْ ازاض ٜوطزٖ آؾبٖ والؼ ٞب ٔی قٛز .
@PythonForever
ضٚـ ثٟشطی ٞ ٓٞؿز ٚ ،آٖ ایٙى ٝیه والؼ ضایغ ث٘ ٝبْ SchoolMemberایؼبز وٙیٓ ٚؾذؽ ز ٚوالؼ
ث٘ ٝبْ زا٘كؼ ٚ ٛاؾشبز زاقش ٝثبقیٓ و ٝاظ ایٗ والؼ اضص ثجط٘س .ثسیٗ ٔؼٙی و ٝایٗ ز ، ٚظیطٛ٘ -ع ٞبیی اظ ایٗ
٘ٛع (والؼ )ضایغ ٞؿشٙس ٚؾذؽ ٔب ٔی سٛا٘یٓ ٚیػٌی ٞبی ٔرشم ث ٝذٛزقبٖ ضا ث ٝایٗ ظیط –٘ٛع ٞب ايبفٝ
وٙیٓ .
SchoolMemberايبف ٝوٙیٓ ٚیب سغییط ایٗ قیٔ ٜٛعایبی ثؿیبضی زاضز .اٌط ٔب ٞطػّٕیبسی ضا زض والؼ
ثسٞیٓ ،ایٗ سغییط ثُٛض ذٛزوبض زض ظیطٛ٘ -ع ٞب ٓٞث ٝذٛثی ٔٙؼىؽ ٔی قٛز ،ثطای ٔظبَ ،قٕب ٔی سٛا٘یس ثطای
ٞط زٛٔ ٚػٛزیز اؾبسیس ٚزا٘كؼ ٛیه فیّس قٕبض ٜوبضر ) ( IDػسیس ايبف ٝوٙیس ٚایٗ وبض ضا ث ٝؾبزٌی ،سٟٙب
ثب ايبف ٝوطزٖ آٖ ث ٝوالؼ SchoolMemberا٘ؼبْ ثسٞیس .اِجش ، ٝسغییط زض یه ظیط٘ٛع سبطیطی ثطٚی زیٍط
ظیط٘ٛع ٞب ٘ساضز ٔ .عیز زیٍط آٖ ایٙؿز و ٝاٌط قٕب ث ٝیه والؼ اؾشبز ٚیب زا٘كؼ ٛثؼٛٙاٖ یه قیء
SchoolMemberضػٛع وٙیس ٔی سٛا٘س زض ٔٛاضزی ٕٞچ ٖٛقٕبضـ سؼساز اػًبی زا٘كىسٔ ٜفیس ثبقس .ایٗ
چٌذریختی ٘بٔیسٔ ٜی قٛز ،و ٝزض آٖ یه ظیط ٛ٘-ع ٔی سٛا٘س ػب٘كیٗ ٞط ٔىب٘ی قٛز و ٝا٘شظبض ٔی ضٚز یه
٘ٛع ٚاِس زضآٖ ٔىبٖ لطاض ٌیطز ،ثسیٗ ٔؼٙی و ٝیه قیء ٔی سٛا٘س ثؼٛٙاٖ یه ٕ٘ ٝ٘ٛاظ والؼ ٚاِس ضفشبض وٙس .
ٕٞچٙیٗ ٔكرم ٞؿز ؤ ٝب اظ وس والؼ ٚاِس اؾشفبزٔ ٜؼسز ٔی وٙیٓ ٘ ٚیبظی ث ٝسىطاض آٖ زض والؼ ٞبی
ٔشفبٚر ٘یؿز ٕٞ ٚ ،یُٛٙضی ؤ ٝب زض ٕٞیٗ ػب زاقشیٓ ٚ ،زض والؼ ٞبیی ٔؿشمُ اظ آٖ اؾشفبز ٜثطزیٓ .
زض ایٗ ٚيؼیز والؼ ، SchoolMemberثؼٛٙاٖ والؼ دبی ٚ (base class) ٝیب فٛق والؼ
)(superclassقٙبذشٔ ٝی قٛز ٚ ،والؼ ٞبی اؾشبز ٚزا٘كؼ ٛوالؼ ٞبی ٔكشك قس(derived classes) ٜ
ٚیب ظیطوالؼ )٘ (subclassesبٔیسٔ ٜی ق٘ٛس .
#!/usr/bin/python
# Filename: inherit.py
class SchoolMember:
''''''Represents any school member.
def __init__(self, name, age):
self.name = name
@PythonForever
self.age = age
print '(Initialized SchoolMember: %s)' %
self.name
def tell(self):
'''Tell my details.'''
print 'Name:"%s" Age:"%s"' % (self.name,
self.age),
class Teacher(SchoolMember):
'''Represents a teacher.'''
def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary
print '(Initialized Teacher: %s)' %
self.name
def tell(self):
SchoolMember.tell(self)
print 'Salary: "%d"' % self.salary
class Student(SchoolMember):
'''Represents a student.'''
def __init__(self, name, age, marks):
SchoolMember.__init__(self, name, age)
self.marks = marks
print '(Initialized Student: %s)' %
self.name
def tell(self):
SchoolMember.tell(self)
print 'Marks: "%d"' % self.marks
members = [t, s]
for member in members:
@PythonForever
member.tell() # works for both Teachers and
Students
خزٍجی
ثطای اؾشفبز ٜاظ ٚضاطز ٔ ،ب ٘بْ ٞبی والؼ دبی ٝضا زض یه چٙسسبیی ث ٝز٘جبَ ٘بْ والؼ زض سؼطیف والؼ ٔكرم
ٔی وٙیٓ .ؾذؽ ٔ ،كبٞسٔ ٜی وٙیٓ ؤ ٝشس ____initاظ والؼ دبی ٝثب اؾشفبز ٜاظ ٔشغیط selfثُٛض نطیح
فطاذٛا٘ی ٔی قٛز ،ثسیٗ سطسیت ؤ ٝمسٔبر اِٚی ٝوالؼ دبی ٝضا و ٝثركی اظ قیء اؾز ا٘ؼبْ ٔی زٞیٓ .ایٗ
ثؿیبض ٔ ٟٓاؾز و ٝث ٝذبَط زاقش ٝثبقیٓ و ٝدبیش ٖٛثُٛض ذٛزوبض ؾبظ٘س ٜی والؼ دبی ٝضا فطاذٛا٘ی ٕ٘ی وٙس ،
ٚقٕب ٔی ثبیؿز ثُٛض نطیح آٖ ضا ثطای ذٛزسبٖ نسا ثع٘یس .
ٕٞچٙیٗ ٔی ثیٙیٓ و ٝفطاذٛا٘ی ٔشسٞبی والؼ دبی ٝزض ظیطوالؼ ٞب ثب دیك٘ٛس ٘بْ والؼ دبیٕٞ ٝطا ٜثب اؾٓ ٔشس
آٖ ٚؾذؽ فطؾشبزٖ ٔشغیط selfثؼٛٙاٖ اِٚیٗ آضٌٔٛبٖ زض وٙبض زیٍطآضٌٔٛبٖ ٞب نٛضر ٔی ٌیطز .
سٛػ ٝوٙیس وٍٙٞ ،ٝبٔیىٔ ٝشس Tellاظ والؼ SchoolMemberضا ث ٝوبض ٔی ثطیٓ ثب ٕ٘ٞ ٝ٘ٛبیی اظ
ٔStudent ٚTeacherی سٛا٘یٓ ٕٞبٖ َٛضی ضفشبض وٙیٓ و ٝثب ٕ٘ٞ ٝ٘ٛبی SchoolMemberضفشبض ٔی وٙیٓ
.
ٕٞچٙیٗ ،ضٚقٗ ٞؿز ؤ ٝشس Tellاظ ظیط٘ٛع نسا ظزٔ ٜی قٛز ٔ ٝ٘ ٚشس Tellاظ والؼ SchoolMember
.یه ضا ٜثطای زضن ایٗ ُّٔت ،ایٗ اؾز و ٝدبیشٕٞ ٖٛیك ٝقطٚع ػؿشؼ ٛثطای ٔشسٞب ضا زض ٘ٛػی (والؾی) وٝ
زض آٖ ٞؿز آغبظ ٔی وٙس ،ؾذؽ اٌط ٘شٛا٘س ٔشس ٔٛضز ٘ظط ضا زض آٖ ٘ٛع (والؼ) دیسا وٙس ،ازأ ٝػؿشؼ ٛضا زض
ٔشسٞبی ٔشؼّك ث ٝوالؼ ٞبی دبی ٝاـ قطٚع ٔی وٙس ،ثهٛضر یىی یىی ٚث ٝسطسیجی و ٝزض چٙسسبیی زض سؼطیف
والؼ ٔكرم قس ٜا٘س .
@PythonForever
٘ىش ٝایی زض ٔٛضز یه انُالح – اٌط زض ظٔبٖ سؼطیف اضص ثطی ،ثیف اظ یه والؼ زض چٙسسبیی اضص ثطی
فٟطؾز قس ٜثبقس ،آٖ ضا ٚضاطز چٙسٌب٘ٔ( multiple inheritance ) ٝی ٘بٔٙس .
خالصِ
ٔب اؤ ٖٛٙفبٞیٓ ٔشٛٙػی اظ والؼ ٞب ٚاقیبء ٕٞ ٚیٗ َٛض انُالحبر ٌ٘ٛبٌٔ ٖٛطث ٌٛث ٝآٟ٘ب ضا ٔٛضز ثطضؾی
لطاض زازیٓ ٕٞ .چٙیٗ ٔعایب ٔ ٚؼبیت ثط٘بٔٛ٘ ٝیؿی قیء ٌطا ضا زیسیٓ .دبیش ٖٛلٛیبً قیء ٌطا ٚلبثُ ف ٟٓاؾز .
ایٗ ٔفبٞیٓ ثُٛض لبثُ ٔالحظ ٝایی زض ػبی ذٛزـ ث ٝقٕب وٕه ثیكشطی ذٛاٞس وطز .
زض فهُ ثؼسی ،زضثبضٛٔ ٜاػ ٟٝثب ٚضٚزی /ذطٚػی ٚچٍٍ٘ٛی زؾشطؾی ث ٝفبیُ ٞب زض دبیش ٖٛذٛاٞیٓ آٔٛذز .
فْزست هٌذرجبت
4ذالنٝ
ٍرٍدی /خزٍجی
ثؿیبضی اظ اٚلبر ٞؿز ؤ ٝی ذٛاٞیس ثط٘بٔ ٝسبٖ ثب وبضثط سؼبُٔ زاقش ٝثبقس (ؤ ٝی سٛا٘س ثب ذٛزسبٖ ثبقس ) .
ٔی ذٛاٞیس وٚ ٝضٚزی ایی اظ وبضثط ثٍیطز ٚؾذؽ ٘شبیؼی ضا ثطٌطزا٘سٚ ٜچبح وٙس ٔ .ب ٔی سٛا٘یٓ ث ٝایٗ ذٛاؾشٝ
ٞب ث ٝسطسیت ثب زؾشٛضار print ٚ raw_inputثطؾیٓ ٕٞ .چٙیٗ ثطای ذطٚػی ٔ ،ی سٛا٘یٓ اظ ٔشسٞبی ٌ٘ٛبٌٖٛ
والؼ ) str(stringاؾشفبز ٜثجطیٓ .ثطای ٔظبَ ،قٕب ٔی سٛا٘یس اظ ٔشس rjustثطای سٙظیٓ ضاؾز چیٗ قسٖ یه
ضقش ٝثب ػطو ٔكرم ،ثٟط ٜثجطیس .ثطای ػعئیبر ثیكشط ) help(strضا ٔالحظ ٝوٙیس .
زیٍط ضٚـ ضایغ زض ٚضٚزی /ذطٚػی ٛٔ ،اػ ٟٝثب فبیُ ٞبؾز .سٛا٘بیی ذٛا٘سٖ ٛ٘ ٚقشٗ فبیُ ٞب ،ثطای اوظط
ثط٘بٔٞ ٝب يطٚضی ؾز ٔ ٚب ٔی ذٛاٞیٓ زض ایٗ فهُ آٖ ضا قطح زٞیٓ.
@PythonForever
فبیل ّب
ضاfile اٖ اثشسا یه قیء اظ والؼٛقشٗ ٔی سٛ٘ یبٚ ٖا٘سٛب ثطای ذٞ ُ وطزٖ اظ فبیٜ اؾشفبزٚ ٖثطای ثبظوطز
، سٙؿشٞ بٞ ُقشٗ زض فبیٛ٘ ٚ ٖا٘سٛ ٔرشم ذٝ وwrite یبٚreadline ، read بیٞ ؾذؽ اظ ٔشسٚ ایؼبز وطز
ُ قٕب زض حیٗ ثبظوطزٖ فبیٝ ُٔسی ؾز وٌٝ ثٛٙٔ بٞ ُقشٗ زض فبیٛ٘ یبٚ ٖا٘سٛا٘بیی ذٛ س. وٕه ٌطفز
ضا نسا ٔیfile اظ والؼclose ٔشس،زٛ وبضسبٖ ثب فبیُ سٕبْ ٔی قٍٝبٔیىٙٞ ، بیزٟ٘ زضٚ . ایسٜٔكرم وطز
. اؾزٜ دبیبٖ ضؾیسٝ وبضسبٖ ثب فبیُ ثٝئیس وٍٖٛ ثٛ دبیشٝظ٘یس سب ث
#!/usr/bin/python
# Filename: using_file.py
poem = '''\
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''
@PythonForever
خزٍجی
زض اثشسا ٔ ،ب یه ٕ٘ ٝ٘ٛاظ والؼ fileضا ثب ٔكرم وطزٖ ٘بْ فبیُ ُٔ ٚسی ؤ ٝی ذٛاٞیٓ فبیُ ثبظ قٛز ،ایؼبز
ٕ٘ٛزیٓ ُٔ .س ٔی سٛا٘س ٔمبزیط ) ' ( 'rثطای ذٛا٘سٖ ( 'w' ) ،ثطای ٘ٛقشٗ ٚیب ) ' ( 'aثطای ايبف ٝوطزٖ ث ٝفبیُ ضا
) ، help(fileػعئیبر زاقش ٝثبقس .ثبیس ٌفز و ٝزض ٚالغ ُٔسٞبی ثیكشطی ٘یع زض زؾشطؼ ٞؿشٙس ،زؾشٛض
ثیكشطی زضایٗ ثبض ٜث ٝقٕب ذٛاٞس زاز .
ٔب زض اثشسا ،فبیُ ضا زض ُٔس ٘ٛقشٗ ثبظوطزیٓ ٚ ،ؾذؽ اظ ٔشس writeاظ والؼ fileثطای ٘ٛقشٗ زض فبیُ اؾشفبزٜ
وطزیٓ ٚدؽ اظ آٖ زض ٟ٘بیز فبیُ ضا ثؿشیٓ .
ؾذؽ ،ثبض زیٍطی ٕٞبٖ فبیُ ضا ثطای ذٛا٘سٖ ثبظ وطزیٓ .اٌط ؤ ٝب ُٔس فبیُ ضا ٔكرم ٘ىٙیٓ ،ثُٛض دیف
فطو ُٔس فبیُ ثطٚی حبِز ذٛا٘سٖ لطاض ٔی ٌیطز ٞ .ط ذٍ اظ فبیُ ضا زض یه حّم ٝثب اؾشفبز ٜاظ ٔشس readline
ذٛا٘سیٓ ،ایٗ ٔشس یه ذٍ وبُٔ ،قبُٔ وبضوشط ذٍ ػسیس و ٝزض ا٘شٟبی ٞط ذٍ ٞؿز ضا ثطٔی ٌطزا٘س .ذت
ٚلشی و ٝیه ضقش ٝذبِی ثطٌكز زازٔ ٜی قٛز ٔ ،كرم ٔی وٙس و ٝث ٝدبیبٖ فبیُ ضؾیس ٜایٓ ٚزض٘شیؼٝ
چطذف زض حّم ٝضا ٔشٛلف ٔی وٙیٓ .
زلز وٙیس ؤ ٝب اظ یه ٚیطٌ َٛزض زؾشٛض printاؾشفبز ٜوطزیٓ سب اظ ايبف ٝوطزٖ ذٍ ػسیسی و ٝزؾشٛض print
ثهٛضر ذٛزوبض چبح ٔی وٙس ػٌّٛیطی وٙس ،چطا و ٝذُی و ٝاظ فبیُ ذٛا٘سٔ ٜی قٛز ذٛز زاضای وبضاوشط ذٍ
ػسیس زض ا٘شٟبی آٖ ٞؿز ،ؾذؽ زض ٟ٘بیز فبیُ ضا ٔی ثٙسیٓ .
اؤ ، ٖٛٙحشٛای فبیُ poem.txtضا ثجیٙیس سب ٔٛػ ٝثكٛیس و ٝثط٘بٔٚ ٝالؼب ثسضؾشی وبض ٔی وٙس .
Pickle
دبیشٔ ٖٛبغ َٚاؾشب٘ساضی ث٘ ٝبْ pickleاضائٔ ٝی زٞس و ٝثب اؾشفبز ٜاظ آٖ ٔی سٛا٘یس ٞط قیء ایی اظ دبیش ٖٛضا زض
یه فبیُ شذیطٕٛ٘ ٜز ٚ ٜؾذؽ ثؼسٞب ثس ٖٚوٛچه سطیٗ وٓ ٚوبؾشی ث ٝآٖ زؾشطؾی دیسا وٙیس .و ٝث ٝایٗ
ػُٕ شذیط ٜؾبظی دبیساض قیء ٘بٔیسٔ ٜی قٛز .
@PythonForever
بیٙ اؾشظٝ ث، سٞ ضا ا٘ؼبْ ٔی زPickle َٕٚبٖ ػُٕ ٔبغٞ زلیمبٝؿز وٞ ٓٞ cPickle ْ ٘بَٝ زیٍطی ثٚٔبغ
بٞ َٚی ایٗ ٔبغٚط زٞ ا٘یس اظٛ قٕب ٔی س. (ثطاثط) ؾطیؼشطؾز1000 ٝ زض٘شیؼٚ اؾزٜ قسٝقشٛ٘ C ٖ ثب ظثبٝىٙای
ٝ ٔب ثٝ ثبقیس وٝ ذبَط زاقشٝ ث. یٓ وطزٞاٛ ذٜ اؾشفبزcPickle َٚؼب اظ ٔبغٙ ٔب زض ایٝس وٙطچٞ ، یسٙ وٜاؾشفبز
. ٓیٙ ٔی وٜاقبضpickle َٚ اؾٓ ٔبغٝب ثطای ؾبزٌی ثٞ َٚی ایٗ ٔبغٚطزٞ
Unpickling ٍPickling
#!/usr/bin/python
# Filename: pickling.py
import cPickle as p
#import pickle as p
: خزٍجی
$ python pickling.py
['apple', 'mango', 'carrot']
@PythonForever
ًحَُ ی ػولکزد ایي هثبل
زض اثشسا ،سٛػ ٝوٙیس ؤ ٝب اظ ضؾٓ اِرٍ import .. asاؾشفبز ٜوطزیٓ .چطا و ٝاؾشفبز ٜاظ یه ٘بْ وٛسب ٜسط
ثطای یه ٔبغ ، َٚثبػض آؾبٖ قسٖ سبیخ ٞبی ثؼسی زض ثط٘بٔٔ ٝی قٛز ٚ. ،زض ایٗ ٔٛضز ،حشی ثبػض ٔی قٛز
ؤ ٝب ثشٛا٘یٓ ثیٗ ٔبغٞ َٚبی ٔشفبٚر ٚ (Pickleیب ) cPickleسٟٙب ثب سغییط زازٖ یه ذٍ ؾٛئیچ وٙیٓ ! ،زض
ٔبثمی ثط٘بٔٔ ٝب ث ٝؾبزٌی ثب حطف pث ٝایٗ ٔبغ َٚضػٛع ٔی وٙیٓ .
ثطای شذیط ٜوطزٖ یه قیء زض یه فبیُ ،زض اثشسا یه قیء فبیُ ضا زض حبِز ٘ٛقشٗ ثبظ ٔی وٙیٓ ٚؾذؽ
قیء ٔٛضز ٘ظطضا ثب فطاذٛا٘ی سبثغ dumpاظ ٔبغ ، pickle َٚزض زاذُ فبیُ ثبظ قسٔ ٜی ٘ٛیؿیٓ ،ایٗ فطآیٙس
٘picklingبٔیسٔ ٜی قٛز .
ؾذؽ ،قیء ٔٛضز ٘ظط ضا ثب اؾشفبز ٜاظ سبثغ loadاظ ٔبغ pickle َٚو ٝقیء ضا ثطٔی ٌطزا٘س ثبظیبثی ٔی وٙیٓ ،
ایٗ فطآیٙس ٘unpicklingبٔیسٔ ٜی قٛز .
خالصِ
ٔب زضثبض ٜضٚـ ٞبی ٌ٘ٛبٌ٘ٛی اظ ٚضٚزی /ذطٚػی ٕٞ ٚچٙیٗ ازاض ٜوطزٖ فبیُ ٚاؾشفبز ٜاظ ٔبغ pickle َٚثحض
وطزیٓ .
زض فهُ ثؼسی ٔ ،فبٞیٓ ٔطث ٌٛث ٝاؾشظٙبء ٞب ضا قطح ذٛاٞیٓ زاز .
فْزست هٌذرجبت
2ذُبٞب
7ذالنٝ
@PythonForever
استثٌبء ّب
اؾشظٙبء ٞب ظٔب٘یى ٝیه ٚيؼیز غیطػبزی ٚاؾشظٙبیی زض ثط٘بٔ ٝضخ ٔی زٞس ،اسفبق ٔی افشٙس .ثطای ٔظبَ ،اٌط
قٕب ثرٛاٞیس فبیّی ضا ثرٛا٘یس و ٝآٖ فبیُ ٚػٛز ٘ساضز چٔ ٝی قٛز ؟ ٚیب ٚلشی و ٝثُٛض سهبزفی آٖ فبیُ ضا زض
استثٌبء ّب ظٔب٘ی و ٝثط٘بٔ ٝزض حبَ اػطا ثٛز ٜاؾز حصف وطز ٜایس ؟ چٙیٗ قطایُی ثٛؾیّ ٝی
)(exceptionsازاضٔ ٜی ق٘ٛس .
اٌط ثط٘بٔ ٝی قٕب زاضای ثطذی زؾشٛضار ٘بٔؼشجطثبقس چُٛض ؟ زضایٗ حبِز ثٛؾیّ ٝی دبیش ٖٛازاضٔ ٜی قٛز وٝ
زؾشب٘ف ضا ثّٙس )ٔ (raiseی وٙس ٚث ٝقٕب ٔی ٌٛیس و ٝیه ذُب )ٚ(errorػٛز زاضز .
خطبّب
یه زؾشٛض ؾبز ٜی printضا زض ٘ظط ثٍیطیس .اٌط ٔب ث ٝػبی printاقشجبٞب ثٛٙیؿیٓ Printچٔ ٝی قٛز ؟ ثٝ
حطف ثعضي Pزض زؾشٛض printزلز وٙیس .زض ایٗ ٔٛضز ،دبیش ٖٛیه ذُبی ٘حٛی ) (syntax errorضا
ثطدب ) )ٔraiseی وٙس .
زض ایٗ ٔظبَ ٚايح اؾز و ٝیه ذُبی ٘حٛی ) (SyntaxErrorثطذبؾشٕٞ ٚ (raise) ٝچٙیٗ ٔىب٘ی و ٝذُب
سكریم زاز ٜقس ٜاؾز چبح قس ٜاؾز ٕٞ .چیٗ وبضی سٛؾٍ ازاض ٜوٙٙس ٜی ذُب )(error handlerا٘ؼبْ
ٔی قٛز .
Try..Except
زض ثط٘بٔ ٝظیط ٔب ٔی ذٛاٞیٓ سؼی کٌین )(tryوٚ ٝضٚزی ضا اظ وبضثط ثرٛا٘یٓ .وّیسٞبی Ctrl-zضا فكبض ثسٞیس
ٚثجیٙیس و ٝچ ٝاسفبلی ٔی افشس .
@PythonForever
>>> s = raw_input('Enter something --> ')
Enter something --> Traceback (most recent call last):
File "<stdin>", line 1, in ?
EOFError
زٛ ٔی قٝبذشٙ(قEOFError) ُبی فبیٟ ٘بْ ذُبی ا٘شٝ ثٖٝ ذُبیی ضا وٛ دبیش، وطزیسٜسٞ ٔكبٝض وَٛ ٖٕبٞ
اؾز زضٜ قسٟٝاػٛٔ ُبی فبیٟٖ ثب ا٘شٛ دبیشٝی ؾز وٙ ایٗ ٔؼٝض اؾبؾی ثُٛ ثٝ و. سٙ( ٔی وraise) ضا ثطدب
.) قسٜ ٘كبٖ زازCtrl-z ثبٝ (و. ا٘شظبض آٖ ضا ٘ساضزٝحبِی و
. ٓیٙ ٔی وٜبیی ضا ازاضٕٞچیٗ ذُبٞ ٖزٔبٛ قىُ ذٝ چٝ ثٝیٓ زیس وٞاٛ ذ، ٝٔزض ازا
ضارٛض وّی ثطای ا٘ؼبْ ایٗ وبض زؾشُٛ ث. ٓیٙ وٜب ضا ازاضٞ بءٙ اؾشظtry..except اظ ػجبضرٜا٘یٓ ثب اؾشفبزٛٔی س
ب ضا زض زاذُ ثالنٞ وطزٖ ذُبٜ ازاضٌٝ ثٛضار ٔطثٛ زؾشٚ ٓیٞ لطاض ٔی زtry ِی ضا زض زاذُ ثالنٕٛٔؼ
. ٓٔی ٌصاضیexcept
#!/usr/bin/python
# Filename: try_except.py
import sys
try:
s = raw_input('Enter something --> ')
except EOFError:
print '\nWhy did you do an EOF on me?'
sys.exit() # exit the program
except:
print '\nSome error/exception occurred.'
# here, we are not exiting the program
print 'Done'
@PythonForever
خزٍجی
زض ایٗ ٔظبَ ٔ ،ب سٕبٔی زؾشٛضاسی ضا و ٝأىبٖ ثطذبؾشٗ ذُب زض آٖ ٞب ٞؿز ضا زض زاذُ ثالن tryلطاض زازیٓ ٚ
ؾذؽ سٕبٔی ذُبٞب ٚاؾشظٙبء ٞب ضا زض زاذُ ثّٛن /ػجبضر ِ exceptازاض ٜوطزیٓ .ػجبضر ٔ exceptی سٛا٘س
یه ذُب ٚیب اؾشظٙبء ٔكرم قسٔ ٜؼطز ضا ٚیب یه ِیؿشی دطا٘شعی اظ اؾشظٙبء ٞب ٚذُبٞب ضا ازاض ٜوٙس .اٌط
٘بٔی اظ ذُب ٞب ٚیب اؾشظٙبء ٞب زض ػّٛی ػجبضر exceptآٚضز٘ ٜكس ٜثبقس ،آٖ ٌب ٜػجبضر exceptسٕبْ ذُبٞب
ٚاؾشظٙبء ٞب ضا ازاض ٜذٛاٞس وطز .حسالُ ث ٝاظی ٞط ػجبضر tryیه ػجبضر ٔ exceptی ثبیؿز ٔكرم قسٜ
ثبقس .
اٌط وٞ ٝط ذُب ٚیب اؾشظٙبیی ازاض٘ ٜكس ٜثبقس ،آٖ ٌب ٜازاض ٜوٙٙس ٜدیف فطو دبیش ٖٛنسا ظزٔ ٜی قٛز ٚثبػض
ٔی قٛز و ٝاؾشظٙبء ی ثط٘بٔٔ ٝشٛلف قٛز ٚدیغبٔی چبح قٛز ٕٞ ،بٖ َٛضی و ٝایٗ ُّٔت ضا زض ػُٕ ٔكبٞسٜ
وطز ٜثٛزیٓ .
ٕٞچٙیٗ ٔی سٛا٘یٓ یه ػجبضر ٘ elseیع ثب ثالن ٔ try..ecxeptكرم وٙیٓ .ػجبضر elseظٔب٘یى ٝاؾشظٙبیی
ضٚی ٘سٞس ،اػطا ٔی قٛز .
ٔب ٕٞچٙیٗ ٔی سٛا٘یٓ یه قیء اظ ٘ٛع اؾشظٙبء ضا ایؼبز وٙیٓ ،اظ ایٙط ٚو ٝاَالػبر ايبفی سطی زض ذهٛل
اؾشظٙبیی و ٝضٚی زاز ٜاؾز ثسؾز آٚضیٓ .ایٗ ُّٔت زض ٔظبَ ثؼسی ٘كبٖ زازٔ ٜی قٛز .
قٕب ٔی سٛا٘یس ثب اؾشفبز ٜاظ زؾشٛض raiseیه اؾشظٙبء ضا ثطاٍ٘یعیس ٕٞ(raise) .چٙیٗ ٔی ثبیؿز ثؼس اظ آٖ ٘بْ
ذُب ٚیب اؾشظٙبء ٚیب قیء اؾشظٙبیی و ٝدطسبة قس ٜاؾز ضا زض ػّٛی اؾشظٙبء ٔكرم وٙیس .ایٗ ذُب ٚیب
@PythonForever
ضُٛ یب ثٚ ٓض ٔؿشمیُٛ ثٝ ٔی ثبیؿز والؾی ثبقس و، یسٙ( وraise) ا٘یس ثطدبٛ قٕب ٔی سٝبیی وٙاؾشظ
. ثبقسٜٔكشك قسException یب والؼٚ Error سطسیت اظ والؼٝغیطٔؿشمیٓ ث
#!/usr/bin/python
# Filename: raising.py
class ShortInputException(Exception):
'''A user-defined exception class.'''
def __init__(self, length, atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast
try:
s = raw_input('Enter something --> ')
if len(s) < 3:
raise ShortInputException(len(s), 3)
# Other work can continue as usual here
except EOFError:
print '\nWhy did you do an EOF on me?'
except ShortInputException, x:
print 'ShortInputException: The input was of
length %d, \
was expecting at least %d' % (x.length,
x.atleast)
else:
print 'No exception was raised.'
خزٍجی
$ python raising.py
Enter something -->
@PythonForever
?Why did you do an EOF on me
زض ایٗ ٔظبَ ٔ ،ب ٞط چٙس ؤ ٝی سٛا٘ؿشیٓ اظ ٞطیه اظ ذُب ٞب ٚیب اؾشظٙبء ٞبی دیف فطو دبیش ٖٛاؾشفبز ٜوٙیٓ
،أب ثطای ٘كبٖ زازٖ ٞسف ٔبٖ ٛ٘ ،ع اؾشظٙبء ذٛزٔبٖ ضا ایؼبز وطزیٓ .ایٗ ٘ٛع اؾشظٙبء ػسیس ،والؼ
٘ShortInputExceptionبْ زاضز ،و ٝزاضای ز ٚفیّس ٞؿز :فیّس َ (length) َٛو ََٛ ٝزاز ٜقس ٜثٝ
ٚضٚزی اؾز ٚ ،فیّس حسالُ ) (atleastو ٝحسالُ َِٛی اؾز و ٝثط٘بٔ ٝا٘شظبض زضیبفز آٖ ضا زاضز .
ٕٞچٙیٗ ٔب زض ثالن ، exceptث ٝوالؼ ذُب ث ٝنٛضر یه ٔشغیط اقبضٔ ٜی وٙیٓ سب ث ٝذٛثی قیء ٔطث ٌٛثٝ
ذُب ٚیب اؾششظٙبء ضا زض ذٛز ٍ٘ ٝزاضز .ایٗ ُّٔت ضا ٔی سٛاٖ ثب دبضأشطٞب ٚآضٌٔٛبٖ ٞب زض فطاذٛا٘ی یه سبثغ
ٔمبیؿٕٛ٘ ٝز .زض زاذُ ایٗ ثالن exceptثرهٛل ٔ ،ب اظ فیّسٞبی atleast ٚ lengthاظ قیء اؾشظٙبء
اؾشفبز ٜوطزیٓ سب دیغبْ ٔٙبؾجی ضا ثطای وبضثط چبح وٙیٓ .
Try..Finaly
اٌط قٕب ثرٛاٞیس فبیّی ضا ؤ ٝی ذٛا٘یس ،چ ٝاؾشظٙبء ضخ ثسٞس ٚچ٘ ٝسٞس ،زضٞط حبَ زض دبیبٖ وبض ،فبیُ
ثؿش ٝقٛز چٔ ٝی وٙیس؟ ایٗ وبض ثب اؾشفبز ٜاظ ثالن finalyا٘ؼبْ ٔی قٛز .سٛػ ٝوٙیس و ٝقٕب ٔی سٛا٘یس یه
ػجبضر exceptضا ٕٞطا ٜثب یه ثالن finallyثطای ٕٞبٖ ثالن ٔ tryشٙبظطـ ،اؾشفبز ٜوٙیس .اٌط ؤ ٝی
ذٛاٞیس اظ ٞط ز ٚاؾشفبز ٜوٙیس ٔی ثبیؿز یىی ضا زض زاذُ زیٍطی لطاض ثسٞیس .
@PythonForever
Finally استفبدُ اس
#!/usr/bin/python
# Filename: finally.py
import time
try:
f = file('poem.txt')
while True: # our usual file-reading idiom
line = f.readline()
if len(line) == 0:
break
time.sleep(2)
print line,
finally:
f.close()
print 'Cleaning up...closed the file'
خزٍجی
$ python finally.py
Programming is fun
When the work is done
Cleaning up...closed the file
Traceback (most recent call last):
File "finally.py", line 12, in ?
time.sleep(2)
KeyboardInterrupt
@PythonForever
ًحَُ ی ػولکزد ایي هثبل
ٔب اظ لًیٔ ٝؼٕ َٛذٛا٘سٖ – فبیُ اؾشفبز ٜوطزیٓ .أب ٔٗ ثَٛ ٝض لطاضزازی ضٚقی ضا ثطای نجط وطزٖ زض حس 2
طب٘ی ٝدیف اظ چبح وطزٖ ٞط ذٍ ثب اؾشفبز ٜاظ زؾشٛض ٔ time.sleepؼطفی وطزْ .سٟٙب زِیُ آٖ ٓٞایٙؿز وٝ
ثط٘بٔ ٝث ٝآضأی اػطا قٛز ( دبیش ٖٛثط َجك شاسف ذیّی ؾطیغ ٞؿز ) ٍٙٞ .بٔی و ٝثط٘بٔ ٝزض حبَ اػطا ؾز ،
وّیس Ctrl-cضا ثطای لُغ وطزِٖ /غ ٛوطزٖ ثط٘بٔ ٝفكبض ثسٞیس .
ضٚقٗ ٞؿز و ٝاؾشظٙبء KeyboardInterruptدطسبح ٔی قٛز ٚثط٘بٔ ٝذبضع ٔی قٛز ،أب لجُ اظ ایٙىٝ
ثط٘بٔ ٝذبضع قٛز ،ػجبضار زض ٖٚثالن finnalyاػطا ٔی قٛز ٚفبیُ ثؿشٔ ٝی قٛز .
خالصِ
ٔب زض ٔٛضز ٘ح ٜٛی اؾشفبز ٜاظ زؾشٛضار try..finally ٚtry..exceptثحض زاقشیٓ ٔ .الحظٕٛ٘ ٝزیٓ وٝ
چُٛض ٘ٛع اؾشظٙبء ذٛزٔبٖ ضا ایؼبز وٙیٓ ٚچٍ ٝ٘ٛیه اؾشظٙبء ضا ثطاٍ٘یعیٓ .
زض فهُ ثؼسی ،وشبثرب٘ ٝاؾشب٘ساضز دبیش ٖٛضا ثطضؾی ذٛاٞیٓ وطز .
فْزست هٌذرجبت
6ذالنٝ
@PythonForever
کتبثخبًِ استبًذارد پبیتَى
هؼزفی
وشبثرب٘ ٝاؾشب٘ساضز دبیش ٖٛثب ٘هت دبیش ٖٛزض زؾشطؼ لطاض ٔی ٌیطز .ایٗ وشبثرب٘ ٝقبُٔ ذیُ ػظیٕی اظ ٔبغَٚ
ٞبی ٔفیس ٞؿز .ثؿیبض ٔٞ ٟٓؿز و ٝقٕب ثب وشبثرب٘ ٝاؾشب٘ساضز دبیش ٖٛآقٙب ثكٛیس چطا و ٝاٌط ثب ٔبغٞ َٚبی
ایٗ وشبثرب٘ ٝآقٙب ثبقیس ،ثؿیبضی اظ ٔكىالر قٕب ٔی سٛا٘س آؾبٖ سط ٚؾطیغ سط حُ قٛز .
ٔی ذٛاٞیٓ ثطذی اظ ایٗ ٔبغٞ َٚبی وشبثرب٘ ٝضا و ٝاؾشفبز ٜضایغ سطی زاض٘س سٛيیح ثسٞیٓ .قٕب ٔی سٛا٘یس
ػعئیبر وبّٔشطی ثطای سٕبْ ایٗ ٔبغٞ َٚبی وشبثرب٘ ٝاؾشب٘ساضز دبیش ٖٛضا زض لؿٕز ""Library Refrenceاظ
ٔؿشٙسار دبیش ٖٛث ٝزؾز ثیبٚضیس .ایٗ ضإٙٞب ٘یع ثب ٘هت دبیش ٖٛزض اذشیبض قٕب لطاض ٔی ٌیطز .
هبصٍل sys
ٔبغ sys َٚقبُٔ ػّٕیبر ٔرهٛل ؾیؿشٓ اؾز .ثطای ٔظبَ زض ظیط ذٛاٞیٓ زیس وِ ، sys.argv ٝیؿشی
قبُٔ آضٌٔٛبٖ ٞبی ذٍ فطٔبٖ ٞؿز .
#!/usr/bin/python
# Filename: cat.py
import sys
def readfile(filename):
''''''Print a file to the standard output.
)f = file(filename
while True:
)(line = f.readline
if len(line) == 0:
break
print line, # notice comma
)(f.close
@PythonForever
# Script starts from here
if len(sys.argv) < 2:
print 'No action specified.'
sys.exit()
if sys.argv[1].startswith('--'):
option = sys.argv[1][2:]
# fetch sys.argv[1] but without the first two
characters
if option == 'version':
print 'Version 1.2'
elif option == 'help':
print '''\
This program prints files to the standard output.
Any number of files can be specified.
Options include:
--version : Prints the version number
--help : Display this help'''
else:
print 'Unknown option.'
sys.exit()
else:
for filename in sys.argv[1:]:
readfile(filename)
خزٍجی
$ python cat.py
No action specified.
@PythonForever
$ python cat.py --version
Version 1.2
ایٗ ثط٘بٔ ٝؾؼی ٔی وٙس و ٝوبض زؾشٛض catزض ِیٛٙوؽ/ی٘ٛیىؽ ضا ثطای وبضثطاٖ سمّیس وٙس .قٕب وبفیؿز ٘بْ
ٞبی ثطذی اظ فبیّٟبی ٔشٙی ضا زض ػّٛی آٖ ٔكرم وٙیس سب ٔحشٛای آٟ٘ب ضا ثطٚی ذطٚػی چبح وٙس .
ٚلشی و ٝیه ثط٘بٔ ٝدبیش ٖٛاػطا ٔی قٛز ،یؼٙی ٘ ٝزض ُٔس سؼبّٔی ،حسالُ یه آیشٓ زض ِیؿز sys.argvلطاض
ٔی ٌیطز و٘ ٝبْ ثط٘بٔ ٝی فؼّی ؾز و ٝزض حبَ اػطاؾز ٚزض ذب٘ sys.argv[0] ٝلطاض ٔی ٌیطز ،چطا وٝ
ِیؿز ٞب زض دبیش ٖٛاظ 0قطٚع ٔی ق٘ٛس ٔ .ب ثمی آضٌٔٛبٖ ٞب ی ذٍ فطٔبٖ ث ٝز٘جبَ ایٗ آیشٓ ٔی آیٙس .
زض ایٗ ٔظبَ ثطای ایٙى ٝثط٘بٔ ٝی ٔب وبضثط دؿٙس ثبقس ،یىؿطی ٌعیٞ ٝٙبیی )(optionsضا ثطای ثط٘بٔ ٝفطآٞ
وطزیٓ سب وبضثط ثب اؾشفبز ٜاظ آٖ ٞب اَالػبر ثیكشطی زض ٔٛضز ثط٘بٔٔ ٝب وؿت وٙس .اظ اِٚیٗ آضٌٔٛبٖ ثطای ثطضؾی
ایٙى ٝآیب ٌعی ٝٙایی ثطای ثط٘بٔٔ ٝكرم قس ٜاؾز یب ذیطاؾشفبزٔ ٜی وٙیٓ .اٌط ٌعی ٝٙی --versionث ٝوبض
ضفش ٝثٛز ،قٕبض ٜی ٘ؿر ٝثط٘بٔ ٝچبح ٔی قٛز ٚ .ثُٛض ٔكبثٍٙٞ ، ٝبٔیىٌ ٝعیٔ --help ٝٙكرم ٔی قٛز ،
اَالػبسی وّی اظ ثط٘بٔ ٝزازٔ ٜی قٛز .اظ سبثغ ٘ sys.exitیع ثطای ذطٚع اظ ثط٘بٔ ٝزض حبَ اػطا اؾشفبزٔ ٜی قٛز .
ثطای ػعئیبر ثیكشط ) help(sys.exitضا ٔالحظٕ٘ ٝبئیس .
ٍٙٞبٔی وٌ ٝعی ٝٙایی زض ػّٛی اؾٓ ثط٘بٔٔ ٝكرم ٘كس ٜثبقس ٘ ٚ ،بْ فبیُ ٞب ث ٝثط٘بٔ ٝدبؼ زاز ٜقٛز ،ثط٘بٔٝ
ث ٝضاحشی ثٕٞ ٝبٖ سطسیجی و ٝزض ذٍ فطٔبٖ آٚضز ٜقس ٜاؾز ٞ ،ط ذٍ اظ فبیُ ٞب ضا زض ذطٚػی چبح ٔی وٙس .
زضحبقی ٝثبیس ٌفز و٘ ٝبْ ٔ catرشهطی ثطای( ٓٞ concatenateظ٘ؼیطوطزٖ) ٞؿز و ٝزض انُ ٕٞبٖ وبضی
ؾز و ٝثط٘بٔ ٝا٘ؼبْ ٔی زٞس .ؤ ٝی سٛا٘س یه فبیُ یب ز ٚفبیُ ٚیب قٕبضی اظ فبیُ ٞب ضا ث ٓٞ ٝثچؿجب٘س /ظ٘ؼیط
وٙس ٚزض ذطٚػی چبح وٙس .
@PythonForever
کوی ثیشتز درثبرُ sys
زؾشٛض sys.versionضقش ٝایی قبُٔ اَالػبسی زض ذهٛل ٘ؿح ٝدبیش٘ٛی و٘ ٝهت وطز ٜایس ضا ث ٝقٕب ٘كبٖ
ٔی زٞس .زؾشٛض sys.version_infoقبُٔ یه چٙسسبیی اؾز و ٝوبض ثب ٔمبزیط ٘ؿر ٝی دبیش ٖٛزض ثط٘بٔ ٝضا
آؾبٖ سطٔی ؾبظز .
هبصٍل os
ایٗ ٔبغ َٚػّٕیبر ٔرهٛل ِ ؾیؿشٓ ػبُٔ ضا اضائٔ ٝی زٞس .ایٗ ٔبغٔ َٚرهٛنب ٍٙٞبٔی ؤ ٝی ذٛاٞیس
ثط٘بٔ ٝقٕب ٔؿشمُ اظ platformثبقس ،ثؿیبض ٔ ٟٓاؾز .ثسیٗ ٔؼٙی و ، ٝقٕب ضا لبزض ٔی ؾبظز ثط٘بٔٞ ٝبیی
ثٛٙیؿیس و ٓٞ ٝثطٚی ٓٞ ٚLinuxثطٚی Windowsثس ٖٚوٛچه سطیٗ ٔكىّی ٚثس٘ ٖٚیبظ ث ٝسغییطاسی
وبضوٙس .ثؼٛٙاٖ ٔظبِی زض ایٗ ٔٛضز اؾشفبز ٜاظ ٔشغیط os.sepث ٝػبی ػساوٙٙسٔ ٜؿیط ذبل ٞط ؾیؿشٓ ػبُٔ
ٞؿز[ ٔ .شطػٓ :ػساوٙٙسٔ ٜؿیط ،زض ِیٛٙوؽ وبضوشط ٚ /زض ٚیٙسٚظ وبضاوشط \ ٞؿز ] .
ثطذی اظ ثرف ٞبیی اظ ٔبغ os َٚؤ ٝفیسسط ٞؿشٙس زض ظیط فٟطؾز قس ٜاؾز ،اوظط ذٛز سٛنیف ٞؿشٙس .
• os.name :قبُٔ ضقش ٝایی ؾز و platform ٝایی و ٝزض حبَ اؾشفبز ٜاظ آٖ ٞؿشیس ضا ٔكرم
ٔی وٙس ٔ .ظُ ' 'ntثطای ٚیٙسٚظ 'posix' ٚثطای وبضثطاٖ Linux/unix .
•سبثغ )( ، os.getcwdزایطوشٛضی ػبضی ضا ثط ٔی ٌطزا٘س ،ثسیٗ ٔؼٙی ؤ ٝؿیط زایطوشٛضی ایی ضا وٝ
ثط٘بٔ ٝدبیش ٖٛفؼّی زض حبَ وبض ثطٚی آٖ اؾز ضا ثطٔی ٌطزا٘س .
•سٛاثغ )( os.putenv() ٚ os.getenvث ٝسطسیت ثطای ٌطفشٗ ٚسٙظیٓ وطزٖ ٔشغیطٞبی ٔحیُی ثٝ
@PythonForever
•سبثغ )( os.systemثطای اػطای یه زؾشٛض سحز cmd/shellث ٝوبض ٔی ضٚز .
• os.linesep :ضقش ٝایی ضا ٔی زٞس و ٝحبٚی دبیبٍ٘ط ذٍ زض platformفؼّی ؾز .ثطای ٔظبَ ،
)'>>> os.path.split('/home/swaroop/byte/code/poem.txt
)'('/home/swaroop/byte/code', 'poem.txt
•سٛاثغ )( os.path.isdir() ٚos.path.isfileث ٝسطسیت ثطضؾی ٔی وٙٙس و ٝآیب ٔؿیط ٔكرم قسٜ
ث ٝیه فبیُ اقبضٔ ٜی وٙس ٚیب ث ٝیه زایطوشٛضی ٔ .كبث ٝسبثغ )( os.path.existاؾز و ٝثطای ثطضؾی
ایٙىٔ ٝؿیط ٔكرم قسٚ ٜالؼب ٚػٛز زاضز یب ذیط ث ٝوبض ٔی ضٚز .
قٕب ٔی سٛا٘یس ٔؿشٙسار اؾشب٘ساضز دبیش ٖٛضا ثطای ػعئیبر ثیكشط ایٗ سٛاثغ ٔ ٚشغیطٞب ٚاضؾی وٙیس ٔ .ی سٛا٘یس اظ
زؾشٛض ) ٚ help(sysیب غیط ٜاؾشفبز ٜوٙیس .
خالصِ
ثطذی اظ ػّٕیبر ٔبغٞ َٚبی os ٚ sysاظ وشبثرب٘ ٝی اؾشب٘ساضز دبیش ٖٛضا ٔكبٞسٕٛ٘ ٜزیٓ .قٕب ٔی ثبیؿز
ٔؿشٙسار اؾشب٘ساضز دبیش ٖٛضا ثطای ایٗ ٔبغٞ َٚب ٚزیٍط ٔبغٞ َٚب ٚاضؾی وٙیس .
زض فهُ ثؼسی ،ػٙجٞ ٝبی ٔرشّفی اظ دبیش ٖٛضا وٌ ٝكز ٔب زض ز٘یبی دبیش ٖٛضا وبُٔ سط ٔی وٙس ضا دٛقف
ذٛاٞیٓ زاز .
فْزست هٌذرجبت
@PythonForever
5زضیبفز چٙسسبیی ٞب ِ ٚیؿز ٞب زض سٛاثغ
8زؾشٛضassert
9سبثغrepr
10ذالنٝ
ثبس ّن اس پبیتَى
سب ثسیٗ ػب ٔ ،ب ػٙجٞ ٝبی ٔرشّفی اظ دبیش ٖٛضا و ٝقٕب ث ٝوبض ذٛاٞیس ٌطفز دٛقف زازیٓ .زضایٗ فهُ ٔ ،ب
ثطذی ٔفبٞیٓ زیٍطی ضا و ، ٝزا٘ف ٔب ضا اظ دبیش ٖٛوبُٔ سط ذٛاٞس وطز ،ضا دٛقف ٔی زٞیٓ .
هتذّبی خبص
ٔشسٞبی ثرهٛنی ٞؿشٙس ؤ ٝؼٙبی ذبنی زض والؼ ٞب زاض٘س ٔ ،ظُ ٔشسٞبی __ __del__ ٚ __initؤ ٝب
لجال ٔفبٞیٓ آٖ ٞب ضا ٔالحظٕٛ٘ ٝزیٓ .
ثُٛضوّی ٔ ،شسٞبی ذبل ثطای سمّیس ضفشبض ثرهٛنی ث ٝوبض ٌطفشٔ ٝی ق٘ٛس .ثطای ٔظبَ ،اٌط قٕب ثرٛاٞیس اظ
ػٍّٕط ایٙسوؽ ] x[keyثطای والؼ سبٖ اؾشفبز ٜوٙیس ( ٕٞبٖ َٛضی و ٝثطای ِیؿز ٞب ٚچٙسسبیی ٞب اؾشفبزٜ
ٔی وٙیس ) ،سٟٙب وبفی ؾز ؤ ٝشسی ث٘ ٝبْ )(__ __getitemضا ث ٝوالؼ سبٖ ايبف ٝوٙیس سب ایٗ وبض ا٘ؼبْ
قٛز .اٌط ث ٝایٗ ٔٛيٛع فىط وٙیس ٔشٛػٔ ٝی قٛیس و ٝایٗ ٕٞبٖ وبضی ؾز و ٝو ٝدبیش ٖٛذٛزـ ثطای والؼ
listا٘ؼبْ زاز ٜاؾز !
ثطذی اظ ٔشسٞبی ذبل زض ػس َٚظیط ِیؿز قس ٜا٘س .اٌط ٔی ذٛاٞیس زضثبض ٜی سٕبْ ایٗ ٔشسٞبی ثرهٛل
اَالػبر وؿت وٙیس ،زض ضإٙٞبی ٔطػغ دبیشِ ٖٛیؿز ظیبزی اظ آٖ ٞب زض زؾشطؼ اؾز .
٘بْ -سٛيیحبر
__( ... , init__(selfایٗ ٔشس دیف اظ آٖ و ٝیه قیء ثُٛض ػسیس ایؼبز ٚثطٌطزا٘س ٜقٛز ،
@PythonForever
__ٛٔ(str__(selfالؼی و ٝاظ زؾشٛض ٚ printیب )( strثطای یه قیء اؾشفبزٔ ٜی وٙیٓ ،فطاذٛا٘ی
ثَٛ ٝض ٔكبثٔ ٝشسٞبی ذبنی ثطای ٔبثمی ػٍّٕطٞب ٚ ٓٞػٛز زاضز (ٔظُ ٚ> ، +غیط) . ٜ
__ٚ(getitem__(self,keyلشی و ٝػٍّٕط ایٙسوؽ ] x[keyث ٝوبضٌطفشٔ ٝی قٛز ،فطاذٛا٘ی ٔی
قٛز .
__ٍٙٞ(len__(selfبٔیى ٝسبثغ سٛوبض )(lenثطای اقیبء ز٘جبِ ٝایی ث ٝوبض ٔی ضٚز ،فطاذٛا٘ی ٔی قٛز.
سب و ،ٖٛٙحشٕب ٔشٛػ ٝقس ٜایس وٞ ٝط ثّٛوی اظ زؾشٛضار ،فبنّ ٝاـ ضا ثٛؾیّ ٝی ؾُح سٛضفش ٝذٛزـ سٙظیٓ
ٔی وٙس .ذت ،ایٗ ُّٔت ثطای ثیكشط ٔٛالغ زضؾز ٞؿز ،أب ٘ ٝزلیمب نس زضنس .اٌط ثّٛوی اظزؾشٛضار سٟٙب
قبُٔ یه زؾشٛض ثبقس ٔ ،ی سٛا٘یس آٖ ضا زض ٕٞبٖ ذٍ ٔكرم وٙیس ٔ .ظُ یه زؾشٛض قطَی یب زؾشٛض حّمٝ
ایی ٔ .ظبَ ظیط ٔی ثبیؿز ایٗ ُّٔت ضا ٚايح سط ٕ٘بیس .
ٕٞبٖ َٛضی ؤ ٝالحظٔ ٝی وٙیس ،زض ایٙؼب یه سه زؾشٛض ٝ٘ ٚیه ثّٛن ٔؼعا اؾشفبز ٜقس ٜاؾز ٕٞ .چٙیٗ
ٔی سٛا٘یس ثطای وٛسب ٜسطقسٖ ثط٘بٔ ٝسبٖ اظ ایٗ حبِز اؾشفبز ٜوٙیس .اِجش ٗٔ ٝث ٝقسر ث ٝقٕب دیكٟٙبز ٔی وٓٙ
و٘ ٝجبیس اظ ایٗ ضٚـ ٔیبٖ ثط اؾشفبز ٜوٙیس ٍٔ ،ط ثطای ثطضؾی ذُب ٚغیط . ٜیىی اظ زالیُ انّی آٖ ٓٞایٗ
ٞؿز و ، ٝاٌطاظ سٛضفشٍی ٔؼٕ َٛاؾشفبز ٜوٙیس ،ذیّی آؾبٖ سطٔی سٛاٖ یه زؾشٛض زیٍط ضا ث ٝآٖ ايبفٕٛ٘ ٝز .
سٛػ ٝزاقش ٝثبقیس وٍٙٞ ٝبٔی ؤ ٝفؿط دبیش ٖٛزض ُٔس سؼبّٔی ث ٝوبض ٌطفشٔ ٝی قٛز ،ثب سغییط ٔٙبؾت اػالٖ
ذٍ فطٔبٖ ،ث ٝقٕب زض ٚاضز وطزٖ زؾشٛضار وٕه ٔی وٙس .ثطای ٔظبِی زض ایٗ ٔٛضز ،ثؼس اظ ایٙى ٝقٕب وّٕٝ
وّیسی ifضا ٚاضز وطزیس ٔ ،فؿط دبیش ٖٛثطای ٘كبٖ زازٖ ایٙى ٝػّٕٛٙٞ ٝظ وبُٔ ٘كس ٜاؾز اػالٖ ذٍ ٕ٘بیف ضا
ث ... ٝسغییط ٔی زٞس .زض ایٗ حبِز ٚ ،لشی ؤ ٝب ٔبثمی زؾشٛضار ضا وبُٔ وطزیٓ ،وّیس enterضا ثطای سبییس
ایٗ و ٝزؾشٛضار ٔب وبُٔ قس ٜاؾز فكبض ٔی زٞیٓ .ؾذؽ ،دبیش ٖٛسٕبٔی زؾشٛضار ٚاضز قس ٜضا اػطا ٔی وٙس
ٚاػالٖ ذٍ فطٔبٖ لجّی ضا ثط ٔی ٌطزا٘س ٚثطای زضیبفز ٚضٚزی ثؼسی ٔٙشظط ٔی ٔب٘س .
@PythonForever
List Comprehension
ٞList Comprehensionب ثطای ٔكشك وطزٖ یه ِیؿز ػسیس اظ ِیؿز ٔٛػٛز اؾشفبزٔ ٜی ق٘ٛس .ثطای
ٔظبَ ،قٕب یه ِیؿشی اظ اػساز زاضیس ٔ ٚی ذٛاٞیس یه ِیؿز ٔكبث ٝثب آٖ ث ٝزؾز ثیبٚضیس ،ثَٛ ٝضی و ٝثٝ
اظای ٕٝٞی اػًبی آٖ ِیؿز اٌط ٞط ػً ٛآٖ اظ 2ثعضٌشط ٞؿشٙس زض 2يطة قس ٜثبقٙس ،ثطای چٙیٗ ٔٛاضزی
ٙٔList Comprehensionبؾت ٞؿز .
#!/usr/bin/python
# Filename: list_comprehension.py
خزٍجی
زض ایٙؼب ٔ ،ب یه ِیؿز ػسیس ضا ثب ٔكرم وطزٖ ٔحبؾج ٝایی ( *i) 2و ٝثبیس ثؿش ٝث ٝقطٌ سؼییٗ قس(if i ٜ
)> 2ا٘ؼبْ ثسٞس ٔكشك ٔی وٙیٓ .سٛػ ٝوٙیس وِ ٝیؿز انّی زؾز ٘رٛضز ٜثبلی ٔی ٔب٘س .ثؿیبضی اظ اٚلبر ،
ٔب اظ حّم ٝثطای دطزاظـ ٞط ػٙهط اظ ِیؿز اؾشفبزٔ ٜی وٙیٓ ٕٞ ،چیٗ ٔٛاضزی ٔی سٛا٘س ثَ ٝطظ نطیح ٚفكطزٜ
ٚثب نطاحز ثیكشطی ثٛؾیّ ٝی List Comprehensionث ٝثسؾز آیس .
@PythonForever
دریبفت چٌذتبیی ّب ٍ لیست ّب در تَاثغ
ضٚـ ٞبی ثرهٛنی ثطای زضیبفز دبضٔشطٞب زض یه سبثغ ثؼٛٙاٖ ِیؿز ٚیب زیىكٙطی و ٝث ٝسطسیت ثب اؾشفبز ٜاظ
دیك٘ٛسٞبی * ٚیب ** ٔكرم ٔی ق٘ٛس ٚ ،ػٛز زاضز .ایٗ ٔؿئّ ٝثطای ظٔب٘ی و ٝسؼساز ٔشغیطٞبی آضٌٔٛبٖ ٞب
زض سبثغ ثسؾز ٔی آیس ٔ ،فیس ٔی ثبقس .
ث ٝزِیُ اؾشفبز ٜاظ دیك٘ٛس * زض ٘بْ ٔشغیط ، argsسٕبٔی آضٌٔٛبٖ ٞبی ايبفی اضؾبِی ث ٝسبیغ زض ایٗ ٔشغیط
،argsثؼٛٙاٖ یه tupleشذیطٔ ٜی ق٘ٛس .اٌط ث ٝػبی آٖ اظ دیك٘ٛس ** زض ٘بْ ٔشغیط اؾشفبزٔ ٜی قس ،
دبضأشطٞبی ايبفی ٔی ثبیؿز ثهٛضر ػفزِ وّیسٔ/مساض اظ یه زیىكٙطی ٔٛضز ثطضؾی لطاض ٔی ٌطفشٙس .
#!/usr/bin/python
# Filename: lambda.py
def make_repeater(n):
return lambda s: s * n
)twice = make_repeater(2
@PythonForever
)'print twice('word
)print twice(5
خزٍجی
زض ایٙؼب ٔ ،ب اظ سبثغ make_repeaterثطای ایؼبز یه قیء سبثؼی ػسیس ٚثطٌطزا٘سٖ آٖ زض ظٔبٖ اػطا اؾشفبزٜ
وطزیٓ .و ٝزض آٖ زؾشٛض lambdaثطای ایؼبز قیء سبثؼی ث ٝوبض ٌطفش ٝقس ٜاؾز .الظٔؿز و ٝثس٘جبَ
دبضأشط lambdaیه سه ػجبضر آٚضز ٜقٛز ،و ٝث ٝسٟٙبیی ٘مف ثس٘ ٝی سبثغ ضا زاضز ٔ ٚمساض ایٗ ػجبضر ثب یه
سبثغ ػسیس ثطٌطزا٘سٔ ٜی قٛز .سٛػ ٝوٙیس و ٝحشی یه زؾشٛض ٕ٘ ٓٞ printی سٛا٘س زض زاذُ فطْ lambda
لطاض ثٍیطز ،سٟٙب ٔؼبظ ث ٝاؾشفبز ٜاظػجبضر ٞؿشیٓ .
زؾشٛض execثطای اػطای زؾشٛضار دبیش ٖٛو ٝزض یه ضقش ٚ ٝیب یه فبیُ شذیط ٜقس ٜا٘س ،اؾشفبزٔ ٜی قٛز .
ثطای ٔظبَ ٔ ،ب ٔی سٛا٘یٓ یه ضقش ٝقبُٔ وسٞبی دبیش ٖٛضا زض ظٔبٖ اػطا ایؼبز وٙیٓ ٚؾذؽ ایٗ زؾشٛضار ضا ثب
اؾشفبز ٜاظ زؾشٛض execاػطا وٙیس .یه ٔظبَ ؾبز ٜزض ظیط آٔس ٜاؾز :
زؾشٛض evalثطای اضظیبثی ) (evaluateاػشجبض ػجبضار دبیش ٖٛو ٝزض یه ضقش ٝشذیط ٜقس ٜا٘س ث ٝوبض ٔی ضٚز .
یه ٔظبَ ؾبز ٜزض ظیط ٘كبٖ زاز ٜقس ٜاؾز .
@PythonForever
دستَر assert
ػجبضر assertثطای اشػبٖ ث ٝزضؾشی یه چیع ث ٝوبض ٔی ضٚز .ثطای ٔظبَ ،اٌط قٕب وبٔال ُٕٔئٗ ٞؿشیس وٝ
ٔی ثبیؿز حسالُ یه ػٙهط زض ِیؿشی و ٝقٕب زض حبَ اؾشفبز ٜاظ آٖ ٞؿشیس ٚػٛز زاقش ٝثبقس ٔ ٚی ذٛاٞیس
) (raiseقٛز ،ثطای یه چٙیٗ ایٗ ٔؿئّ ٝضا چه وٙیس ثُٛضی و ٝاٌط آٖ زضؾز ٘جبقس ذُبیی ثطذبؾشٝ
ٔٛاضزی زؾشٛض ٙٔ assertبؾت اؾز ٍٙٞ .بٔیى ٝزؾشٛض ٘ assertمى قٛز ،یه AssertionErrorثطدب
)ٔ(raiseی قٛز .
تبثغ repr
سبثغ reprثطای ثسؾز آٚضزٖ ٕ٘بیف ٔشؼبضف یه ضقش ٝاؾشفبزٔ ٜی قٛز( ٕٞ .چٙیٗ ػالٔز `` )(Backtick
،و ٝسجسیُ ) ٚ (conversionیب ٘مُ لٔ َٛؼىٛؼ )٘(reverse quotesبٔیسٔ ٜی قٛز ٘یع ٕٞیٗ وبض ضا ا٘ؼبْ
ٔی زٞس ) .
@PythonForever
ثُٛض وّی ،سبثغ reprیب ػفز ػالٔز backtickثطای ثسؾز آٚضزٖ یه ٕ٘بیف لبثُ چبح اظ قیء ثسؾز ٔی
آیس .قٕب ٔی سٛا٘یس آ٘چ ٝو ٝاقیبء قٕب ثطای سبثغ reprثط ٔی ٌطزا٘ٙس ضا ثب سؼطیف ٔشس __ __reprزض والؼ
سبٖ وٙشطَ وٙیس .
خالصِ
ٔب ثطذی زیٍط اظ ٚیػٌی ٞبی دبیش ٖٛضا زض ایٗ فهُ ُٕٔ ٚئٙبً ٘ ٝسٕبْ آٖ ضا دٛقف زازیٓ .ثٞ ٝط حبَ ،زض ایٗ
ٔطحّ ، ٝثیكشط آ٘چ ٝو ٝاوظط اٚلبر ثب آٖ زض ثط٘بٔٞ ٝبی سبٖ ض ٚث ٝضٔ ٚی قٛیس ضا دٛقف زازیٓ .و ٝثطای قطٚع
ثط٘بٔٞ ٝبیی و ٝلهس ٘ٛقشٗ آٖ ضا زاضیس ٙٔ ،بؾت اؾز .
زض فهُ ثؼسی ٔ ،ب زضثبض٘ ٜح ٜٛی اوشكبف ثیكشطزض دبیش ٖٛثحض ذٛاٞیٓ وطز .
فْزست هٌذرجبت
6ذالنٝ
اٌط وشبة ضا سب ثسیٗ ػب ذٛا٘س ٜثبقیس ٛ٘ ٚقشٗ ثط٘بٔٞ ٝبی ظیبزی ضا سٕطیٗ وطز ٜثبقیس ٔ ،ی ثبیؿز دبیش ٖٛثطای
قٕب آقٙب ٚضاحز قس ٜثبقس .احشٕبال ثط٘بٔٞ ٝبیی ث ٝظثبٖ دبیش ٖٛایؼبز وطز ٜایس ٚؾؼی وطز ٜایس ٟٔبضر ثط٘بٔٝ
٘ٛیؿی سبٖ ضا ث ٝذٛثی ث ٝوبض ثٍیطیس ٚاٌط ٓٞسب و ٖٛٙایٗ وبض ضا ا٘ؼبْ ٘ساز ٜایس الظٔؿز و ٝایٗ وبض ضا ا٘ؼبْ
ثسٞیس .أب او ٖٛٙحشٕب ٔی دطؾیس و" ٝثؼس اظ آٖ چی ؟ "
ذت ٔٗ فطو ٔی و ٓٙو ٝقٕب ثب یه چٙیٗ ٔؿئّ ٝایی ضٚث ٝضٞ ٚؿشیس :ؾبذز یه ثط٘بٔٔ ٝظُ "وشبثچ ٝی -
آزضؼ" سحز ذٍ فطٔبٖ و ٝثشٛاٖ اَالػبسی ضا ايبف ، ٝحسف ٚیب ٚیطایف ٕ٘ٛز ٚیب اَالػبسی ضا ثطای سٕبؼ ثب
@PythonForever
زٚؾشبٖ ،ذب٘ٛاز ٚ ٜیب ٕٞىبضاٖ ،ػؿشؼٕٛ٘ ٛز ٚیب ٕٞچٙیٗ اَالػبسی اظ آٟ٘ب ٕٞچ ٖٛآزضؼ ایٕیُ ٚقٕبضٜ
سّفٗ ضا ػؿشؼ ٛوطز .ایٗ چٙیٗ ػعئیبسی ٔی ثبیؿز شذیط ٜق٘ٛس سب ثشٛاٖ ثطای اؾشفبزٞ ٜبی ثؼسی آٟ٘ب ضا
ثبظیبثی ٕ٘ٛز .
اٌط زضثبض ٜی ٕٞچیٗ ٔؿئّ ٝایی فىط وٙیس ٔ ،كرم ٞؿز و ٝثب سٛػ ٝثٔ ٝجبحض ٌ٘ٛبٌ٘ٛی و ٝسب ثسیٗ ػب
آٔٛذشیٓ ،حُ آٖ آؾبٖ اؾز ،أب اٌط ٛٙٞظ ٔی ذٛاٞیس زضثبض ٜی ٘ح ٜٛی حُ ایٗ ٔؿئّ ٝثسا٘یس ،زض ظیط یه
ضإٙٞبیی ثطای قٕب آٚضز ٜقس ٜاؾز .
راٌّوبیی ( .قزار ّست کِ ایي را ًخَاًیذ ) .یه والؼ ثطای ٕ٘بیف اَالػبر اقربل ایؼبز ٔی وٙیس ٚ .اظ
یه زیىكٙطی ثطای شذیط ٜاقیبء یی اظ ٘ٛع اقربل اؾشفبزٔ ٜی وٙیس ،ثَٛ ٝضی و٘ ٝبْ قبٖ ثؼٛٙاٖ وّیس
زیىكٙطی ثبقس .ؾذؽ اظ ٔبغ cPickle َٚثطای شذیط ٜی ایٗ اقیبء ثهٛضر دبیساض ثطٚی ٞبضز زیؿه اؾشفبزٜ
وٙیس ٚ .زضٟ٘بیز اظ ٔشسٞبی ذٛزوبض زیىكٙطی ثطای ايبف ٝوطزٖ ،حصف ٚیب سغییط اَالػبر اقربل ثٟط ٜثجطیس
.
یىجبض وٕٞ ٝچیٗ وبضی ضا ا٘ؼبْ ثسٞیس ٔ ،ی سٛا٘یس ازػب وٙیس و ٝیه ثط٘بٔٛ٘ ٝیؽ دبیش ٖٛقس ٜایس .دؽ اوٖٛٙ
فٛضا ثربَط ایٗ وشبة اضظقٕٙس ثطای ٔٗ یه ایٕیُ ثفطؾشیس (-; .ایٗ ٌعی ٝٙاذشیبضی ؾز ِٚی دیكٟٙبز ٔی قٝ
و ٝحشٕب ا٘ؼبْ ثسٞیس !
زضازأ ٝثطذی اظ ضاٞ ٜب ثطای ازأ ٝؾفطسبٖ ثب دبیش ٖٛآٚضز ٜقس ٜاؾز .
وشبثرب٘ٞ ٝبی GUIثطای دبیش – ٖٛقٕب ٔی ثبیؿز ثطای ایؼبز ثط٘بٔٞ ٝبی ٌطافیىی ثب اؾشفبز ٜاظ دبیش ٖٛاظ یىی
ٚ IrfanViewیب .قٕب ٔی سٛا٘یس ٘طْ افعاضٞبی ٌطافیىی ٕٞچٖٛ اظ ایٗ وشبثرب٘ٞ ٝب اؾشفبز ٜوٙیس
ٔ Kuickshowرهٛل ث ٝذٛزسبٖ ضا ٚیب ٞطچیعی قجی ٝث ٝآٖ ضا ثط دبی ٝی وشبثرب٘ٞ ٝبی GUIایی و ٝثٝ
دبیش bind ٖٛقس ٜا٘س ایؼبز وٙیس ٙٔ ، .ظٛض اظ bindقسٖ آ٘ؿز و ٝث ٝقٕب اػبظٔ ٜی زٞس ثط٘بٔٞ ٝب ی سبٖ ضا
زض دبیش ٖٛثٛٙیؿیس ٚؾذؽ اظ وشبثرب٘ٞ ٝبیی و ٝذٛزقبٖ ث ٝظثبٖ ٚ Cیب C++یب زیٍط ظثبٖ ٞب ٘ٛقش ٝقس ٜا٘س ،
اؾشفبز ٜوٙیس .
ا٘شربة ٞبی ظیبزی ثطای اؾشفبز ٜاظ یه GUIثطای دبیشٚ ٖٛػٛز زاضز :
• PyQt :ایٗ وشبثرب٘bind ، ٝقس ٜایی اظ ػؼج ٝاثعاض Qtثطای دبیش ٖٛاؾز ،وشبثرب٘ ٝایی و ٝدبیٚ ٝ
اؾبؼ KDEثطٚی آٖ ؾبذش ٝقس ٜاؾز . Qtثیٟٙبیز ضاحز اؾز ٚثطای اؾشفبز ٜثؿیبض لسضسٕٙسؾز
@PythonForever
ثرهٛل ثب اؾشفبز ٜاظ ٔ ٚ Qt Designerؿشٙسار ٔشحیط وٙٙس ٜی Qt .قٕب ٔی سٛا٘یس ثهٛضر آظاز اظ
آٖ ثطای ِیٛٙوؽ اؾشفبز ٜوٙیس ِٚی ثطای اؾشفبز ٜی آٖ زض ٚیٙسٚظ ٔی ثبیؿز د َٛدطزاذز وٙیس ٚ
ٕٞچٙیٗ PyQtزض نٛضسیى ٝثرٛاٞیس ٘طْ افعاضٞبی آظاز زض ِیٛٙوؽ /ی٘ٛیىؽ ایؼبز وٙیس آظاز ٞؿز
)ِٚ (GPL'edی زض نٛضسیى ٝثرٛاٞیس ٘طْ افعاضٞبی سؼبضی ایؼبز وٙیس ٔی ثبیؿز د َٛدطزاذز وٙیس.
PyQtوشبة "ثط٘بٔٛ٘ ٝیؿی GUIثب دبیش٘ : ٖٛؿر("GUI ، QT" ٝ یه ٔٙجغ ذٛة ثطای
)"ٔProgramming with Python: Qt Editionی ثبقس .آزضؼ [] . 1ثطای ػعئیبر
ثیكشطزضثبض ٜی ایٗ وشبثرب٘ ٝث ٝآزضؼ ٚة ؾبیز انّی آٖ ث٘ ٝكب٘ی [ٔ] 2طاػؼٕ٘ ٝبئیس .
• PyGTK .ایٗ وشبثرب٘bind ، ٝقس ٜایی اظ ػؼج ٝاثعاض GTk+ثطای دبیشٔ ٖٛی ثبقس .وشبثرب٘ ٝایی
و ٝدبی ٚ ٝاؾبؼ Gnomeثط اؾبؼ آٖ ؾبذش ٝقس ٜاؾز . GTK+ذهّز ٞبی ثرهٛل ظیبزی زاضز
GUIؾطیؼی ضا ایؼبز وٙیس . أب ٚلشی یىجبض ثب آٖ ضاحز قٛیس ٔ ،ی سٛا٘یس ثط٘بٔٞ ٝبی وبضثطزی ِ
اؾشفبز ٜاظ َطاح ٚاؾٍ ٌطافیىی Gladeاػشٙبة ٘بدصیطؾز ٔ .ؿشٙسار ایٗ وشبثرب٘ٛٙٞ ٝظ ٓٞزض حبَ
دیكطفز ٚانالح قسٖ اؾز . Gtk+ث ٝذٛثی زض ِیٛٙوؽ وبض ٔی وٙس ،أب ا٘شمبَ آٖ ثٚ ٝیٙسٚظٛٙٞظ
وبُٔ ٘كس ٜاؾز .قٕب ٔی سٛا٘یس ٘ ٓٞطْ افعاضٞبی آظاز ٘ ٓٞ ٚطْ افعاضٞبی سؼبضی ضا ثب اؾشفبز ٜاظ
GTK+ایؼبز وٙیس ٚ .ة ؾبیز ضؾٕی آٖ ضا [] 3ثطای ػعئیبر ثیكشطٔالحظٕ٘ ٝبئیس .
• WxPython .ایٗ وشبثرب٘bind ، ٝقس ٜایی اظ ػؼج ٝاثعاض wxWidgetsثطای دبیشٔ ٖٛی ثبقس .
wxPythonظٔبٖ ظیبزی ضا ثطای یبزٌیطی ث ٝذٛز اذشهبل ٔی زٞس .ثٞ ٝط حبَ لجّیز ا٘شمبَ ثبالیی
ٞ platformبی ػبؾبظی قس(embedded ٜ زاضز ٚزض ٚیٙسٚظ ِ ،یٛٙوؽ ٔ ،ىیٙشبـ ٚحشی
) ٓٞplatformsلبثُ اػطاؾز ٞ . IDEبی ثؿیبضی ثطای wxPythonآٔبزٞ ٜؿز و ٓٞ ٝثطای
َطاحی ٙٔGUIبؾت ٞؿز ٕٞ ،چ ٓٞٚ] 4 SPE (Stani's Python Editor) [ ٖٛثطای ؾبذشٗ
ٕٞ ،GUIچ] . 5 wxGlade [ٖٛقٕب ٔی سٛا٘یس ٘ ٓٞطْ افعاضٞبی آظاز ٘ ٓٞ ٚطْ افعاضٞبی سؼبضی ضا
[] 6 ثب اؾشفبز ٜاظ ایٗ وشبثرب٘ ٝایؼبز وٙیس .ثطای ػعئیبر ثیكشط ثٚ ٝة ؾبیز ضؾٕی آٖ ث ٝآزضؼ
ٔطاػؼٕ٘ ٝبئیس .
• TkInter.ایٗ وشبثرب٘، ٝیىی اظ لسیٕی سطیٗ ػؼج ٝاثعاضٞبی GUIزض حبَ حبيط ٞؿز .اٌط قٕب ثب
IDLEوبض وطز ٜثبقیس ،زض ٚالغ یه ثط٘بٔ ٝو ٝثب TkInterؾبذش ٝقس ٜاؾز ضا ٔالحظٕٛ٘ ٝز ٜایس .
ٔؿشٙسار ثطای TkInterزض ٚة ؾبیز PythonWare.orgث ٝآزضؼ [] 7ثهٛضر ػبٔغ ٔٛػٛز ٔی
ثبقس . TkInterزاضای لبثّیز ا٘شمبَ اؾز ٚثطٚی ِیٛٙوؽ/ی٘ٛیىؽ ٕٞ ٚیٗ َٛض ٚیٙسٚظ وبض ٔی وٙس .
٘ىش ٝثب إٞیز ایٙؿز وTkInter ، ٝثؼٛٙاٖ ثركی اظ سٛظیغ اؾشب٘ساضز دبیش ٖٛاؾز .
@PythonForever
• ثطای ا٘شربة ٞبی ثیكشط زض ایٗ ظٔی ، ٝٙث ٝنفح ٝی ٚیىی ثط٘بٔٛ٘ ٝیؿی ٚاؾٍ ٌطافیىی زض
ٔشبؾفب٘ ، ٝیه اثعاض ٕٝٞ GUIدصیط ثطای دبسیٚ ٖٛػٛز ٘ساضز ٗٔ .حسؼ ٔی ظ٘ٓ و ٝقٕب ثؿش ٝث ٝقطایٍ سبٖ
یىی اظ اثعاضٞبی ثبال ضا ا٘شربة ٔی وٙیس .اِٚیٗ فبوشٛض ایٗ ٞؿز و ٝآیب ٔبیّیس ثطای اؾشفبز ٜاظ اثعاضٞبی GUI
د َٛدطزاذز وٙیس .زٔٚیٗ فبوشٛض آ٘ؿز و ٝآیب ٔی ذٛاٞیس ثط٘بٔ ٝسبٖ ثطٚی ِیٛٙوؽ ٚیب ٚیٙسٚظ ٚیب ثطٚی ٞط
ز ٚاػطا قٛز .ؾٔٛیٗ فبوشٛض ایٗ ٞؿز و ٝقٕب یه وبضثط ٚ KDEیب ِ GNOMEیٛٙوؽ ٞؿشیس .
ٔٗ لهس زاضْ و ٝیىی ز ٚفهُ ثطای ایٗ وشبة زض ٔٛضز ثط٘بٔٛ٘ ٝیؿی GUIثٛٙیؿٓ ٗٔ .احشٕبال wxPython
ضا ثؼٛٙاٖ ػؼج ٝاثعاض ٌطافیىی ا٘شربة ٔی و. ٓٙاٌط قٕب ٔی ذٛاٞیس ٘ظطس ٖٛضا زضثبض ٜایٗ ٔٛيٛع اػالْ وٙیس ،
ُِفب ثٔ ٝیُ ِیؿز byte-of-pythonث ٝآزضؼ [ّٔ] 9حك قٛیس ،زض ایٙؼب ذٛا٘ٙسٞ ٜب ثب ٔٗ زضثبض ٜی انالح
ٚدیكطفز ایٗ وشبة نحجز ٔی وٙٙس .
کٌکبشی ثیشتز
•وشبثرب٘ ٝی اؾشب٘ساضز دبیش ، ٖٛوشبثرب٘ ٝایی غٙی ٚثؿیبض ٌؿشطز ٜاؾز .ثیكشط اٚلبر ،ایٗ وشبثرب٘ٝ
زض زض ٖٚذٛزـ آ٘چ ٝو ٝقٕب ث ٝز٘جبَ آٖ ٞؿشیس ضا زاضز .ایٗ ُّٔت زض فّؿف ٝی دبیش ٖٛثؼٛٙاٖ "
"batteries includeاقبضٔ ٜی قٛز ٗٔ .قسیسا دكٟٙبز ٔی و ٓٙو ٝدیف اظ آ٘ى ٝثط٘بٔٞ ٝبی ثعضٌی
ضا آغبظ وٙیس ثطٚی ٔؿشٙسار اؾشب٘ساضز دبیش ٖٛث ٝآزضؼ [ ،] 10یه ٔطٚض وّی زاقش ٝثبقیس .
[ ٚ ،]- 11• Python.orgة ؾبیز ضؾٕی ظثبٖ ثط٘بٔٛ٘ ٝیؿی دبیش . ٖٛقٕب ٔی سٛا٘یس آذطیٗ ٘ؿرٝ
ظثبٖ دبیشٔ ٚ ٖٛفؿط آٖ ضا زض ایٙؼب دیسا وٙیس ٕٞ.چٙیٗ ٔیُ ِیؿز ٞبی ٔرشّفی و ٝث ٝثحض زضثبض ٜی
ػٙجٞ ٝبی ٌ٘ٛبٌ٘ٛی اظ دبیشٔ ٖٛی دطزاظز ،زض آ٘ؼب لطاض زاضز .
• comp.lang.pythonیه قجى ٝی ٌط ٜٚذجطی ؾز و ٝزضثبض ٜی ایٗ ظثبٖ ثحض ٔی وٙٙس .قٕب
ٔی سٛا٘یس دطؾف ٞب ٚدبؾد ٞبی ذٛزسبٖ ضا زض ایٗ ٌطُٔ ٜٚطح وٙیس ٔ .ی سٛا٘یس اظ َطیك ٌطٞٚبی
ٌ ٌُٛث ٝثهٛضر آ٘الیٗ ث ٝآٖ زؾشطؾی دیسا وٙیس [ ] 12 .یب ثٔ ٝیُ ِیؿز آٖ ث ٝآزضؼ [ّٔ] 13حك
قٛیس و mirror ٝایی ثطای ٌط ٜٚذجطی ٞؿز .
@PythonForever
• Python Cookbookث ٝآزضؼ [ٔ] 14ؼٕٛػ ٝایی ثؿیبض اضظقٕٙس اظ ضٕٙٞب ٞب ٘ ٚىشٞ ٝبیی ثطای حُ
ا٘ٛاػی اظ ٔؿبئُ ثرهٛل ثٛؾیّ ٝی دبیشٞ ٖٛؿز ،ؤ ٝی ثبیؿز سٛؾٍ ٞط وبضثط دبیش ٖٛوبض ذٛا٘س ٜقٛز .
• Charming Pythonث ٝآزضؼ [] 15و ٝقبُٔ ؾطی ٞبی ػبِی اظ ٔمبالر دبیش ٖٛسٛؾٍ آلبی David
ٔMertzی ثبقس .
• Dive Into Pythonث ٝآزضؼ [] 16وشبة ثؿیبض ذٛثی ثطای آٔٛذشٗ ظثبٖ ثط٘بٔٛ٘ ٝیؿی دبیش ٖٛاؾز .اٌط
زض حبَ ث ٝدبیبٖ ضؾب٘سٖ وشبة حبيط ٞؿشیس ،دیكٟٙبز ػسی ٔٗ ث ٝقٕب ایٗ اؾز و ٝثؼس اظ ایٗ وشبة ث ٝؾطاؽ
وشبة ' 'Dive Into Pythonثطٚیس .ایٗ وشبة زأٚ ٝٙؾیؼی اظ ٔٛيٛػبر ضا ٕٞچ ٖٛدطزاظـ ، XMLسؿز
ٚUnitثط٘بٔٛ٘ ٝیؿی ػّٕی ضا دٛقف ٔی زٞس .
• Jythonث ٝآزضؼ [ ،] 17و ٝیه دیبز ٜؾبظی اظ ٔفؿط دبیش ٖٛث ٝظثبٖ ػبٚا ٔی ثبقس .ایٗ ثساٖ ٔؼٙی ؾز وٝ
قٕب ٔی سٛا٘یس ثط٘بٔٞ ٝبیی ضا زض ظثبٖ دبیش ٖٛثٛٙیؿیس ٚاظ وشبثرب٘ٞ ٝبی ػبٚا ٘یع ث ٝذٛثی ثٟط ٜثجطیس. Jython
یه ٘طْ افعاض وبُٔ ٚدبیساض اؾز .اٌط و ٝقٕب یه ثط٘بٔٛ٘ ٝیؽ ػبٚا ٞؿشیس ٗٔ ،ث ٝقسر ث ٝقٕب سٛنیٔ ٝی
و ٓٙوJyhon ٝضا أشحبٖ وٙیس .
• IronPythonث ٝآزضؼ [ ،] 18و ٝیه دیبز ٜؾبظی اظ ٔفؿط دبیش ٖٛث ٝظثبٖ C#اؾز ٔ ٚی سٛا٘س
• Lythonث ٝآزضؼ [] 19و ٝیه Lispاِٚی ٝثطای ظثبٖ دبیش ٖٛاؾز .و ٝقجی ٝثٔ Lisp ٝؼِٕٛی
ؾز ٚثُٛض ٔؿشمیٓ ثبیز وسٞبی دبیش ٖٛضا وبٔذبیُ ٔی وٙس ،ثسیٗ ٔؼٙی و ٝلبثّیز سجبزَ
)(interoperabilityثب وسٞبی ٔؼٕ َٛدبیش ٖٛضا زاضز .
•ٔٙبثغ انّی ثؿیبضی ثطای دبیشٞ ٖٛؿز .یىی اظ آٟ٘ب ِیٙه ٞبی ضٚظا٘ ٝدبیشٞ ٖٛؿز ! ث ٝآزضؼ [] 20
ؤ ٝی سٛا٘س اَالػبر قٕب ضا ثب آذطیٗ ٚلبیغ دبیش ٖٛث ٝضٚظ وٙس ٕٞ .چٙیٗ Vaults of Parnassus
ث ٝآزضؼ [ ONLamp.com Python DevCenter ٚ ،] 21ث ٝازضؼ [ٚ ،] 22
dirtSimple.orgث ٝآزضؼ [٘ ٚ ،] 23ىبر دبیش ٖٛث ٝآزضؼ [ ٚ] 24ثؿیبض ثؿیبض ٔٙبثؼی اظ ایٗ لجیُ
ٔٛػٛزؾز .
@PythonForever
خالصِ
او ٖٛٙث ٝدبیبٖ ایٗ وشبة ضؾیسیٓ ،أب ٕٞبٖ َٛضی وٌ ٝفش ٝقس ،ایٗ آغبظ یه دبیبٖ اؾز ! .او ٖٛٙقٕب یه
وبضثطٔكشبق دبیشٞ ٖٛؿشیس ٚقه ٘ساضیس و ٝثطای حُ ثؿیبضی اظ ٔؿبئُ ثب دبیش ٖٛآٔبزٞ ٜؿشیس .قٕب ٔی سٛا٘یس
قطٚع وٙیس ث ٝاسٔٛبر وطزٖ وبٔذیٛسطسبٖ سب ٞط ٌ ٝ٘ٛاظ وبضٞبی غیطلبثُ سهٛض ضا ا٘ؼبْ ثسٞس ،یب ثبظی ٞبی زِرٛاٜ
ذٛزسبٖ ضا ثٛٙیؿیس ٚذیّی ذیّی ثیكشط ،ذت دؽ قطٚع وٙیس !
@PythonForever