0% found this document useful (0 votes)
5 views

A byte of Python-@PythonForever

Uploaded by

fafa22bz
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

A byte of Python-@PythonForever

Uploaded by

fafa22bz
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 136

http://www.pylearn.

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‬زیجبچ‪ٝ‬‬ ‫‪‬‬

‫‪ٔ 2‬ؼطفی‬ ‫‪‬‬

‫‪٘ 3‬هت وطزٖ‪Python‬‬ ‫‪‬‬

‫‪ 4‬ا‪ِٚ‬یٗ لسْ ‪ٞ‬ب‬ ‫‪‬‬

‫‪ 5‬دبی‪ٞ ٝ‬ب‬ ‫‪‬‬

‫‪ 6‬ػٍّٕط‪ٞ‬ب ‪ ٚ‬ػجبضار‬ ‫‪‬‬

‫‪ 7‬ض‪٘ٚ‬س و‪ٙ‬شطَ‬ ‫‪‬‬

‫‪ 8‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ ‪ٞ‬فشٓ‪.‬س‪ٛ‬اثغ‬ ‫‪‬‬

‫‪ 9‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ ‪ٞ‬كشٓ‪ٔ.‬بغ‪ٞ َٚ‬ب‬ ‫‪‬‬

‫‪ 10‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ ٘‪.ٟٓ‬ؾبذشٕبٖ ‪ٞ‬بی زاز‪ٜ‬‬ ‫‪‬‬

‫‪ 11‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ ز‪.ٓٞ‬حُ ٔؿبئُ‪ٛ٘.‬قشٗ ثط٘بٔ‪ ٝ‬ایی ث‪ ٝ‬ظثبٖ دبیش‪ٖٛ‬‬ ‫‪‬‬

‫‪ 12‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ یبظز‪.ٓٞ‬ثط٘بٔ‪ٛ٘ ٝ‬یؿی قیء ٌطا‬ ‫‪‬‬

‫‪ 13‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ ز‪ٚ‬اظز‪ٚ.ٓٞ‬ض‪ٚ‬زی‪/‬ذط‪ٚ‬ػی‬ ‫‪‬‬

‫‪ 14‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ ؾیعز‪.ٓٞ‬اؾشظ‪ٙ‬بء‪ٞ‬ب‬ ‫‪‬‬

‫‪ 15‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ چ‪ٟ‬بضزْ ‪.‬وشبثرب٘‪ ٝ‬اؾشب٘ساضز دبیش‪ٖٛ‬‬ ‫‪‬‬

‫‪ 16‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ دب٘عز‪.ٓٞ‬ثبظ ‪ ٓٞ‬اظ دبیش‪ٖٛ‬‬ ‫‪‬‬

‫‪ 17‬وشبة یه ثبیز اظ دبیش‪.ٖٛ‬فهُ قب٘عز‪.ٓٞ‬وبض ثؼسی چیؿز ؟‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫دیجبچِ‬

‫فْزست هٌذرجبت‬

‫‪ 1‬زیجبچ‪ٝ‬‬ ‫‪‬‬

‫‪ 1.1 o‬ایٗ وشبة ثطای چ‪ ٝ‬وؿب٘ی اؾز‬


‫‪ 1.2 o‬سبضیرچ‪ ٝ‬زضؼ‬
‫‪ٚ 1.3 o‬يؼیز وشبة‬
‫‪ٚ 1.4 o‬ة ؾبیز ضؾٕی‬
‫‪ 1.5 o‬قطایٍ اؾشفبز‪ٜ‬‬
‫‪ 1.6 o‬ثبظذ‪ٛ‬ضز‬
‫‪ 1.7 o‬چیعی ثطای فىط وطزٖ‬

‫دیجبچِ‬

‫‪ 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‬اؾز‪ .‬اظ َطیك ‪ٚ‬ة ؾبیز ‪ ،‬قٕب ٔی س‪ٛ‬ا٘یس سٕبْ‬
‫وشبة ضا ث‪ ٝ‬ن‪ٛ‬ضر آ٘الیٗ ثر‪ٛ‬ا٘یس یب آذطیٗ ٘ؿر‪ ٝ‬وشبة ضا زاّ٘‪ٛ‬ز و‪ٙ‬یس‪ٕٞ ٚ .‬چ‪ٙ‬یٗ ثطای ٔٗ ثبظذ‪ٛ‬ضز ثفطؾشیس ‪.‬‬

‫شزایط استفبدُ‬

‫ایٗ وشبة سحز ٔؼ‪ٛ‬ظ ‪Creative Commons Attribution-NonCommercial-ShareAlike‬‬


‫‪License 2.0‬اؾز[ ‪] 2.‬اؾبؾب‪ ،‬قٕب ثطای وذی وطزٖ‪ ،‬درف وطزٖ ‪٘ ٚ‬كبٖ زازٖ ایٗ وشبة سب ‪ٚ‬لشی و‪ ٝ‬آٖ ضا‬
‫ث‪٘ ٗٔ ٝ‬ؿجز ز‪ٞ‬یس‪ ،‬آظازیس‪ٔ .‬حس‪ٚ‬زیز ‪ٞ‬ب ایٗ ‪ٞ‬ؿش‪ٙ‬س و‪ ٝ‬قٕب ٕ٘ی س‪ٛ‬ا٘یس ثب ‪ٞ‬سف سؼبضی اظ ایٗ وشبة ثس‪ٖٚ‬‬
‫اػبظ‪ ٗٔ ٜ‬اؾشفبز‪ ٜ‬و‪ٙ‬یس‪ .‬قٕب ثطای ‪ٚ‬یطایف ‪ٌ ٚ‬ؿشطـ ایٗ اطط آظازیس‪ ،‬زض ن‪ٛ‬ضسی و‪ ٝ‬قٕب سٕبْ سغییطار ضا ٘كبٖ‬
‫ز‪ٞ‬یس ‪٘ ٚ‬ؿر‪ٚ ٝ‬یطایف قس‪ ٜ‬ضا سحز ٔؼ‪ٛ‬ظ ‪ٕٞ‬یٗ وشبة اضائ‪ ٝ‬ز‪ٞ‬یس ‪ُِ.‬فب اظ ‪ٚ‬ة ؾبیز ‪Creative Commons‬‬
‫ثبظزیس و‪ٙ‬یس[‪] 3‬سب ٔشٗ وبُٔ ‪ ٚ‬زلیك ٔؼ‪ٛ‬ظ ضا ثجی‪ٙ‬یس‪ .‬ثطای ف‪ ٟٓ‬ث‪ٟ‬شط ٔؿبِ‪ . ٝ‬یه وٕیه اؾشطیخ ‪ٚ ٓٞ‬ػ‪ٛ‬ز زاضز‬
‫و‪ ٝ‬قطایٍ اؾشفبز‪ ٜ‬ضا ٘كبٖ ٔی ز‪ٞ‬س ‪.‬‬

‫ثبسخَرد‬

‫ٔٗ ثطای ایٗ و‪ ٝ‬ایٗ وشبة سب حس أىبٖ ػبِت ‪ ٚ‬زلیك ثبقس‪ ،‬سالـ ظیبزی وطز‪ ٜ‬اْ‪ .‬زض ‪ٞ‬ط ن‪ٛ‬ضر‪ ،‬اٌط قٕب چیعی‬
‫و‪ٔ ٝ‬ش‪ٙ‬بلى یب ٘بزضؾز ثبقس دیسا وطزیس‪ ٚ ،‬یب ُّٔجی ث‪ ٝ‬ث‪ٟ‬ج‪ٛ‬ز ٘یبظ زاقز‪ُِ ،‬فب ٔٗ ضا آٌب‪ ٜ‬و‪ٙ‬یس‪ .‬سب ثش‪ٛ‬ا٘ٓ‬
‫انالحبر ٔ‪ٙ‬بؾت ضا ا٘ؼبْ ز‪ .ٓٞ‬قٕب ٔی س‪ٛ‬ا٘یس ث‪ ٗٔ ٝ‬زض >‪<[email protected]‬زؾشطؾی‬
‫زاقش‪ ٝ‬ثبقیس ‪.‬‬

‫چیشی ثزای فکز کزدى‬

‫ز‪ ٚ‬ضا‪ ٜ‬ثطای ؾبذشٗ یه ٘طْ افعاض ‪ٚ‬ػ‪ٛ‬ز زاضز‪ ،‬ضا‪ ٜ‬ا‪ َٚ‬ایٗ اؾز و‪ ٝ‬آٖ ضا ثؿیبض ؾبز‪ ٜ‬ثؿبظیس و‪ ٝ‬ض‪ٚ‬قٗ اؾز ‪ٞ‬یچ‬
‫ػیجی ‪ٚ‬ػ‪ٛ‬ز ٘ساضز ; ضا‪ ٜ‬زیٍط آٖ اؾز و‪ ٝ‬آٖ ضا ثؿیبض دیچیس‪ ٜ‬ثؿبظیس و‪ ٝ‬زض ایٗ حبِز ‪ٞ‬یچ ٘مم آقىبضی ‪ٚ‬ػ‪ٛ‬ز‬
‫٘ساضز ‪.‬ؾی‪ .‬ای‪ .‬آض‪ٛٞ .‬ض ٔ‪ٛ‬فمیز زض ظ٘سٌی یه چیع اؾز و‪ٔ ٝ‬ظُ دكشىبض ‪ ٚ‬اؾشمبٔز‪ ،‬ذیّی اؾشؼساز ‪ ٚ‬فطنز‬
‫الظْ ٘ساضز ‪.‬ؾی‪ .‬زثّی‪٘ٚ .ٛ‬سر‬

‫‪@PythonForever‬‬
‫هؼزفی‬

‫فْزست هٌذرجبت‬

‫‪ٔ 1‬ؼطفی‬ ‫‪‬‬

‫‪ٔ 1.1 o‬ؼطفی‬


‫‪ 1.2 o‬لبثّیز ‪ٞ‬بی ‪Python‬‬
‫‪ 1.2.1 ‬ذالن‪ٝ‬‬
‫‪ 1.3 o‬چطا دطَ )‪ٝ٘(Perl‬؟‬
‫‪ 1.4 o‬ثط٘بٔ‪ٛ٘ ٝ‬یؿبٖ چ‪ٔ ٝ‬ی ٌ‪ٛ‬ی‪ٙ‬س؟‬

‫هؼزفی‬

‫‪ Python‬یىی اظ ٔؼس‪ٚ‬ز ظثبٖ ‪ٞ‬بیی اؾز و‪ٔ ٝ‬ی س‪ٛ‬ا٘س ازػبی لسضسٕ‪ٙ‬س ث‪ٛ‬زٖ ‪ ٚ‬زض ػیٗ حبَ ؾبز‪ ٜ‬ث‪ٛ‬زٖ ضا زاقش‪ٝ‬‬
‫ثبقس‪ .‬قٕب دی ذ‪ٛ‬ا‪ٞ‬یس ثطز ‪ ٚ‬قٍفز ظز‪ ٜ‬ذ‪ٛ‬ا‪ٞ‬یس قس اظ ایٗ و‪ ٝ‬سٕطوع وطزٖ ض‪ٚ‬ی ضا‪ ٜ‬حُ ٔكىُ آؾبٖ اؾز ‪،‬‬
‫ؾطیغ سط اظ سطویت ‪ ٚ‬ؾبذشبض ظثب٘ی و‪ ٝ‬زاضیس زض آٖ ثط٘بٔ‪ٛ٘ ٝ‬یؿی ٔی و‪ٙ‬یس ‪ٔ.‬ؼطفی ضؾٕی ‪ Python‬ایٗ اؾز ‪:‬‬
‫‪Python‬یه ظثبٖ ثط٘بٔ‪ٛ٘ ٝ‬یؿی ثب یبزٌیطی آؾبٖ ‪ ٚ‬لسضسٕ‪ٙ‬س اؾز ‪. Python‬یه ؾبذشٕبٖ زاز‪ ٜ‬ؾُح ثبالی‬
‫وبضأس ‪ ٚ‬یه ض‪ٚ‬ـ ؾبز‪ ٜ‬أب ٔ‪ٛ‬طط ضا ثطای ثط٘بٔ‪ٛ٘ ٝ‬یؿی قیء ٌطایی زاضز ‪.‬سطویت ظیجب ‪ٔ ٚ‬بقیٗ ٘‪ٛ‬یؿی د‪ٛ‬یبی‬
‫‪ ، Python‬ث‪ٕٞ ٝ‬طا‪ ٜ‬شار ٔفؿط ٌ‪ ٝ٘ٛ‬اـ‪ ،‬آٖ ضا سجسیُ ث‪ ٝ‬ظثب٘ی ایس‪ ٜ‬آَ ثطای اؾىطیذز ٘‪ٛ‬یؿی ‪ ٚ‬س‪ٛ‬ؾؼ‪ ٝ‬ؾطیغ ٘طْ‬
‫افعاض‪ٞ‬ب زض ٔ‪ٙ‬بَك ثؿیبضی زض اوظط دّشف‪ٛ‬ضْ ‪ٞ‬ب وطز‪ ٜ‬اؾز ‪ ٗٔ.‬ثیكشط ایٗ لبثّیز ‪ٞ‬ب ضا ثب ػعئیبر ثیكشطی زض‬
‫ثرف ثؼسی شوط ذ‪ٛ‬ا‪ ٓٞ‬وطز ‪.‬تَجِ ٌیس‪ ٖٚ ٚ‬ض‪ٚ‬ؾ‪ ،ْٛ‬ؾبظ٘س‪ ٜ‬ظثبٖ ‪٘، Python‬بْ ایٗ ظثبٖ ضا ثؼس اظ ٕ٘بیف‬
‫" ‪"Monty Python's Flying Circus‬ثی ثی ؾی ٌصاقز‪ .‬ا‪ٔ ٚ‬ره‪ٛ‬نب ٔبض‪ٞ‬بیی و‪ ٝ‬ثب دیچف ثس٘كبٖ ز‪ٚ‬ض‬
‫حی‪ٛ‬ا٘بر ‪ ٚ‬فكبض زازٖ آ٘‪ٟ‬ب‪ ،‬آٖ ‪ٞ‬ب ضا ثطای غصا ٔی وكش‪ٙ‬س‪ ،‬ز‪ٚ‬ؾز ٘ساقز ‪.‬‬

‫قبثلیت ّبی ‪Python‬‬

‫سبدگی‬

‫‪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‬ضا آؾبٖ ٔی و‪ٙ‬س‪ ،‬چ‪ِ ٖٛ‬ع‪ٔٚ‬ی ٘ساضز و‪ ٝ‬زض ٔ‪ٛ‬ضز وبٔذبیُ وطزٖ ثط٘بٔ‪ٍ٘ ٝ‬طاٖ ثبقیس ‪ٚ‬‬
‫ُٕٔئٗ ق‪ٛ‬یس و‪ ٝ‬وشبثرب٘‪ٞ ٝ‬بی ٔ‪ٙ‬بؾت ِی‪ٙ‬ه قس‪ِٛ ٚ ٜ‬ز قس‪ ٜ‬ثبق‪ٙ‬س‪ٕٞ .‬چ‪ٙ‬یٗ ایٗ ثط٘بٔ‪ ٝ‬قٕب ضا ذیّی ثیكشط‬
‫لبثُ حُٕ ذ‪ٛ‬ا‪ٞ‬س وطز‪ ،‬اظ آٖ ػبیی و‪ ٝ‬قٕب ٔی س‪ٛ‬ا٘یس فمٍ ثط٘بٔ‪ ٝ‬ذ‪ٛ‬ز ضا ث‪ ٝ‬وبٔذی‪ٛ‬سط زیٍطی ٔ‪ٙ‬شمُ و‪ٙ‬یس ‪ ٚ‬وبض‬
‫ذ‪ٛ‬ا‪ٞ‬س وطز !‬

‫شیء گزایی‬

‫‪Python‬دطزاظ‪ٌ ٜ‬طایی )‪(procedure-oriented‬ضا ث‪ ٝ‬ذ‪ٛ‬ثی قیء ٌطایی )‪(object-oriented‬دكشیجب٘ی ٔی‬


‫و‪ٙ‬س‪ .‬زض ظثبٖ ‪ٞ‬بی دطزاظ‪ٌ ٜ‬طا‪ ،‬دیطأ‪ ٖٛ‬دط‪ٚ‬ؾ‪ٞ ٝ‬ب ‪ ٚ‬س‪ٛ‬اثؼی ؾبذش‪ٔ ٝ‬ی ق‪ٛ‬ز و‪ٞ ٝ‬یچ چیع ٘یؿش‪ٙ‬س‪ ،‬أب ثطای لؿٕز‬
‫‪ٞ‬بیی اظ ثط٘بٔ‪ ٝ‬لبثُ اؾشفبز‪ٔ ٜ‬ؼسز ‪ٞ‬ؿش‪ٙ‬س‪ .‬زض ظثبٖ ‪ٞ‬بی قیء ٌطا‪ ،‬ثط٘بٔ‪ ٝ‬دیطأ‪ ٖٛ‬قیء ‪ٞ‬بیی ؾبذش‪ٔ ٝ‬ی ق‪ٛ‬ز و‪ٝ‬‬
‫زاز‪ٞ ٜ‬ب ‪ ٚ‬ػّٕىطز ؾیؿشٓ ضا سطویت ٔی و‪ٙ‬س ‪. Python‬یه ضا‪ ٜ‬لسضسٕ‪ٙ‬س‪ ،‬أب ؾبز‪ ٜ‬ضا ثطای ا٘ؼبْ ‪ OOP‬زاضز‪.‬‬
‫ٔره‪ٛ‬نب ‪ٚ‬لشی و‪ ٝ‬ثب ظثبٖ ‪ٞ‬بیی ثعضٌی ٔظُ ‪ٔ C++ ٚ Java‬مبیؿ‪ ٝ‬ق‪ٛ‬ز ‪.‬‬

‫تَسؼِ پذیزی‬

‫اٌط قٕب ث‪ ٝ‬یه لُؼ‪ ٝ‬وس ذُط٘بن ثطای اػطای ثؿیبض ؾطیغ ٘یبظ زاضیس یب ٔی ذ‪ٛ‬ا‪ٞ‬یس چ‪ٙ‬س لُؼ‪ ٝ‬اٍِ‪ٛ‬ضیشٓ و‪ ٝ‬ثبظ‬
‫٘ك‪٘ٛ‬س زاقش‪ ٝ‬ثبقیس‪ٔ ،‬ی س‪ٛ‬ا٘یس آٖ لؿٕز اظ ثط٘بٔ‪ ٝ‬سبٖ ضا زض ‪ 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‬سب ‪ٚ‬لشی آؾبٖ ‪ٞ‬ؿش‪ٙ‬س و‪ ٝ‬و‪ٛ‬چه ثبق‪ٙ‬س ‪ ٚ‬ثطای ا٘ؼبْ زازٖ وبض‪ٞ‬ب‪ ،‬ثط ث‪ٟ‬ج‪ٛ‬ز‪ٞ‬بی‬
‫ف‪ٙ‬ی و‪ٛ‬چه ‪ ٚ‬اؾىطیذز ‪ٞ‬ب ثطسطی زاضز‪ٞ .‬طچ‪ٙ‬س اظ ظٔب٘ی و‪ ٝ‬قٕب قط‪ٚ‬ع ث‪ٛ٘ ٝ‬قشٗ ثط٘بٔ‪ٞ ٝ‬بی ثعضي سط ٕ٘بییس‪،‬‬
‫آ٘‪ٟ‬ب ؾطیغ ؾ‪ٍٙ‬یٗ ٔی ق‪٘ٛ‬س ‪ ٗٔ ٚ‬زض ٔ‪ٛ‬ضز ؾبثم‪ ٝ‬اْ زض ٔ‪ٛ‬ضز ٘‪ٛ‬قشٗ ثط٘بٔ‪ٞ ٝ‬بی ‪ 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‬هت وطزٖ ‪Python‬‬

‫‪ 1.1‬ثطای وبضثطاٖ‪Linux/BSD‬‬ ‫‪o‬‬

‫‪ 1.2‬ثطای وبضثطاٖ‪Windows‬‬ ‫‪o‬‬

‫‪ 1.3‬ذالن‪ٝ‬‬ ‫‪o‬‬

‫ًصت کزدى ‪Python‬‬

‫ثزای کبرثزاى ‪Linux/BSD‬‬

‫اٌط قٕب اظ یه س‪ٛ‬ظیغ ‪ٔ Linux‬ب٘‪ٙ‬س ‪ Mandriva ٚ Fedora‬یب ?ا٘شربثشبٖ ضا ای‪ٙ‬ؼب لطاض ز‪ٞ‬یس>‪ ،‬یب یه ؾیؿشٓ‬
‫‪ٔBSD‬ب٘‪ٙ‬س ‪ FreeBSD‬اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یس‪ ،‬احشٕبال ‪Python‬لجال ض‪ٚ‬ی ؾیؿشٓ قٕب ٘هت قس‪ ٜ‬ثبقس ‪.‬ثطای‬
‫‪ shell‬ضا ثبظ‬ ‫ای‪ٙ‬ى‪ ٝ‬أشحبٖ و‪ٙ‬یس ‪ Python‬ض‪ٚ‬ی ؾیؿشٓ ‪ Linux‬قٕب لجال ٘هت قس‪ ٜ‬اؾز‪ ،‬یه ثط٘بٔ‪ٝ‬‬
‫و‪ٙ‬یس(ٔب٘‪ٙ‬س ‪ Konsole‬یب )‪ ٚ Gnome-Terminal‬زؾش‪ٛ‬ض ‪ python -V‬ضا‪ٕٞ ،‬بٖ َ‪ٛ‬ض و‪ ٝ‬زض ظیط ٘كبٖ زاز‪ٜ‬‬
‫قس‪ ٜ‬اؾز‪ٚ ،‬اضز و‪ٙ‬یس ‪.‬‬

‫‪$ python -V‬‬


‫‪Python 2.3.4‬‬

‫تَجِ ػالٔز ‪ $‬اػالٖ ‪ shell‬اؾز‪ .‬ایٗ اػالٖ ثطای قٕب ثؿش‪ ٝ‬ث‪ ٝ‬س‪ٙ‬ظیٕبر ؾیؿشٓ ػبّٔشبٖ ٔرشّف ذ‪ٛ‬ا‪ٞ‬س ث‪ٛ‬ز‪،‬‬
‫ث‪ٙ‬بثطایٗ ٔٗ اػالٖ ضا فمٍ ثب ػالٔز ‪٘ $‬كبٖ ذ‪ٛ‬ا‪ ٓٞ‬زاز ‪.‬اٌط قٕب اَالػبر ٘ؿر‪ ٝ‬ضا ٔب٘‪ٙ‬س چیعی و‪ ٝ‬زض ثبال ٘كبٖ‬
‫زاز‪ ٜ‬قس‪ ٜ‬اؾز ٔی ثی‪ٙ‬یس‪ ،‬قٕب اظ لجُ ‪ Python‬ضا ٘هت وطز‪ ٜ‬ایس ‪.‬زض ‪ٞ‬ط ن‪ٛ‬ضر اٌط قٕب یه دیبْ ٔب٘‪ٙ‬س ایٗ‬
‫دیبْ زضیبفز وطزیس ‪:‬‬

‫‪$ python -V‬‬


‫‪bash: python: command not found‬‬

‫آٖ ‪ٚ‬لز قٕب ‪ Python‬ضا ث‪ ٝ‬ن‪ٛ‬ضر ٘هت قس‪٘ ٜ‬ساضیس‪ .‬ایٗ ثؿیبض ثؼیس اؾز‪ ،‬أب ٕٔىٗ اؾز ‪.‬زض ایٗ ٔ‪ٛ‬ضز‪ ،‬قٕب‬
‫ز‪ ٚ‬ضا‪ ٜ‬ثطای ٘هت وطزٖ ‪ Python‬ض‪ٚ‬ی ؾیؿشٓ سبٖ زاضیس ‪.‬ثؿش‪ٞ ٝ‬بی ‪ binary‬ضا ثب اؾشفبز‪ ٜ‬اظ ٘طْ افعاض ٔسیطیز‬
‫ثؿش‪ ٝ‬ای و‪ٕٞ ٝ‬طا‪ ٜ‬ؾیؿشٓ ػبُٔ سبٖ اؾز‪٘ ،‬هت و‪ٙ‬یس‪ٔ ،‬ب٘‪ٙ‬س ‪ yum‬زض‪urmpi ، Fedora‬زض ‪Mandriva‬‬

‫‪@PythonForever‬‬
‫‪apt-get ،Linux‬زض‪pkg_add ، Debian GNU/Linux‬زض ‪ ٚ FreeBSD‬غیط‪ .ٜ‬س‪ٛ‬ػ‪ ٝ‬زاقش‪ ٝ‬ثبقیس و‪ٝ‬‬
‫ثطای اؾشفبز‪ ٜ‬اظ ایٗ ض‪ٚ‬ـ ث‪ ٝ‬اسهبَ ای‪ٙ‬شط٘شی ٘یبظٔ‪ٙ‬س ‪ٞ‬ؿشیس ‪ٔ.‬ش‪ٙ‬ب‪ٚ‬ثب‪ ،‬قٕب ٔی س‪ٛ‬ا٘یس ثؿش‪ٞ ٝ‬بی ‪ binary‬ضا اظ‬
‫ػبیی زیٍط س‪ٟ‬ی‪ ٝ‬و‪ٙ‬یس ‪ ٚ‬ث‪ ٝ‬وبٔذی‪ٛ‬سط قرهی سبٖ ٔ‪ٙ‬شمُ و‪ٙ‬یس ‪ ٚ‬آٖ ضا ٘هت و‪ٙ‬یس ‪.‬قٕب ٔی س‪ٛ‬ا٘یس ‪ Python‬ضا اظ‬
‫ض‪ٚ‬ی وس ٔ‪ٙ‬جغ آٖ ‪ compile‬و‪ٙ‬یس[‪ ٚ] 1‬آٖ ضا ٘هت و‪ٙ‬یس‪ .‬ضا‪ٕٙٞ‬بی ‪ compile‬وطزٖ زض ‪ٚ‬ة ؾبیز س‪ٟ‬ی‪ ٝ‬قس‪ٜ‬‬
‫اؾز ‪.‬‬

‫ثزای کبرثزاى ‪Windows‬‬

‫ث‪ ٝ‬آزضؼ ‪http://www.python.org/download/‬ثط‪ٚ‬یس ‪ ٚ‬آذطیٗ ٘ؿر‪ ٝ‬ضا اظ ایٗ ‪ٚ‬ة ؾبیز ‪download‬‬
‫و‪ٙ‬یس(و‪ 2.3.4 ٝ‬ث‪ٍٙٞ ٝ‬بْ س‪ٟ‬ی‪ ٝ‬ایٗ ٘‪ٛ‬قش‪ ٝ‬ث‪ٛ‬ز)‪ .‬ایٗ فمٍ ‪ٍٔ 9‬بثبیز حؼٓ زاضز و‪٘ ٝ‬ؿجز ث‪ ٝ‬اوظط ظثبٖ ‪ٞ‬بی زیٍط‬
‫وٓ حؼٓ سط اؾز‪٘ .‬هت وطزٖ آٖ زلیمب ٔظُ ثمی‪٘ ٝ‬طْ افعاض‪ٞ‬بی ‪ٚ‬ی‪ٙ‬س‪ٚ‬ظی اؾز ‪.‬‬

‫اخطبر‬

‫اٌط ث‪ ٝ‬قٕب أىبٖ زاز‪ ٜ‬قس و‪ٞ ٝ‬ط ػعء ا٘شربثی ضا ثس‪ ٖٚ‬ػالٔز و‪ٙ‬یس‪ٞ ،‬یچ وساْ ضا ثس‪ ٖٚ‬ػالٔز ٘ى‪ٙ‬یس! ثطذی اظ‬
‫ایٗ اػعا ٔره‪ٛ‬نب ‪ٔ IDLE‬ی س‪ٛ‬ا٘‪ٙ‬س ثطای قٕب ٔفیس ثبق‪ٙ‬س ‪.‬یه ‪ٚ‬الؼیز ػبِت ایٗ اؾز و‪ ٝ‬حس‪ٚ‬ز ‪ ٪70‬اظ‬
‫‪ٞdownload‬بی ‪ٔ Python‬طث‪ ٌٛ‬ث‪ ٝ‬وبضثطاٖ ‪ Windows‬اؾز‪ .‬اِجش‪ ٝ‬ایٗ چ‪ٟ‬ط‪ٚ ٜ‬الؼی ٔ‪ٛ‬ي‪ٛ‬ع ضا اظآ٘ؼبییى‪ٝ‬‬
‫سمطیجب ‪ ٕٝٞ‬وبضثطاٖ ِی‪ٛٙ‬وؽ اظ لجُ ث‪ ٝ‬ن‪ٛ‬ضر دیف فطو ‪ Python‬ض‪ٚ‬ی ؾیؿشٓ قبٖ ٘هت قس‪ ٜ‬اؾز‪٘ ،‬كبٖ‬
‫ٕ٘ی ز‪ٞ‬س ‪.‬‬

‫ثِ کبرگیزی ‪ Python‬در خط فزهبى ‪Windows‬‬

‫اٌط قٕب ٔی ذ‪ٛ‬ا‪ٞ‬یس زض ذٍ فطٔبٖ ‪ 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 ٝ‬بٖ ضا ٔی ٘‪ٛ‬یؿیٓ ‪.‬‬

‫اٍلیي قذم ّب‬

‫فْزست هٌذرجبت‬

‫‪ 1‬ا‪ِٚ‬یٗ لسْ ‪ٞ‬ب‬ ‫‪‬‬

‫‪ٔ 1.1 o‬مسٔ‪ٝ‬‬


‫‪ 1.2 o‬اؾشفبز‪ ٜ‬اظ اػالٖ ٔفؿط‬
‫‪ 1.3 o‬ا٘شربة یه ‪ٚ‬یطایكٍط‬
‫‪ 1.4 o‬اؾشفبز‪ ٜ‬اظ یه فبیُ ٔ‪ٙ‬جغ‬
‫‪ 1.4.1 ‬ذط‪ٚ‬ػی‬
‫‪ 1.4.2 ‬ایٗ چٍ‪ ٝ٘ٛ‬وبض ٔی و‪ٙ‬س؟‬
‫‪ 1.5 o‬ثط٘بٔ‪ٞٝ‬بی ‪ Python‬لبثُاػطا‬
‫‪ 1.6 o‬وٕه ٌطفشٗ‬
‫‪ 1.7 o‬ذالن‪ٝ‬‬

‫اٍلیي قذم ّب‬

‫هقذهِ‬

‫ٔب حبال ٔكب‪ٞ‬س‪ ٜ‬ذ‪ٛ‬ا‪ٞ‬یٓ وطز و‪ ٝ‬چٍ‪ ٝ٘ٛ‬ثط٘بٔ‪ ٝ‬ؾ‪ٙ‬شی "‪ "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‬ؿش‪ٙ‬س ‪.‬‬

‫هثبل ‪ .3.1‬ثِ کبرگیزی اػالى هفسز ‪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‬ضا آٔبز‪ ٜ‬وطز‪ ٜ‬ایٓ ‪ ٚ‬ایٗ ثی زضً٘ ض‪ٚ‬ی نفح‪ٕ٘ ٝ‬بیف ٘كبٖ زاز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬

‫چگًَگی خبرج شذى اس اػالى ‪Python‬‬

‫ثطای ذبضع قسٖ اظ اػالٖ‪ ،‬زض ن‪ٛ‬ضسی و‪ ٝ‬اظ ‪ ٚ 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‬شذیط‪ ٜ‬و‪ٙ‬یس‬

‫‪Example 3.2. Using a Source File‬‬


‫‪#!/usr/bin/python‬‬
‫‪# Filename : helloworld.py‬‬
‫'‪print 'Hello World‬‬

‫(فبیل هٌجغ )‪: code/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 a+x helloworld.py‬‬


‫‪$ ./helloworld.py‬‬
‫‪Hello World‬‬

‫زؾش‪ٛ‬ض ‪ chmod‬زض ای‪ٙ‬ؼب ثطای سغییط ض‪ٚ‬ـ فبیُ ث‪ٚ ٝ‬ؾیّ‪ ٝ‬زازٖ اػبظ‪ ٜ‬اػطا وطزٖ ث‪ ٝ‬سٕبْ وبضثطاٖ ؾیؿشٓ ث‪ ٝ‬وبض‬
‫ثطز‪ ٜ‬قس‪ ٜ‬اؾز‪ .‬ؾذؽ ٔب ثط٘بٔ‪ ٝ‬ضا ٔؿشمیٕب ث‪ٚ ٝ‬ؾیّ‪ٔ ٝ‬كرم وطزٖ ٔؿیط فبیُ ٔ‪ٙ‬جغ اػطا ٔی و‪ٙ‬یٓ‪ٔ .‬ب اظ ‪./‬‬
‫ثطای ٘كبٖ زازٖ ای‪ٙ‬ى‪ ٝ‬ثط٘بٔ‪ ٝ‬زض د‪ٛ‬ق‪ ٝ‬و‪٘ٛٙ‬ی اؾز‪ ،‬اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یٓ ‪.‬ثطای ای‪ٙ‬ى‪ ٝ‬چیع‪ٞ‬ب ضا ػبِت سط و‪ٙ‬یس‪ٔ ،‬ی‬
‫س‪ٛ‬ا٘یس ٘بْ فبیُ ضا س‪ٟٙ‬ب ث‪helloworld ٝ‬سغییط ز‪ٞ‬یس ‪ ٚ‬آٖ ضا ث‪ ٝ‬ن‪ٛ‬ضر ‪ helloworld/.‬اػطا و‪ٙ‬یس ‪ ٚ‬ایٗ اظ آٖ‬
‫ػبییى‪ ٝ‬ؾیؿشٓ ٔی زا٘س ثبیس ث‪ٚ ٝ‬ؾیّ‪ٔ ٝ‬فؿطی و‪ٔ ٝ‬حُ آٖ زض ا‪ِٚ‬یٗ ذٍ فبیُ ٔ‪ٙ‬جغ ٘‪ٛ‬قش‪ ٝ‬قس‪ ٜ‬اؾز آٖ ضا اػطا‬
‫و‪ٙ‬س‪ ،‬وبض ذ‪ٛ‬ا‪ٞ‬س وطز‪ .‬قٕب ٔی س‪ٛ‬ا٘یس سب ظٔب٘ی و‪ٔ ٝ‬حُ ثط٘بٔ‪ ٝ‬ضا ثسا٘یس‪ ،‬آٖ ضا اػطا و‪ٙ‬یس ‪ -‬أب اٌط ثر‪ٛ‬ا‪ٞ‬یس ثط٘بٔ‪ٝ‬‬
‫ضا زض ‪ٞ‬ط ػبیی اػطا و‪ٙ‬یس‪ ،‬چ‪ٝ‬؟ قٕب ٔی س‪ٛ‬ا٘یس ایٗ وبض ضا ثب شذیط‪ ٜ‬ثط٘بٔ‪ ٝ‬زض یىی اظ د‪ٛ‬ق‪ٞ ٝ‬بیی و‪ ٝ‬زض ٔحیٍ‬
‫ٔشغییط ‪ِ PATH‬یؿز قس‪ ٜ‬ا٘س‪ ،‬ا٘ؼبْ ز‪ٞ‬یس‪ٞ .‬طٌب‪ ٜ‬قٕب ثط٘بٔ‪ ٝ‬ای ضا اػطا ٔی و‪ٙ‬یس‪ ،‬ؾیؿشٓ ث‪ ٝ‬ز٘جبَ آٖ ثط٘بٔ‪ٝ‬‬

‫‪@PythonForever‬‬
‫زض ‪ٞ‬ط د‪ٛ‬ق‪ ٝ‬ای و‪ ٝ‬زض ٔحیٍ ٔشغییط ‪ PATH‬اؾز‪ٔ ،‬ی ٌطزز ‪ ٚ‬ؾذؽ آٖ ثط٘بٔ‪ ٝ‬ضا اػطا ٔی و‪ٙ‬س‪ .‬قٕب ٔی س‪ٛ‬ا٘یس‬
‫ایٗ ثط٘بٔ‪ ٝ‬ضا زض ‪ٞ‬طػب ثب وذی ؾبز‪ ٜ‬فبیُ ٔ‪ٙ‬جغ ث‪ ٝ‬یىی اظ د‪ٛ‬ق‪ٞ ٝ‬بی ِیؿز قس‪ ٜ‬زض ‪ ، PATH‬لبثُ زؾشطؾی‬
‫و‪ٙ‬یس ‪.‬‬

‫‪$ echo $PATH‬‬


‫‪/opt/mono/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/b‬‬
‫‪in:/home/swaroop/bin‬‬
‫‪$ cp helloworld.py /home/swaroop/bin/helloworld‬‬
‫‪$ helloworld‬‬
‫‪Hello World‬‬

‫ٔب ٔی س‪ٛ‬ا٘یٓ س‪ٛ‬ؾٍ زؾش‪ٛ‬ض ‪ ٚ 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‬ث‪ ٝ‬ؾبزٌی لبثُ ا٘ؼبْ اؾز ‪.‬‬

‫‪$ env PYTHONDOCS=/usr/share/doc/python-docs-2.3.4/html/‬‬


‫‪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.‬‬
‫)'‪>>> help('print‬‬

‫قٕب س‪ٛ‬ػ‪ ٝ‬ذ‪ٛ‬ا‪ٞ‬یس وطز و‪ ٗٔ ٝ‬ثطای ٔؼّ‪ ْٛ‬وطزٖ '‪ 'print‬اظ ػالٔز ٘مُ ل‪ َٛ‬اؾشفبز‪ ٜ‬وطز‪ ٜ‬اْ‪ ،‬چ‪ٙ‬بٖ و‪ٝ‬‬
‫‪ٔPython‬ی س‪ٛ‬ا٘سثف‪ٕٟ‬س و‪ٔ ٗٔ ٝ‬ی ذ‪ٛ‬ا‪ ٓٞ‬زض ٔ‪ٛ‬ضز '‪'print‬وٕه ث‪ ٝ‬زؾز آ‪ٚ‬ضْ ‪ ٗٔ ٚ‬اظ آٖ ٕ٘ی ذ‪ٛ‬ا‪ ٓٞ‬و‪ٝ‬‬
‫چیعی ضا چبح ز‪ٞ‬س ‪(print‬و‪ٙ‬س ‪).‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس ٔحّی و‪ ٝ‬اظ آٖ اؾشفبز‪ ٜ‬وطز‪ ٜ‬اْ‪ٔ ،‬حُ زض ِی‪ٛٙ‬وؽ ‪Fedora‬‬
‫‪Core 3‬اؾز ‪-‬ایٗ قبیس ثطای س‪ٛ‬ظیغ ‪ٞ‬ب ‪٘ ٚ‬ؿر‪ٞ ٝ‬بی ٔرشّف‪ٔ ،‬شفب‪ٚ‬ر ثبقس ‪.‬‬

‫خالصِ‬

‫او‪ ٖٛٙ‬قٕب ثبیس ثش‪ٛ‬ا٘یس ثط٘بٔ‪ٞ ٝ‬بی ‪ Python‬ضا ث‪ ٝ‬آؾب٘ی ث‪ٛٙ‬یؿیس‪ ،‬شذیط‪ ٚ ٜ‬اػطا و‪ٙ‬یس‪ .‬حبال و‪ ٝ‬قٕب یه وبضثط‬
‫‪ٞPython‬ؿشیس‪ ،‬ثیبیس چ‪ٙ‬س ٔف‪ ْٟٛ‬ثیكشط ‪Python‬ضا یبز ثٍیطیٓ ‪.‬‬

‫پبیِ ّب‬

‫فْزست هٌذرجبت‬

‫‪ 1‬دبی‪ٞٝ‬ب‬ ‫‪‬‬

‫‪ 1.1‬طبثز‪ٞ‬بی ِفظی‬ ‫‪o‬‬

‫‪ 1.2‬اػساز‬ ‫‪o‬‬

‫‪ 1.3‬ضقش‪ٞٝ‬ب‬ ‫‪o‬‬

‫‪@PythonForever‬‬
‫‪ٔ 1.4‬شغییط‪ٞ‬ب‬ ‫‪o‬‬

‫‪٘ 1.5‬بْ ٌصاضی ق‪ٙ‬بؾ‪ٝ‬‬ ‫‪o‬‬

‫‪ 1.6‬ا٘‪ٛ‬اع زاز‪ٜٞ‬ب‬ ‫‪o‬‬

‫‪ 1.7‬اقیب‬ ‫‪o‬‬

‫‪ 1.7.1 ‬ذط‪ٚ‬ػی‬
‫‪ 1.7.2 ‬ایٗ چٍ‪ ٝ٘ٛ‬وبض ٔی و‪ٙ‬س؟‬
‫‪ 1.8‬ذٍ ‪ٞ‬بی ٔ‪ُٙ‬می ‪ ٚ‬فیعیىی‬ ‫‪o‬‬

‫‪Indentation 1.9‬‬ ‫‪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‬اؾز ‪.‬‬

‫اؾشفبز‪ ٜ‬اظ ٘كبٖ ٘مُ ل‪ َٛ‬ؾ‪ ٝ‬سبیی ( یب )"""‬ ‫‪‬‬

‫قٕب ٔی س‪ٛ‬ا٘یس ثب اؾشفبز‪ ٜ‬اظ ٘كبٖ ٘مُ ل‪ َٛ‬ؾ‪ ٝ‬سبیی ضقش‪ٞ ٝ‬بی چ‪ٙ‬س ذُی ضا ٔؼیٗ و‪ٙ‬یس‪ .‬قٕب ٔی س‪ٛ‬ا٘یس ث‪َٛ ٝ‬ض‬
‫آظازا٘‪ ٝ‬اظ ٘كبٖ ‪ٞ‬بی ٘مُ ل‪ َٛ‬سىی ‪ ٚ‬ز‪ٚ‬سبیی زض‪٘ ٖٚ‬كبٖ ‪ٞ‬بی ٘مُ ل‪ َٛ‬ؾ‪ ٝ‬سبیی اؾشفبز‪ ٜ‬و‪ٙ‬یس‪ .‬یه ٔظبَ ‪:‬‬

‫‪This is‬‬ ‫‪a multi-line string. This is the first line.‬‬


‫‪This is‬‬ ‫‪the second line.‬‬
‫‪"What's‬‬ ‫‪your name?," I asked.‬‬
‫‪He said‬‬ ‫"‪"Bond, James Bond.‬‬

‫س‪ٛ‬اِی‪ٞ‬بی ٌطیع‬ ‫‪‬‬

‫فطو و‪ٙ‬یس و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ٞ‬یس ضقش‪ ٝ‬ای زاقش‪ ٝ‬ثبقیس و‪ ٝ‬زاضای ٘كب٘‪٘ ٝ‬مُ ل‪ َٛ‬سىی )'(ثبقس‪ ،‬چٍ‪ ٝ٘ٛ‬ایٗ ضقش‪ ٝ‬ضا‬
‫ٔؼیٗ ذ‪ٛ‬ا‪ٞ‬یس وطز؟ ٔظال ضقش‪ 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‬زض ا٘ش‪ٟ‬بی ذٍ ٘كبٖ ٔی ز‪ٞ‬س و‪ٝ‬‬
‫ضقش‪ ٝ‬زض ذٍ ثؼسی ازأ‪ ٝ‬زاضز‪ ،‬أب ‪ٞ‬یچ ذٍ ػسیسی ايبف‪٘ ٝ‬كس‪ ٜ‬اؾز ‪ٔ.‬ظال ‪:‬‬

‫\‪"This is the first sentence.‬‬


‫"‪This is the second sentence.‬‬

‫ٔؼبزَ‬

‫‪"This is the first sentence. This is the second‬‬


‫"‪sentence.‬‬

‫اؾز ‪.‬‬

‫ضقش‪ٞٝ‬بی ذبْ‬ ‫‪‬‬

‫اٌط قٕب الظْ زاضیس سؼسازی ضقش‪ ٝ‬ضا ٔؼیٗ و‪ٙ‬یس و‪ٞ ٝ‬یچ دطزاظـ ٔره‪ٛ‬نی ٔب٘‪ٙ‬س س‪ٛ‬اِی ‪ٞ‬بی ٌطیع زض آٖ‬
‫اؾشفبز‪٘ ٜ‬كس‪ ٜ‬اؾز‪ ،‬چیعی و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ٞ‬یس ٔكرم وطزٖ یه ضقش‪ ٝ‬ذبْ ث‪ٚ ٝ‬ؾیّ‪ ٝ‬دیك‪٘ٛ‬س ‪ r‬یب ‪ R‬اؾز‪ .‬یه‬
‫ٔظبَ ‪:‬‬

‫"‪r"Newlines are indicated by \n‬‬

‫ضقش‪ٞٝ‬بی ی‪٘ٛ‬یىس‬ ‫‪‬‬

‫‪Unicode‬یه ضا‪ ٜ‬اؾشب٘ساضز ثطای ٘‪ٛ‬قشٗ ٔش‪ ٖٛ‬ثیٗ إِّّی اؾز‪ .‬اٌط قٕب ٔی ذ‪ٛ‬ا‪ٞ‬یس ٔشٗ ضا زض ظثبٖ ٔحّی‬
‫ذ‪ٛ‬ز ٔب٘‪ٙ‬س ‪ٙٞ‬سی ‪ ٚ‬ػطثی ث‪ٛٙ‬یؿیس‪ ،‬آٍ٘ب‪ ٜ‬قٕب ث‪ ٝ‬یه ‪ٚ‬یطایكٍط ٔشٗ ثب لبثّیز دكشیجب٘ی اظ ‪٘ Unicode‬یبظٔ‪ٙ‬سیس‪.‬‬
‫ث‪ٕٞ ٝ‬یٗ سطسیت‪Python ،‬ث‪ ٝ‬قٕب اػبظ‪ٔ ٜ‬ی ز‪ٞ‬س و‪ٔ ٝ‬شٗ ‪ Unicode‬ضا اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ -‬سٕبْ چیع‪ٞ‬بیی و‪ ٝ‬الظْ‬
‫اؾز ا٘ؼبْ ز‪ٞ‬یس‪ ،‬اؾشفبز‪ ٜ‬اظ دیك‪٘ٛ‬س ‪ u‬یب ‪ U‬اؾز‪ٔ .‬ظال‬

‫"‪u"This is a Unicode string.‬‬

‫‪@PythonForever‬‬
‫ث‪ ٝ‬یبز زاقش‪ ٝ‬ثبقیس و‪ٚ ٝ‬لشی ثب فبیُ ‪ٞ‬بی ٔش‪ٙ‬ی ؾط‪ٚ‬وبض زاضیس اظ ضقش‪ٞ ٝ‬بی ‪Unicode‬اؾشفبز‪ ٜ‬و‪ٙ‬یس‪ٔ ،‬ره‪ٛ‬نب‬
‫‪ٚ‬لشی و‪ٔ ٝ‬ی زا٘یس و‪ ٝ‬فبیُ‪ٔ ،‬شٗ ٘‪ٛ‬قش‪ ٝ‬قس‪ ٜ‬ث‪ ٝ‬غیط اظ اٍّ٘یؿی ضا زضثط ذ‪ٛ‬ا‪ٞ‬س زاقز ‪.‬‬

‫ضقش‪ٞٝ‬ب سغییط ٘بدصیط٘س‬ ‫‪‬‬

‫ایٗ ث‪ ٝ‬ایٗ ٔؼ‪ٙ‬ی اؾز و‪ٚ ٝ‬لشی ضقش‪ ٝ‬ای ضا ٔی ؾبظیس‪ٕ٘ ،‬ی س‪ٛ‬ا٘یس آٖ ضا سغییط ز‪ٞ‬یس‪.‬اٌطچ‪ ٝ‬قبیس ایٗ یه چیع‬
‫ثس ث‪٘ ٝ‬ظطآیس‪ ،‬أب ‪ٚ‬الؼب ایٗ چ‪ٙ‬یٗ ٘یؿز ‪ٔ.‬ب ذ‪ٛ‬ا‪ٞ‬یٓ زیس و‪ ٝ‬چطا ایٗ یه ٔحس‪ٚ‬زیز ثطای ثط٘بٔ‪ٞ ٝ‬بی ثؼسی و‪ٔ ٝ‬ب‬
‫ٔی ٘‪ٛ‬یؿیٓ‪٘ ،‬یؿز ‪.‬‬

‫ضقش‪ِ ٝ‬فظی اِحبلی‬ ‫‪‬‬

‫اٌط قٕب ز‪ ٚ‬ضقش‪ِ ٝ‬فظی ضا و‪ٙ‬بض ‪ ٓٞ‬لطاض ز‪ٞ‬یس‪ ،‬آٖ ‪ٞ‬ب ث‪ ٝ‬ن‪ٛ‬ضر ذ‪ٛ‬زوبض س‪ٛ‬ؾٍ ‪Python‬ازغبْ ٔی ق‪٘ٛ‬س‪ٔ .‬ظال‬
‫'?‪'What\'s' 'your name‬ث‪ ٝ‬ن‪ٛ‬ضر ذ‪ٛ‬زوبض ث‪"What's your name?" ٝ‬سجسیُ ٔی ق‪ٛ‬ز ‪.‬‬

‫تذکز ثزای ثزًبهِ ًَیسبى ‪C/C++‬‬

‫زض ‪ٞ Python‬یچ ٘‪ٛ‬ع زاز‪ char ٔ ٜ‬ػساٌب٘‪ ٝ‬ای ‪ٚ‬ػ‪ٛ‬ز ٘ساضز‪ٞ .‬یچ ٘یبظ ‪ٚ‬الؼی ثطای آٖ ‪ٚ‬ػ‪ٛ‬ز ٘ساضز ‪ُٕٔ ٗٔ ٚ‬ئٗ‬
‫‪ٞ‬ؿشٓ و‪ ٝ‬قٕب وٕج‪ٛ‬ز آٖ ضا حؽ ٘ر‪ٛ‬ا‪ٞ‬یس وطز ‪.‬‬

‫تذکز ثزای ثزًبهِ ًَیسبى ‪Perl/PHP‬‬

‫ث‪ ٝ‬یبز زاقش‪ ٝ‬ثبقیس و‪ ٝ‬ضقش‪ٞ ٝ‬بی زاضای ٘كبٖ ٘مُ ل‪ َٛ‬سىی ‪ ٚ‬ضقش‪ٞ ٝ‬بی ٘مُ ل‪ َٛ‬ز‪ٚ‬سبیی یىی ‪ٞ‬ؿش‪ٙ‬س ‪ -‬زض ‪ٞ‬ط‬
‫ن‪ٛ‬ضر آٖ ‪ٞ‬ب ٔشفب‪ٚ‬ر ٘یؿش‪ٙ‬س ‪.‬‬

‫تذکز ثزای کبرثزاى ػبدی‬

‫‪ٕٞ‬یك‪ٚ ٝ‬لشی و‪ ٝ‬ثب ػجبضار ػبزی ؾط‪ٚ‬وبض زاضیس اظ ضقش‪ٞ ٝ‬بی ذبْ اؾشفبز‪ ٜ‬و‪ٙ‬یس‪ .‬زض غیط ایٗ ن‪ٛ‬ضر قبیس سؼساز‬
‫ظیبزی الظْ ثبقس ‪.‬‬

‫هتغییزّب‬

‫اؾشفبز‪ٔ ٜ‬حى اظ طبثز ‪ٞ‬بی ِفظی ٔی س‪ٛ‬ا٘س ذیّی ظ‪ٚ‬ز ذؿش‪ ٝ‬و‪ٙٙ‬س‪ ٜ‬ق‪ٛ‬ز ‪ٔ -‬ب ث‪ ٝ‬چ‪ٙ‬س ضا‪ ٜ‬شذیط‪ٞ ٜ‬ط اَالػبسی ‪ٚ‬‬
‫زؾشىبضی نحیح آٖ ٘یبظٔ‪ٙ‬سیٓ‪ .‬ایٗ ػب ٔىب٘ی اؾز و‪ٔ ٝ‬شغییط‪ٞ‬ب ‪ٚ‬اضز نح‪ٔ ٝٙ‬ی ق‪٘ٛ‬س‪ٔ .‬شغییط‪ٞ‬ب وبٔال چیعی‬
‫‪ٞ‬ؿش‪ٙ‬س و‪ٔ ٝ‬ؼ‪ٙ‬ی ٔی ز‪ٙٞ‬س ‪ -‬اضظـ آٖ ‪ٞ‬ب ٔی س‪ٛ‬ا٘س سغییط دیسا و‪ٙ‬س یؼ‪ٙ‬ی ‪ٞ‬ط چیعی ضا ثب اؾشفبز‪ ٜ‬اظ ٔشغییط‪ٞ‬ب ٔی‬

‫‪@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‬اؾشفبز‪ ٜ‬اظ ٔشغییط‪ٞ‬ب ‪ ٚ‬طبثز ‪ٞ‬بی ِفظی‬

‫‪# Filename : var.py‬‬


‫‪i = 5‬‬
‫‪print i‬‬
‫‪i = i + 1‬‬
‫‪print i‬‬
‫‪s = '''This is a multi-line string.‬‬
‫'''‪This is the second line.‬‬
‫‪print s‬‬

‫خزٍجی‬
‫‪$ 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‬‬

‫ایٗ‪ ،‬ذط‪ٚ‬ػی‬

‫‪This is a string. This continues the string.‬‬

‫ٔی ز‪ٞ‬س ‪.‬ث‪ٕٞ ٝ‬یٗ سطسیت‪،‬‬

‫\ ‪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‬‬

‫‪ٚ‬لشی و‪ ٝ‬ایٗ ضا اػطا ٔی و‪ٙ‬یس‪ ،‬قٕب ذُبی ظیط ضا زضیبفز ٔی و‪ٙ‬یس ‪:‬‬

‫‪File "whitespace.py", line 4‬‬


‫‪print 'Value is', i # Error! Notice a single space‬‬
‫‪at the start of the line‬‬
‫^‬
‫‪SyntaxError: invalid syntax‬‬

‫س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ٝ‬یه فبنّ‪ ٝ‬زض اثشسای ذٍ ز‪ٚ ْٚ‬ػ‪ٛ‬ز زاضز‪ .‬ذُبی اقبض‪ ٜ‬قس‪ ٜ‬س‪ٛ‬ؾٍ ‪Python‬ث‪ٔ ٝ‬ب ٔی ٌ‪ٛ‬یس و‪ٝ‬‬
‫سطویت ثط٘بٔ‪٘ ٝ‬بٔؼشجط اؾز‪ ،‬یؼ‪ٙ‬ی ثط٘بٔ‪ ٝ‬ث‪ ٝ‬زضؾشی ٘‪ٛ‬قش‪٘ ٝ‬كس‪ ٜ‬اؾز‪ .‬آ٘چ‪ ٝ‬ث‪ ٝ‬قٕب ٘كبٖ ٔی ز‪ٞ‬س ایٗ اؾز و‪ٝ‬‬
‫قٕب ٕ٘ی س‪ٛ‬ا٘یس ث‪ ٝ‬ن‪ٛ‬ضر زِر‪ٛ‬ا‪ ٜ‬ثالن ‪ٞ‬بی ػسیسی اظ زؾش‪ٛ‬ض ضا آغبظ و‪ٙ‬یس(اِجش‪ ٝ‬ث‪ ٝ‬ػع ثالن انّی و‪ ٝ‬سٕبْ آٖ‬
‫ضا اؾشفبز‪ ٜ‬وطز‪ ٜ‬ایس)‪ٛٔ .‬اضزی و‪ ٝ‬قٕب ٔی س‪ٛ‬ا٘یس اظ ثالن ‪ٞ‬بی ػسیس اؾشفبز‪ ٜ‬و‪ٙ‬یس‪ ،‬زض فهُ ‪ٞ‬بی ثؼسی ٔب٘‪ٙ‬س‬
‫فهُ ‪ٔ control flow‬فهال قطح زاز‪ ٜ‬ذ‪ٛ‬ا‪ٙٞ‬س قس ‪.‬‬

‫‪@PythonForever‬‬
‫چگًَگی دًذاًِ گذاری‬

‫اظ یه سطویت اظ ‪ٞ tab‬ب ‪ٞ space ٚ‬ب ثطای ز٘سا٘‪ٌ ٝ‬صاضی ث‪ ٝ‬زِیُ وبض٘ىطزٖ زضؾز زض سٕبْ ‪ٞ platform‬بی‬
‫ٔرشّف اؾشفبز‪٘ ٜ‬ى‪ٙ‬یس‪ ٗٔ .‬قسیسا س‪ٛ‬نی‪ٔ ٝ‬ی و‪ ٓٙ‬و‪ ٝ‬قٕب اظ یه ‪ tab‬سىی یب ز‪ ٚ‬یب چ‪ٟ‬بض ‪ space‬ثطای ‪ٞ‬ط ؾُح‬
‫ز٘سا٘‪ٌ ٝ‬صاضی اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪.‬یىی اظ ایٗ ؾ‪ ٝ‬قی‪ ٜٛ‬ز٘سا٘‪ٌ ٝ‬صاضی ضا ا٘شربة و‪ٙ‬یس‪ ٟٓٔ .‬سط آٖ و‪ ٝ‬یىی ضا ا٘شربة‬
‫و‪ٙ‬یس ‪ ٚ‬ث‪ ٝ‬ن‪ٛ‬ضر دبیساض اظ آٖ اؾشفبز‪ ٜ‬و‪ٙ‬یس‪ ،‬یؼ‪ٙ‬ی س‪ٟٙ‬ب اظ آٖ قی‪ ٜٛ‬ز٘سا٘‪ٌ ٝ‬صاضی اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪.‬‬

‫خالصِ‬

‫او‪ٔ ٖٛٙ‬ب اظ ػعئیبر ظیبزی ٌصقش‪ ٝ‬ایٓ‪ٔ ،‬ب ٔی س‪ٛ‬ا٘یٓ ث‪ ٝ‬چیع‪ٞ‬بی ػبِت سطی ‪ ٓٞ‬چ‪ ٖٛ‬ػجبضار ٌطزـ و‪ٙ‬شطَ‬
‫سغییط ز‪ٞ‬یٓ‪ُٕٔ .‬ئٗ ثبقیس و‪ ٝ‬ثب چیع‪ٞ‬بیی و‪ ٝ‬زض ایٗ فهُ ذ‪ٛ‬ا٘س‪ ٜ‬ایس ضاحز ثبقیس ‪.‬‬

‫ػولگزّب ٍ ػجبرات‬

‫فْزست هٌذرجبت‬

‫‪ 1‬ػٍّٕط‪ٞ‬ب ‪ ٚ‬ػجبضار‬ ‫‪‬‬

‫‪ٔ 2‬مسٔ‪ٝ‬‬ ‫‪‬‬

‫‪ 3‬ػٍّٕط‪ٞ‬ب‬ ‫‪‬‬

‫‪٘ 4‬ىش‪ٝ‬‬ ‫‪‬‬

‫‪ 4.1 o‬ا‪ِٛٚ‬یز ػٍّٕط‪ٞ‬ب‬


‫‪ 5‬سطسیت اضظیبثی‬ ‫‪‬‬

‫‪ 6‬قطوز دصیطی‬ ‫‪‬‬

‫‪ 6.1 o‬ػجبضر ‪ٞ‬ب‬


‫‪ 7‬ث‪ ٝ‬وبض ثطزٖ ػجبضر ‪ٞ‬ب‬ ‫‪‬‬

‫‪ 8‬ذط‪ٚ‬ػی‬ ‫‪‬‬

‫‪ 9‬ایٗ چٍ‪ ٝ٘ٛ‬وبض ٔی و‪ٙ‬س؟‬ ‫‪‬‬

‫‪ 9.1 o‬ذالن‪ٝ‬‬

‫ػولگزّب ٍ ػجبرات‬

‫‪@PythonForever‬‬
‫هقذهِ‬

‫ثیكشط زؾش‪ٛ‬ض‪ٞ‬بیی(ذٍ ‪ٞ‬بی ٔ‪ُٙ‬می) و‪ٔ ٝ‬ی ٘‪ٛ‬یؿیس‪ ،‬قبُٔ ػجبضار ‪ٞ‬ؿش‪ٙ‬س‪ .‬یه ٔظبَ ؾبز‪ ٜ‬ثطای ػجبضار ‪3 + 2‬‬
‫اؾز‪ .‬یه ػجبضر ٔی س‪ٛ‬ا٘س زض‪ ٖٚ‬ػٍّٕط‪ٞ‬ب ‪ ٚ‬ػّٕ‪٘ٛ‬س‪ٞ‬ب قىؿش‪ ٝ‬ق‪٘ٛ‬س ‪.‬ػٍّٕط‪ٞ‬ب ػبُٔ ‪ٞ‬بیی ‪ٞ‬ؿش‪ٙ‬س و‪ ٝ‬چیعی ضا‬
‫ا٘ؼبْ ٔی ز‪ٙٞ‬س ‪ٔ ٚ‬ی س‪ٛ‬ا٘‪ٙ‬س س‪ٛ‬ؾٍ ٕ٘بز‪ٞ‬بیی ٔب٘‪ٙ‬س ‪ +‬یب ‪ٚ‬اغ‪ٞ ٜ‬بی وّیسی ٔره‪ٛ‬ل ٘كبٖ زاز‪ ٜ‬ق‪٘ٛ‬س‪ .‬ػٍّٕط‪ٞ‬ب‬
‫ثطای وبضوطزٖ ث‪ٔ ٝ‬مساضی زاز‪ ٚ ٜ‬زاز‪ٞ ٜ‬بیی و‪ operands(ٝ‬ػّٕ‪٘ٛ‬س) ٘بٔیس‪ٔ ٜ‬ی ق‪٘ٛ‬س‪٘ ،‬یبظٔ‪ٙ‬س٘س‪ .‬زض ایٗ ٔ‪ٛ‬ضز‪2 ،‬‬
‫‪ 3 ٚ‬ػّٕ‪٘ٛ‬س ‪ٞ‬ؿش‪ٙ‬س ‪.‬‬

‫ػولگزّب‬

‫ٔب ث‪ ٝ‬ن‪ٛ‬ضر ٔرشهط ٍ٘ب‪ٞ‬ی ث‪ ٝ‬ػٍّٕط‪ٞ‬ب ‪ ٚ‬وبضثطزقبٖ ٔی ا٘ساظیٓ ‪:‬‬

‫ًکتِ‬

‫قٕب ٔی س‪ٛ‬ا٘یس ػجبضاسی و‪ ٝ‬زض ٔظبَ ‪ٞ‬ب ‪ٞ‬ؿش‪ٙ‬س ضا ثب اؾشفبز‪ ٜ‬اظ ٔفؿط ث‪ ٝ‬ن‪ٛ‬ضر سؼبّٔی ثطضؾی و‪ٙ‬یس‪ٔ .‬ظال‪ ،‬ثطای‬
‫سؿز ػجبضر ‪ ،3 + 2‬اظ اػالٖ ٔفؿط سؼبّٔی ‪Python‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪.‬‬

‫‪>>> 2 + 3‬‬
‫‪5‬‬
‫‪>>> 3 * 5‬‬
‫‪15‬‬
‫>>>‬

‫ػس‪ .5.1 َٚ‬ػٍّٕط‪ٞ‬ب ‪ ٚ‬وبضثطزقبٖ‬

‫اٍلَیت ػولگزّب‬

‫اٌط قٕب یه ػجبضر ٔب٘‪ٙ‬س ‪ 4 * 3 + 2‬زاقشیس‪ ،‬ػُٕ ػٕغ ا‪ َٚ‬ا٘ؼبْ قس‪ ٜ‬اؾز یب ػُٕ يطة؟ ضیبيیبر‬
‫زثیطؾشبٖ ٔب ث‪ٔ ٝ‬ب ٔی ٌ‪ٛ‬یس و‪ ٝ‬ػُٕ يطة اثشسا ثبیس ا٘ؼبْ ق‪ٛ‬ز ‪ -‬ایٗ یؼ‪ٙ‬ی ػٍّٕط يطة ا‪ِٛٚ‬یز ثیكشطی ٘ؿجز‬
‫ث‪ ٝ‬ػٍّٕط ػٕغ زاضز ‪.‬ػس‪ َٚ‬ظیط(ثب ػس‪ٛٔ َٚ‬ػ‪ٛ‬ز زض ضا‪ٕٙٞ‬بی ٔطػغ ‪ Python‬یىؿبٖ اؾز )ػٍّٕط‪ٞ‬بیی و‪ ٝ‬سب‬
‫و‪ ٖٛٙ‬ث‪ ٝ‬آٖ ثط٘ر‪ٛ‬ضز‪ ٜ‬ایٓ‪ ،‬زض فهُ ‪ٞ‬بی آسی قطح زاز‪ ٜ‬ذ‪ٛ‬ا‪ٙٞ‬س قس ‪.‬ػٍّٕط‪ٞ‬بی ثب حك سمسْ یىؿبٖ‪ ،‬زض ػس‪َٚ‬‬
‫ثبال زض یه ضزیف ِیؿز قس‪ ٜ‬ا٘س‪ٔ .‬ظال ‪- ٚ +‬حك سمسْ یىؿبٖ زاض٘س ‪.‬‬

‫‪@PythonForever‬‬
‫تزتیت ارسیبثی‬

‫ث‪ ٝ‬ن‪ٛ‬ضر دیف فطو‪ ،‬ػس‪ َٚ‬حك سمسْ ػٍّٕط سهٕیٓ ٔی ٌیطز و‪ ٝ‬وساْ ػٍّٕط‪ٞ‬ب لجُ اظ زیٍط ػٍّٕط‪ٞ‬ب اضظیبثی‬
‫ٔی ق‪٘ٛ‬س‪ .‬أب اٌط ثر‪ٛ‬ا‪ٞ‬یس سطسیت ٔحبؾج‪ ٝ‬ضا سغییط ز‪ٞ‬یس‪ٔ ،‬ی س‪ٛ‬ا٘یس اظ دطا٘شع‪ٞ‬ب اؾشفبز‪ ٜ‬و‪ٙ‬یس‪ .‬ثطای ٔظبَ‪ ،‬اٌط ٔی‬
‫ذ‪ٛ‬ا‪ٞ‬یس ايبف‪ ٝ‬وطزٖ لجُ اظ يطة زض یه ػجبضر ا٘ؼبْ ق‪ٛ‬ز‪ٔ ،‬ی س‪ٛ‬ا٘یس چیعی ٔظُ (‪ 4 * )3 + 2‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪.‬‬

‫شزکت پذیزی‬

‫ػٍّٕط‪ٞ‬ب ٔؼٕ‪ٛ‬ال اظ چخ ث‪ ٝ‬ضاؾز ث‪ٔ ٓٞ ٝ‬ی دی‪٘ٛ‬س٘س‪ ،‬یؼ‪ٙ‬ی ػٍّٕط‪ٞ‬بیی ثب حك سمسْ یىؿبٖ اظ چخ ث‪ ٝ‬ضاؾز ا٘ؼبْ‬
‫ٔی ق‪٘ٛ‬س‪ٔ .‬ظال ‪ٔ 4 + 3 + 2‬ظُ ( ‪ٔ 4 + )3 + 2‬حبؾج‪ٔ ٝ‬ی ق‪ٛ‬ز‪ .‬ثؼًی اظ ػٍّٕط‪ٞ‬ب ٔظُ ػٍّٕط‪ٞ‬بی ‪ٚ‬اٌصاضی‬
‫قطوز دصیطی ضاؾز ث‪ ٝ‬چخ زاض٘س‪ .‬یؼ‪ٙ‬ی ‪ٔ a = b = c‬ظُ )‪ a = (b = c‬ضفشبض ٔی و‪ٙ‬س ‪.‬‬

‫ػجبرت ّب‬

‫ٔظبَ ‪ .5.1‬ث‪ ٝ‬وبض ثطزٖ ػجبضر ‪ٞ‬ب‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: expression.py‬‬
‫‪length = 5‬‬
‫‪breadth = 2‬‬
‫‪area = length * breadth‬‬
‫‪print 'Area is', area‬‬
‫)‪print 'Perimeter is', 2 * (length + breadth‬‬

‫خزٍجی‬

‫‪$ python expression.py‬‬


‫‪Area is 10‬‬
‫‪Perimeter is 14‬‬

‫‪@PythonForever‬‬
‫ایي چگًَِ کبر هی کٌذ؟‬

‫زضاظا ‪ ٚ‬د‪ٟٙ‬بی ٔؿشُیُ زض ٔشغییع‪ٞ‬بیی ثب ‪ٕٞ‬یٗ ٘بْ شذیط‪ٔ ٜ‬ی ق‪ٛ‬ز‪ٔ .‬ب ایٗ ‪ٞ‬ب ضا ثطای ٔحبؾج‪ٔ ٝ‬ؿبحز ‪ٔ ٚ‬حیٍ‬
‫ٔؿشُیُ ثب وٕه ػجبضار ث‪ ٝ‬وبض ٔی ثطیٓ‪ٔ .‬ب ٘شیؼ‪ ٝ‬ػجبضر ‪ length * breadth‬ضا زض ٔشغییط ‪ area‬شذیط‪ٔ ٜ‬ی‬
‫و‪ٙ‬یٓ ‪ ٚ‬ؾذؽ ثب اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض ‪ print‬آٖ ضا چبح ٔی و‪ٙ‬یٓ‪ .‬زض ٔ‪ٛ‬ضز ز‪ٔٚ‬ی‪ٔ ،‬ب ٔؿشمیٕب اضظـ ػجبضر ‪* 2‬‬
‫)‪(length + breadth‬ضا زض زؾش‪ٛ‬ض ‪ print‬ث‪ ٝ‬وبض ٔی ثطیٓ ‪ٕٞ.‬چ‪ٙ‬یٗ س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس چٍ‪ Python ٝ٘ٛ‬ذط‪ٚ‬ػی ضا‬
‫ظیجب چبح ٔی و‪ٙ‬س‪ .‬حشی ثب ‪ٚ‬ػ‪ٛ‬ز ایٗ و‪ ٝ‬فًبیی ثیٗ '‪ٔ ٚ 'Area is‬شغییط ‪ٔ area‬كرم ٘ىطز‪ ٜ‬ایٓ ‪. Python‬‬
‫آٖ ضا ثطای ٔب لطاض ٔی ز‪ٞ‬س‪ ،‬چ‪ٙ‬بٖ و‪ٔ ٝ‬ب یه ذط‪ٚ‬ػی سٕیع ظیجب ٔی ٌیطیٓ ‪ ٚ‬ثط٘بٔ‪ ٝ‬ایٗ چ‪ٙ‬یٗ ذیّی ثیكشط لبثُ‬
‫ذ‪ٛ‬ا٘سٖ ٔی ق‪ٛ‬ز(اظ آ٘ؼبیی و‪ٔ ٝ‬ب ٍ٘طاٖ فبنّ‪ ٝ‬زض ذط‪ٚ‬ػی ٘یؿشیٓ)‪ .‬ایٗ ٔظبَ اؾز اظ ایٗ و‪ ٝ‬چٍ‪Python ٝ٘ٛ‬‬
‫ظ٘سٌی ضا ثطای ثط٘بٔ‪ٛ٘ ٝ‬یؽ آؾبٖ سط ٔی و‪ٙ‬س ‪.‬‬

‫خالصِ‬

‫ٔب چٍ‪ٍ٘ٛ‬ی اؾشفبز‪ ٜ‬اظ ػٍّٕط‪ٞ‬ب‪ ،‬ػّٕ‪٘ٛ‬س‪ٞ‬ب ‪ ٚ‬ػجبضار ضا زیس‪ ٜ‬ایٓ ‪ -‬ایٗ ‪ٞ‬ب ثّ‪ٛ‬ن ‪ٞ‬بی اؾبؾی ؾبذشٕبٖ ‪ٞ‬ط ثط٘بٔ‪ٝ‬‬
‫ای ‪ٞ‬ؿش‪ٙ‬س‪ .‬ؾذؽ ٔب ذ‪ٛ‬ا‪ٞ‬یٓ زیس و‪ ٝ‬چٍ‪ ٝ٘ٛ‬اظ ایٗ ‪ٞ‬ب زض ثط٘بٔ‪ٔ ٝ‬بٖ ثب اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ضار اؾشفبز‪ ٜ‬و‪ٙ‬یٓ ‪.‬‬

‫رًٍذ کٌتزل‬

‫فْزست هٌذرجبت‬

‫‪ 1‬فهُ ‪ .6‬ض‪٘ٚ‬س و‪ٙ‬شطَ‬ ‫‪‬‬

‫‪ٔ 2‬مسٔ‪ٝ‬‬ ‫‪‬‬

‫‪ 3‬زؾش‪ٛ‬ض‪if‬‬ ‫‪‬‬

‫‪ 4‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪if‬‬ ‫‪‬‬

‫‪ٔ 5‬ظبَ ‪ .6.1‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪if‬‬ ‫‪‬‬

‫‪ 6‬ذط‪ٚ‬ػی‬ ‫‪‬‬

‫‪ 7‬ایٗ چٍ‪ ٝ٘ٛ‬وبض ٔی و‪ٙ‬س؟‬ ‫‪‬‬

‫‪ 8‬سصوط ثطای ثط٘بٔ‪ٛ٘ ٝ‬یؿبٖ ‪C/C++‬‬ ‫‪‬‬

‫‪ 8.1 o‬زؾش‪ٛ‬ض‪while‬‬
‫‪ 8.2 o‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪while‬‬
‫‪ٔ 9‬ظبَ ‪ .6.2‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪while‬‬ ‫‪‬‬

‫‪ 10‬ذط‪ٚ‬ػی‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫‪ 11‬ایٗ چٍ‪ ٝ٘ٛ‬وبض ٔی و‪ٙ‬س؟‬ ‫‪‬‬

‫‪ 12‬سصوط ثطای ثط٘بٔ‪ٛ٘ ٝ‬یؿبٖ ‪C/C++‬‬ ‫‪‬‬

‫‪ 12.1 o‬حّم‪forٝ‬‬
‫‪ 12.2 o‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪for‬‬
‫‪ٔ 13‬ظبَ ‪ .6.2‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪for‬‬ ‫‪‬‬

‫‪ 14‬ذط‪ٚ‬ػی‬ ‫‪‬‬

‫‪ 15‬ایٗ چٍ‪ ٝ٘ٛ‬وبض ٔی و‪ٙ‬س؟‬ ‫‪‬‬

‫‪ 16‬سصوط ثطای ثط٘بٔ‪ٛ٘ ٝ‬یؿبٖ ‪C/C++/Java/C#‬‬ ‫‪‬‬

‫‪ 16.1 o‬زؾش‪ٛ‬ض قىؿش‪ٝ‬‬


‫‪ 17‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪break‬‬ ‫‪‬‬

‫‪ٔ 18‬ظبَ ‪ .6.4‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪break‬‬ ‫‪‬‬

‫‪ 19‬ذط‪ٚ‬ػی‬ ‫‪‬‬

‫‪G2's Poetic Python 20‬‬ ‫‪‬‬

‫‪ 21‬زؾش‪ٛ‬ض‪continue‬‬ ‫‪‬‬

‫‪ 22‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪continue‬‬ ‫‪‬‬

‫‪ 23‬ذط‪ٚ‬ػی‬ ‫‪‬‬

‫‪ 24‬ایٗ چٍ‪ ٝ٘ٛ‬وبض ٔی و‪ٙ‬س؟‬ ‫‪‬‬

‫‪ 24.1 o‬ذالن‪ٝ‬‬

‫فصل ‪ .6‬رًٍذ کٌتزل‬

‫هقذهِ‬

‫زض ثط٘بٔ‪ٞ ٝ‬بیی و‪ ٝ‬سبو‪ ٖٛٙ‬زیس‪ ٜ‬ایٓ‪ ،‬یه ؾطی اظ زؾش‪ٛ‬ضار ‪ٚ‬ػ‪ٛ‬ز زاقش‪ ٝ‬اؾز ‪Python ٚ‬ث‪ ٝ‬زضؾشی آٖ ‪ٞ‬ب ضا زض‬
‫ػبی ذ‪ٛ‬زـ اػطا وطز‪ ٜ‬اؾز‪ .‬اٌط قٕب ذ‪ٛ‬اؾشیس و‪ ٝ‬ض‪٘ٚ‬س چٍ‪ٍ٘ٛ‬ی ا٘ؼبْ آٖ ضا سغییط ز‪ٞ‬یس چ‪ٝ‬؟ ثطای ٔظبَ‪ ،‬قٕب‬
‫‪ٔ.‬ب٘‪ٙ‬س چبح‬ ‫ٔی ذ‪ٛ‬ا‪ٞ‬یس و‪ ٝ‬ثط٘بٔ‪ٔ ٝ‬مساضی سهٕیٓ ثٍیطز ‪ ٚ‬چیع‪ٞ‬بی ٔشفب‪ٚ‬سی ضا ثؿش‪ ٝ‬ث‪ٛٔ ٝ‬لؼیز ا٘ؼبْ ز‪ٞ‬س‬
‫وطزٖ '‪ 'Good Morning‬یب '‪ 'Good Evening‬ثؿش‪ٚ ٝ‬لز ض‪ٚ‬ظ؟‬

‫‪ٕٞ‬بٖ َ‪ٛ‬ضی و‪ ٝ‬احشٕبال حسؼ ظز‪ ٜ‬ایس‪ ،‬ایٗ ثب اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ضار ض‪٘ٚ‬س و‪ٙ‬شطَ لبثُ ا٘ؼبْ اؾز‪ .‬ؾ‪ ٝ‬زؾش‪ٛ‬ض ض‪٘ٚ‬س‬
‫و‪ٙ‬شطَ زض ‪ٚ Python‬ػ‪ٛ‬ز زاض٘س‪while. ٚfor ، - if‬‬

‫‪@PythonForever‬‬
if‫دستَر‬

‫ضار ضا‬ٛ‫ ٔب یه ٔمساض اظ زؾش‬،‫يؼیز زضؾز ثبقس‬ٚ ‫ اٌط‬ٚ ‫ز‬ٚ‫ وبض ٔی ض‬ٝ‫يؼیز ث‬ٚ ٖ‫ ثطای ثطضؾی وطز‬if ‫ض‬ٛ‫زؾش‬
(else- ٓ‫ی‬ٙ‫ضار زیٍطی ضا دطزاظـ ٔی و‬ٛ‫ ٔب ٔمساض زؾش‬ٝ‫ى‬ٙ‫ زیٍط ای‬،)‫ز‬ٛ‫ ٔی ق‬ٜ‫(٘بٔیس‬if-block ٓ‫ی‬ٙ‫اػطا ٔی و‬
. ‫ اذشیبضی اؾز‬else ‫ ػجبضر‬.)‫ز‬ٛ‫ ٔی ق‬ٜ‫٘بٔیس‬block

if‫استفبدُ اس دستَر‬

if‫ استفبدُ اس دستَر‬.6.1 ‫هثبل‬

#!/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++ ٝ‬زاضیس) ‪ٔ ٚ‬ؿشّعْ ایٗ اؾز و‪ ٝ‬قٕب زض اثشسا ثب ‪ ٕٝٞ‬ایٗ ‪ٞ‬ب آق‪ٙ‬ب ق‪ٛ‬یس‪ .‬أب ثؼس اظ آٖ‪ ،‬قٕب ثب آٖ‬
‫ضاحز ذ‪ٛ‬ا‪ٞ‬یس ث‪ٛ‬ز ‪ ٚ‬ثطای قٕب َجیؼی ذ‪ٛ‬ا‪ٞ‬س ث‪ٛ‬ز ‪.‬‬

‫تذکز ثزای ثزًبهِ ًَیسبى‪C/C++‬‬

‫‪ٞ‬یچ زؾش‪ٛ‬ض ‪ switch‬ای زض ‪ٚ Python‬ػ‪ٛ‬ز ٘ساضز‪ .‬قٕب ٔی س‪ٛ‬ا٘یس اظ زؾش‪ٛ‬ض ‪if..elif..else‬ثطای ا٘ؼبْ ‪ٕٞ‬بٖ‬
‫چیع اؾشفبز‪ ٜ‬و‪ٙ‬یس(‪ ٚ‬زض ثؼًی ٔ‪ٛ‬اضز‪ ،‬اظ یه ‪ٚ‬اغ‪٘ ٜ‬بٔ‪ ٝ‬ثطای ا٘ؼبْ ؾطیغ آٖ اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪).‬‬

‫دستَر‪while‬‬

‫زؾش‪ٛ‬ض ‪ while‬ث‪ ٝ‬قٕب ایٗ اػبظ‪ ٜ‬ضا ٔی ز‪ٞ‬س و‪ ٝ‬یه ثالن اظ زؾش‪ٛ‬ض ضا ٔىطضا سب ظٔب٘ی و‪ ٝ‬قطٌ نحیح ثبقس‪ ،‬اػطا‬
‫و‪ٙ‬یس‪ .‬یه زؾش‪ٛ‬ض ‪ while‬یه ٔظبَ اظ چیعی اؾز و‪ ٝ‬زؾش‪ٛ‬ض ‪٘ looping‬بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز‪ .‬یه زؾش‪ٛ‬ض ‪while‬‬
‫ٔی س‪ٛ‬ا٘س یه ػجبضر ‪ else‬اذشیبضی ضا زاقش‪ ٝ‬ثبقس ‪.‬‬

‫استفبدُ اس دستَر‪while‬‬

‫هثبل ‪ .6.2‬استفبدُ اس دستَر‪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).‬‬

‫تذکز ثزای ثزًبهِ ًَیسبى‪C/C++‬‬

‫ث‪ ٝ‬یبز زاقش‪ ٝ‬ثبقیس و‪ ٝ‬قٕب ٔی س‪ٛ‬ا٘یس ػجبضر ‪ else‬ضا ثطای حّم‪ while ٝ‬زاقش‪ ٝ‬ثبقیس ‪.‬‬

‫حلقِ‪for‬‬

‫زؾش‪ٛ‬ض ‪ for..in‬یه زؾش‪ٛ‬ض ایؼبز حّم‪ ٝ‬زیٍط اؾز و‪ ٝ‬ؾطاؾط س‪ٛ‬اِی یه قیء ضا سىطاض ٔی و‪ٙ‬س‪ .‬یؼ‪ٙ‬ی ؾطاؾط ‪ٞ‬ط‬
‫ثرف زض یه س‪ٛ‬اِی ضا ٔی ٌطزز‪ٔ .‬ب زض ٔ‪ٛ‬ضز س‪ٛ‬اِی ‪ٞ‬ب زض فهُ ‪ٞ‬بی ثؼسی ثیكشط ذ‪ٛ‬ا‪ٞ‬یٓ زیس‪ .‬چیعی و‪ ٝ‬حبال‬
‫الظْ اؾز ثسا٘یس ایٗ اؾز و‪ ٝ‬یه س‪ٛ‬اِی س‪ٟٙ‬ب یه ٔؼٕ‪ٛ‬ػ‪ٙٔ ٝ‬ظٓ اظ اػعاؾز ‪.‬‬

‫‪@PythonForever‬‬
‫استفبدُ اس دستَر‪for‬‬

‫هثبل ‪ .6.2‬استفبدُ اس دستَر‪for‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: for.py‬‬
‫‪for i in range(1, 5):‬‬
‫‪print i‬‬
‫‪else:‬‬
‫'‪print 'The for loop is over‬‬

‫خزٍجی‬

‫‪$ python for.py‬‬


‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪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‬س‪ِٛ‬یس قس‪ ٜ‬اؾز ضا زاضیٓ‪ ،‬أب ث‪َٛ ٝ‬ض وّی ٔب ٔی س‪ٛ‬ا٘یٓ اظ ‪ٞ‬ط ٘‪ٛ‬ع اظ س‪ٛ‬اِی ‪ٞ‬بی ‪ٞ‬ط قیء ای‬
‫اؾشفبز‪ ٜ‬و‪ٙ‬یٓ! ٔب ٔؼ‪ٙ‬ی ایٗ ضا زض فهُ ‪ٞ‬بی ثؼسی ثب ػعئیبر ثطضؾی ٔی و‪ٙ‬یٓ ‪.‬‬

‫تذکز ثزای ثزًبهِ ًَیسبى‪C/C++/Java/C#‬‬

‫حّم‪ 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‬‬

‫هثبل ‪ .6.4‬استفبدُ اس دستَر‪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

: ‫ ٘بْ زاضز‬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‫استفبدُ اس دستَر‬

continue= ‫ض‬ٛ‫ اظ زؾش‬ٜ‫ اؾشفبز‬.6.5 َ‫ٔظب‬

#!/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‬زاض٘س ‪ ٚ‬اظ‬
‫ایٗ ض‪ ،ٚ‬ضاحز قسٖ ثب آ٘بٖ يط‪ٚ‬ضی اؾز ‪.‬ؾذؽ ٔب چٍ‪ٍ٘ٛ‬ی ؾبذشٗ ‪ ٚ‬اؾشفبز‪ ٜ‬وطزٖ اظ س‪ٛ‬اثغ ضا ٔی ثی‪ٙ‬یٓ ‪.‬‬

‫کتبة یک ثبیت اس پبیتَى‪.‬فصل ّفتن‪.‬تَاثغ‬

‫فْزست هٌذرجبت‬

‫‪ 1‬فهُ ‪ٞ‬فشٓ ‪ .‬س‪ٛ‬اثغ‬ ‫‪‬‬

‫‪ٔ 2‬ؼطفی‬ ‫‪‬‬

‫‪ 3‬دبضأشط‪ٞ‬بی س‪ٛ‬اثغ‬ ‫‪‬‬

‫‪ٔ 4‬شغیط‪ٞ‬بی ٔحّی‬ ‫‪‬‬

‫‪ 5‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‪global‬‬ ‫‪‬‬

‫‪ٔ 6‬مبزیط دیف فطو آضٌ‪ٔٛ‬بٖ ‪ٞ‬ب‬ ‫‪‬‬

‫‪ 7‬آضٌ‪ٔٛ‬بٖ ‪ٞ‬بی وّیسی‬ ‫‪‬‬

‫‪ 8‬زؾش‪ٛ‬ض‪return‬‬ ‫‪‬‬

‫‪DocStrings 9‬‬ ‫‪‬‬

‫‪ 10‬ذالن‪ٝ‬‬ ‫‪‬‬

‫فصل ّفتن ‪ .‬تَاثغ‬

‫هؼزفی‬

‫س‪ٛ‬اثغ ثرف ‪ٞ‬بی لبثُ اؾشفبز‪ ٜ‬ی ٔؼسز ثط٘بٔ‪ٞ ٝ‬ب ‪ٞ‬ؿش‪ٙ‬س ‪ .‬آ٘‪ٟ‬ب ث‪ ٝ‬قٕب اػبظ‪ٔ ٜ‬ی ز‪ٙٞ‬س و‪٘ ٝ‬بٔی ضا ثط ض‪ٚ‬ی یه‬
‫ثالن اظ زؾش‪ٛ‬ضار ثٍصاضیس ‪ ٚ‬ؾذؽ آٖ ثّ‪ٛ‬ن ضا ثب اؾشفبز‪ ٜ‬اظ آٖ ٘بْ زض ‪ٞ‬ط وؼبیی اظ ثط٘بٔ‪ ٚ ٝ‬ث‪ٞ ٝ‬ط سؼساز اػطا‬

‫‪@PythonForever‬‬
‫‪range ٚ len‬‬ ‫و‪ٙ‬یس ‪ .‬ایٗ ُّٔت فطاذ‪ٛ‬ا٘ی سبثغ ٘بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ٔ .‬ب سب و‪ ٖٛٙ‬اظ ثؿیبضی اظ س‪ٛ‬اثغ س‪ٛ‬وبض ٔظُ‬
‫اؾشفبز‪ ٜ‬وطز‪ ٜ‬ایٓ ‪.‬‬

‫س‪ٛ‬اثغ ثب اؾشفبز‪ ٜ‬اظ وّٕ‪ ٝ‬ی وّیسی ‪ def‬سؼطیف ٔی ق‪٘ٛ‬س ‪ .‬زض ازأ‪ ٝ‬ی ‪٘ ،def‬بْ (ق‪ٙ‬بؾ‪ )ٝ‬سبثغ ٔی آیس و‪ ٝ‬ثب یه‬
‫ػفز دطا٘شع ‪ٕٞ‬طا‪ ٜ‬اؾز ‪ ،‬و‪ ٝ‬زض زاذُ ػفز دطا٘شع ٕٔىٗ اؾز ‪٘ ،‬بْ ‪ٞ‬بی ٔشغیط‪ٞ‬بیی آ‪ٚ‬ضز‪ ٜ‬ق‪ٛ‬ز ‪ ،‬زض ا٘ش‪ٟ‬ب ایٗ‬
‫ذٍ ثب وبضاوشط وّ‪ ، ( : ) ٖٛ‬سٕبْ ٔی ق‪ٛ‬ز ‪ .‬ؾذؽ زض ذُ‪ ٌٛ‬ثؼسی ثالوی اظ زؾش‪ٛ‬ضار و‪ ٝ‬ثركی اظ ایٗ سبثغ‬
‫‪ٞ‬ؿش‪ٙ‬س ‪ٔ ،‬ی آی‪ٙ‬س ‪ .‬یه ٔظبَ ث‪ ٝ‬قٕب ٘كبٖ ذ‪ٛ‬ا‪ٞ‬س زاز و‪ ٝ‬ایٗ وبض ثؿیبض ؾبز‪ ٜ‬اؾز ‪:‬‬

‫تؼزیف تبثغ‬

‫هثبل ‪ .7.1‬تؼزیف کزدى یک تبثغ‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: function1.py‬‬

‫‪def sayHello():‬‬
‫‪print 'Hello World!' # block belonging to the‬‬
‫‪function‬‬
‫‪# End of function‬‬

‫‪sayHello() # call the function‬‬

‫خزٍجی‬

‫‪$ python function1.py‬‬


‫!‪Hello World‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫ٔب سبثؼی ضا ث‪٘ ٝ‬بْ ‪ sayHello‬ثب اؾشفبز‪ ٜ‬اظ ٘ح‪ٛ‬ی و‪ ٝ‬زض ثبال س‪ٛ‬يیح زاز‪ ٜ‬قس ‪ ،‬سؼطیف ٕ٘‪ٛ‬زیٓ ‪ .‬ایٗ سبثغ دبضأشطی‬
‫ٕ٘ی دصیطز ‪ ،‬اظ ای‪ٙ‬ط‪ ٚ‬اػالٖ ٔشغیطی زض ػفز دطا٘شع سؼطیف سبثغ ن‪ٛ‬ضر ٍ٘طفش‪ ٝ‬اؾز ‪ .‬دبضأشط‪ٞ‬بی س‪ٛ‬اثغ ‪ٚ ،‬ض‪ٚ‬زی‬

‫‪@PythonForever‬‬
‫‪ٞ‬بی س‪ٛ‬اثغ ‪ٞ‬ؿش‪ٙ‬س ‪ ،‬ثُ‪ٛ‬ضیى‪ٔ ٝ‬ب ٔی س‪ٛ‬ا٘یٓ ٔمبزیط ٔشفب‪ٚ‬سی ضا ث‪ ٝ‬آ٘‪ٟ‬ب دبؼ ز‪ٞ‬یٓ ‪٘ ٚ‬شبیؼی ٔ‪ ٌٛٙ‬ث‪ ٝ‬آ٘‪ٟ‬ب ‪ ،‬ضا‬
‫زضیبفز و‪ٙ‬یٓ ‪.‬‬

‫پبراهتزّبی تَاثغ‬

‫یه سبثغ ٔی س‪ٛ‬ا٘س دبضأشط‪ٞ‬بیی ثذصیطز و‪ ٝ‬زض ‪ٚ‬الغ ٔمبزیطقبٖ ضا قٕب ث‪ ٝ‬سبثغ ٔی ز‪ٞ‬یس ‪ .‬اظ ای‪ٙ‬ط‪ ٚ‬س‪ٛ‬اثغ ٔی س‪ٛ‬ا٘‪ٙ‬س‬
‫ایٗ ٔمبزیط ضا ثطای ا٘ؼبْ وبض‪ٞ‬بیی ث‪ ٝ‬وبض ٌیطز ‪ .‬ایٗ دبضأشط‪ٞ‬ب زض ‪ٚ‬الغ قجی‪ ٝ‬ث‪ٔ ٝ‬شغیط‪ٞ‬ب ‪ٞ‬ؿش‪ٙ‬س ‪ ،‬ث‪ ٝ‬اؾشظ‪ٙ‬بء ایٗ‬
‫و‪ٔ ٝ‬مبزیط ایٗ ٔشغیط‪ٞ‬ب ‪ٍٙٞ‬بٔیى‪ٔ ٝ‬ب سبثغ ضا نسا ٔی ظ٘یٓ ‪ ،‬سؼطیف ٔی ق‪٘ٛ‬س ‪ ٚ‬زض زاذُ ذ‪ٛ‬ز سبثغ ا٘شؿبة ٔمبزیط‬
‫ن‪ٛ‬ضر ٍ٘طفش‪ ٝ‬اؾز ‪.‬‬

‫دبضٔشط‪ٞ‬ب زض زاذُ یه ػفز دطا٘شع زض سؼطیف سبثغ ٔكرم ٔی ق‪٘ٛ‬س ‪ ٚ ،‬ثب وبضاوشط ( ‪ ) ,‬اظ ‪ ٓٞ‬سفىیه ٔی ق‪٘ٛ‬س ‪.‬‬
‫‪ ٚ‬ظٔب٘یى‪ ٝ‬سبثؼی ضا نسا ٔی ظ٘یٓ ‪ٔ ،‬ب ٔمبزیط آٖ ‪ٞ‬ب ضا ث‪ ٝ‬سبثغ ٔی ضؾب٘یٓ ‪ .‬ث‪ ٝ‬انُالح ث‪ ٝ‬وبضضفش‪ ٝ‬زض ای‪ٙ‬ؼب زلز‬
‫و‪ٙ‬یس – ٘بْ ‪ٞ‬بیی و‪ ٝ‬زض سؼطیف سبثغ شوط ٔی ق‪٘ٛ‬س ‪ ،‬دبضأشط ٘بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ .‬زض حبِیى‪ٔ ٝ‬مبزیطی و‪ ٝ‬قٕب زض‬
‫حیٗ فطاذ‪ٛ‬ا٘ی سبثغ ٔی آ‪ٚ‬ضیس ‪ ،‬آضٌ‪ٔٛ‬بٖ ٘بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬

‫استفبدُ اس پبرهتزّبی تبثغ‬

‫هثبل ‪ .7.2‬ثکبرگیزی پبراهتزّبی تبثغ‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: func_param.py‬‬

‫‪def printMax(a, b):‬‬


‫‪if a > b:‬‬
‫'‪print a, 'is maximum‬‬
‫‪else:‬‬
‫'‪print b, 'is maximum‬‬

‫‪printMax(3, 4) # directly give literal values‬‬

‫‪x = 5‬‬
‫‪y = 7‬‬

‫‪printMax(x, y) # give variables as arguments‬‬

‫‪@PythonForever‬‬
‫خزٍجی‬

‫‪$ python func_param.py‬‬


‫‪4 is maximum‬‬
‫‪7 is maximum‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض ای‪ٙ‬ؼب ‪ٔ ،‬ب سبثؼی ث‪٘ ٝ‬بْ ‪ printMax‬ضا سؼطیف ٕ٘‪ٛ‬زیٓ و‪ ٝ‬ز‪ ٚ‬دبضأشط ث‪٘ ٝ‬بْ ‪ٞ‬بی ‪ٔ b ٚa‬ی دصیطز ‪ .‬زض زاذُ‬
‫سبثغ ػسز ثعضي سط ضا ثب زؾش‪ٛ‬ض ؾبز‪ ٜ‬ی ‪if .. else‬دیسا ٔی و‪ٙ‬یٓ ‪ ٚ‬آٖ ضا چبح ٔی و‪ٙ‬یٓ ‪.‬‬

‫زض ا‪ِٚ‬یٗ اؾشفبز‪ ٜ‬اظ سبثغ ‪ٔ ، printMax‬ب اػساز (آضٌ‪ٔٛ‬بٖ ‪ٞ‬ب) ضا ثُ‪ٛ‬ض ٔؿشمیٓ ث‪ ٝ‬سبثغ ضؾب٘سیٓ ‪ ،‬زض ز‪ٔٚ‬یٗ‬
‫فطاذ‪ٛ‬ا٘ی ‪ٔ ،‬ب سبثغ ضا ثب اؾشفبز‪ ٜ‬اظ ٔشغیط‪ٞ‬ب نسا ظزیٓ ‪ .‬زؾش‪ٛ‬ض ‪ (printMx(x,y‬ثبػض ٔی ق‪ٛ‬ز و‪ٔ ٝ‬مساض آضٌ‪ٔٛ‬بٖ‬
‫‪x‬ث‪ ٝ‬دبضأشط ‪ٔ ٚ a‬مساض آضٌ‪ٔٛ‬بٖ ‪ y‬ث‪ ٝ‬دبضأشط ‪ٙٔ b‬شؿت ق‪ٛ‬ز ‪ .‬سبثغ ‪ printMax‬زض ز‪ ٚ‬حبِز ثسضؾشی وبض ٔی‬
‫و‪ٙ‬س ‪.‬‬

‫هتغیزّبی هحلی‬

‫‪ٍٙٞ‬بٔیى‪ٔ ٝ‬شغجط‪ٞ‬بیی ضا زض زض‪ ٖٚ‬سؼطیف سبثغ اػالٖ ٔی و‪ٙ‬یس ‪ ،‬آ٘‪ٟ‬ب ث‪ٞ ٝ‬یچ ‪ٚ‬ػ‪ ٝ‬ثب ٔشغیط‪ٞ‬بی ‪٘ ٓٞ‬بٔی و‪ٝ‬‬
‫زضذبضع اظ سبثغ ‪ٞ‬ؿش‪ٙ‬س ‪ ،‬اضسجبَی ٘ساض٘س ‪ .‬ثسیٗ ٔؼ‪ٙ‬ی و‪٘ ٝ‬بْ ‪ٞ‬بی ٔشغیط‪ٞ‬ب هحذٍد ث‪ ٝ‬سبثغ ‪ٞ‬ؿش‪ٙ‬س ‪ .‬ایٗ ُّٔت‬
‫حَسُ ی هتغیز )‪٘(scope of the variable‬بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ .‬سٕبٔی ٔشغیط‪ٞ‬بیی و‪ ٝ‬زض ح‪ٛ‬ظ‪ ٜ‬ی یه ثّ‪ٛ‬ن‬
‫‪ٞ‬ؿش‪ٙ‬س ‪ ،‬اظ ٔحُ سؼطیف ٘بْ قبٖ اػالٖ ٔی ق‪٘ٛ‬س ‪.‬‬

‫استفبدُ اس هتغیزّبی هحلی‬

‫هثبل ‪ .7.3‬ثکبرگیزی هتغیزّبی هحلی‬

‫‪#!/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‬‬

‫خزٍجی‬

‫‪$ python func_local.py‬‬


‫‪x is 50‬‬
‫‪Changed local x to 2‬‬
‫‪x is still 50‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض سبثغ ‪ ،‬ا‪ِٚ‬یٗ ثبضی و‪ٔ ٝ‬ب اظ ٔمساض ‪ x‬اؾشفبز‪ ٜ‬وطزیٓ ‪ ،‬دبیش‪ ٖٛ‬اظ ٔمساض دبضأشطی و‪ ٝ‬زضسبثغ اػالٖ قس‪ ٜ‬اؾشفبز‪ٜ‬‬
‫ٔی و‪ٙ‬س ‪ .‬ؾذؽ ‪ٔ ،‬ب ٔمساض ‪ 2‬ضا ث‪٘ x ٝ‬ؿجز زازیٓ ‪٘ .‬بْ ‪ x‬ثطای سبثغ ٔب ٔحّی اؾز ‪ .‬اظ ای‪ٙ‬ط‪ٚ ٚ‬لشی ٔب ٔمساض ‪x‬ضا‬
‫زض سبثغ سغییط ثس‪ٞ‬یٓ ‪ٔ ،‬شغیط ‪ x‬ایی و‪ ٝ‬زض ثالن انّی ثط٘بٔ‪ ٝ‬سؼطیف قس‪ ٜ‬اؾز ‪ ،‬ثس‪ ٖٚ‬سبطیط ثبلی ٔی ٔب٘س ‪.‬‬

‫زض آذطیٗ زؾش‪ٛ‬ض ‪ٔ ، print‬ب سبئیس ٔی و‪ٙ‬یٓ و‪ٔ ٝ‬مساض ٔشغیط ‪ x‬زض ثالن انّی ثط٘بٔ‪ ، ٝ‬ثی سغییط ٔب٘س‪ ٜ‬اؾز ‪.‬‬

‫استفبدُ اس دستَر ‪global‬‬

‫زض ن‪ٛ‬ضسی و‪ ٝ‬ثر‪ٛ‬ا‪ٞ‬یس یه ٔمساض ضا ث‪ ٝ‬یه ٘بْ سؼطیف قس‪ ٜ‬زض ذبضع اظ سبثغ ٔ‪ٙ‬شؿت و‪ٙ‬یس ‪ .‬ثطای ای‪ٙ‬ىبض ٔی‬
‫ثبیؿز ث‪ ٝ‬دبیش‪ ٖٛ‬ثف‪ٕٟ‬ب٘یس و‪ ٝ‬ایٗ ٘بْ ٔحّی ٘یؿز ‪ ،‬ثّى‪ ٝ‬ؾطاؾطی اؾز ‪ٔ .‬ب ایٗ وبض ضا ثب اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض‬
‫‪global‬ا٘ؼبْ ٔی ز‪ٞ‬یٓ ‪ .‬ایٗ غیط ٕٔىٗ اؾز و‪ ٝ‬یه ٔمساض ضا ث‪ ٝ‬یه ٔشغیط سؼطیف قس‪ ٜ‬زضذبضع اظ سبثغ ثس‪ٖٚ‬‬
‫اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض ‪٘ global‬ؿجز زاز ‪.‬‬

‫قٕب ٔی س‪ٛ‬ا٘یس اظ ٔمبزیط ٔشغیط‪ٞ‬بیی و‪ ٝ‬زض ذبضع اظ سبیغ سؼطیف قس‪ ٜ‬ا٘س ( ثب فطو ای‪ٙ‬ى‪ٔ ٝ‬شغیط‪ٞ‬بی ‪ٕٙٞ‬بٔی ثب آٖ‬
‫‪ٞ‬ب زضزاذُ سبثغ سؼطیف ٘كس‪ ٜ‬ا٘س ) اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ٞ .‬ط چ‪ٙ‬س و‪ ٝ‬ایٗ وبض ض‪ٚ‬اع ٘ساضز ‪ٕٞ ٚ‬چ‪ٙ‬یٗ ٔی ثبیؿز اػش‪ٙ‬بة‬

‫‪@PythonForever‬‬
‫ق‪ٛ‬ز ‪ ،‬چطا و‪ ٝ‬ثسِیُ ای‪ٙ‬ى‪ ٝ‬سؼطیف ٔشغیط‪ٞ‬ب زض ػبیی زیٍط اؾز ‪ ،‬ثبػض ٔی ق‪ٛ‬ز و‪ ٝ‬ذ‪ٛ‬ا٘بیی ‪ ٚ‬قفبفیز ثط٘بٔ‪ ٝ‬اظ‬
‫ثیٗ ثط‪ٚ‬ز‪ .‬أب اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض ‪ ، global‬ث‪َٛ ٝ‬ض ‪ٚ‬افطی ثبػض قفبفیز ایٗ ٔؿئّ‪ٔ ٝ‬ی ق‪ٛ‬ز ‪ ،‬چطا و‪ٔ ٝ‬كرم ٔی‬
‫و‪ٙ‬س و‪ٔ ٝ‬شغیط زض ثّ‪ٛ‬ن ثیط‪٘ٚ‬ی سؼطیف قس‪ ٜ‬اؾز ‪.‬‬

‫هثبل ‪ .7.4‬استفبدُ اس دستَر ‪global‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: func_global.py‬‬

‫‪def func():‬‬
‫‪global x‬‬

‫‪print 'x is', x‬‬


‫‪x = 2‬‬
‫‪print 'Changed global x to', x‬‬

‫‪x = 50‬‬
‫)(‪func‬‬
‫‪print 'Value of x is', x‬‬

‫خزٍجی‬

‫‪$ python func_global.py‬‬


‫‪x is 50‬‬
‫‪Changed global x to 2‬‬
‫‪Value of x is 2‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زؾش‪ٛ‬ض ‪ ، global‬ثطای ثیبٖ ای‪ٙ‬ى‪x ٝ‬یه ٔشغیط ؾطاؾطی اؾز ‪ ،‬ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز‪ .‬اظ ای‪ٙ‬ط‪ٍٙٞ ٚ‬بٔیى‪ٔ ٝ‬ب ٔمساضی ضا‬
‫زض زض‪ ٖٚ‬سبثغ ث‪٘ x ٝ‬ؿجز ٔی ز‪ٞ‬یٓ ‪ ،‬ایٗ سغییط ظٔب٘یى‪ ٝ‬زض ثّ‪ٛ‬ن انّی ثط٘بٔ‪ ٝ‬اظ ‪ x‬اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یٓ ‪ٕ٘ ،‬بیبٖ‬
‫ٔی ق‪ٛ‬ز ‪.‬‬

‫‪@PythonForever‬‬
‫‪ٔ ، global‬كرم و‪ٙ‬یس ‪ .‬ثطای‬ ‫قٕب ٔی س‪ٛ‬ا٘یس ‪ ،‬ثیف اظ یه ٔشغیط ؾطاؾطی ضا ثب اؾشفبز‪ ٜ‬اظ یه زؾش‪ٛ‬ض‬
‫ٔظبَ ‪:global x,y,z‬‬

‫هقبدیز پیش فزض آرگَهبى ّب‬

‫ثطای ثطذی س‪ٛ‬اثغ ‪ٕٔ ،‬ىٗ اؾز و‪ ٝ‬قٕب ثر‪ٛ‬ا‪ٞ‬یس ‪ ،‬دبضأشط‪ٞ‬بیی اذشیبضی ایؼبز و‪ٙ‬یس ‪ ،‬ثُ‪ٛ‬ضیى‪ ٝ‬زض ن‪ٛ‬ضسی و‪ٝ‬‬
‫وبضثط ٔمبزیطی ضا ثطای آٖ دبضأشط‪ٞ‬ب اضؾبَ ٘ىطز ‪ ،‬اظ ٔمبزیط دیف فطو ذ‪ٛ‬زقبٖ اؾشفبز‪ ٜ‬و‪ٙٙ‬س ‪ .‬ایٗ وبض ث‪ ٝ‬وٕه‬
‫ٔمبزیط دیف فطو آضٌ‪ٔٛ‬بٖ ‪ٞ‬ب ا٘ؼبْ ٔی ق‪ٛ‬ز ‪ .‬قٕب ٔی س‪ٛ‬ا٘یس ٔمبزیط دیف فطو آضٌ‪ٔٛ‬بٖ ‪ٞ‬ب ‪ ،‬ثطای دبضأشط‪ٞ‬ب ث‪ٝ‬‬
‫ایٗ ن‪ٛ‬ضر ٔكرم ٔی ق‪ٛ‬ز و‪ ٝ‬ثؼس اظ ٘بْ دبضأشط زض سؼطیف سبثغ ‪ ،‬ػٍّٕط ا٘شؿبة ( ; ) لطاض ٔی ٌیطز ‪ ٚ‬ثس٘جبَ‬
‫آٖ ٔمساض دیف فطو ٔی آیس ‪.‬‬

‫س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ٔ ٝ‬مساض دیف فطو آضٌ‪ٔٛ‬بٖ ٔی ثبیؿز طبثز ثبقس ‪ .‬ثه‪ٛ‬ضر ٔ‪ٛ‬قىبفب٘‪ ٝ‬سط ثبیس ٌفز و‪ٔ ٝ‬مساض دیف‬
‫فطو آضٌ‪ٔٛ‬بٖ ٔی ثبیؿز سغییط٘بدصیط ) ‪( immutable‬ثبقس ‪ .‬ایٗ ُّٔت ثب ػعئیبر ثیكشطی زض فهُ ‪ٞ‬بی‬
‫ثؼسی س‪ٛ‬يیح زاز‪ ٜ‬ذ‪ٛ‬ا‪ٞ‬س قس ‪ .‬فؼال فمٍ آٖ ضا ثربَط ثؿذبضیس ‪.‬‬

‫استفبدُ اس هقبدیز پیش فزض آرگَهبى‬

‫هثبل ‪ .7.5‬ثکبرگیزی هقبدیز پیش فزض آرگَهبى‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: func_default.py‬‬

‫‪def say(message, times = 1):‬‬


‫‪print message * times‬‬

‫)'‪say('Hello‬‬
‫)‪say('World', 5‬‬

‫خزٍجی‬

‫‪$ python func_default.py‬‬


‫‪Hello‬‬
‫‪WorldWorldWorldWorldWorld‬‬

‫‪@PythonForever‬‬
‫ًحَُ ی ػولکزد ایي هثبل‬

‫سبثغ ‪ ، say‬ثطای چبح یه ضقش‪ ٝ‬ث‪ ٝ‬زفؼبر زضذ‪ٛ‬اؾشی اؾشفبز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ .‬اٌط ٔب ٔمساضی ضا ثطای سؼساز زفؼبر‬
‫چبح اضؾبَ ٘ى‪ٙ‬یٓ ‪ ،‬ثُ‪ٛ‬ض دیف فطو ‪ ،‬ضقش‪ ٝ‬س‪ٟٙ‬ب یه ثبض چبح ٔی ق‪ٛ‬ز ‪ٔ .‬ب ایٗ وبض ضا ثطای دبضأشط ‪ times‬ثب‬
‫سؼییٗ ٔمساضدیف فطو آضٌ‪ٔٛ‬ب٘ف ثط ض‪ٚ‬ی ‪ ، 1‬ا٘ؼبْ ٔی ز‪ٞ‬یٓ ‪.‬‬

‫زض ا‪ِٚ‬یٗ اؾشفبز‪ٞ‬ب اظ سبثغ ‪ٔ ، say‬ب س‪ٟٙ‬ب ضقش‪ ٝ‬ضا اضؾبَ وطزیٓ ‪ ٚ‬زض٘شیؼ‪ ، ٝ‬سبثغ س‪ٟٙ‬ب یه ثبض آٖ ضا چبح وطز ‪ .‬زض‬
‫ز‪ٔٚ‬یٗ اؾشفبز‪ ٜ‬اظ ‪ٔ ، say‬ب ‪ ٓٞ‬ضقش‪ ٓٞ ٚ ٝ‬سؼساز زفؼبر ضا ثطاثط ثب ‪ٔ 5‬كرم وطزیٓ ‪ ،‬و‪ ٝ‬زض ٘شیؼ‪ ٝ‬ثبػض ٔی‬
‫ق‪ٛ‬ز ‪ ،‬ضقش‪ٔ ٝ‬ب ‪ٔ 5‬طسج‪ ٝ‬چبح ق‪ٛ‬ز ‪.‬‬

‫هْن‬

‫س‪ٟٙ‬ب ‪ ،‬آٖ دبضأشط‪ٞ‬بیی و‪ ٝ‬زض ا٘ش‪ٟ‬بی ِیؿز دبضأشط‪ٞ‬ب ‪ٞ‬ؿش‪ٙ‬س ‪ٔ ،‬ی س‪ٛ‬ا٘‪ٙ‬س زاضای ٔمبزیط دیف فطو آضٌ‪ٔٛ‬بٖ ثبق‪ٙ‬س‬
‫‪ ،‬یؼ‪ٙ‬ی زض سطسیت دبضأشط‪ٞ‬بی اػالٖ قس‪ ٜ‬زض سؼطیف زاز‪ ، ٜ‬قٕب ٕ٘ی س‪ٛ‬ا٘یس یه دبضأشط ثب ٔمساض دیف فطو‬
‫آضٌ‪ٔٛ‬بٖ ضا لجُ اظ یه دبضأشط ثس‪ٔ ٖٚ‬مساض دیف فطو آضٌ‪ٔٛ‬بٖ ثیب‪ٚ‬ضیس ‪.‬‬

‫ایٗ ث‪ ٝ‬ایٗ زِیُ اؾز و‪ٔ ٝ‬مبزیط س‪ٛ‬ؾٍ ٔ‪ٛ‬لؼیز قبٖ )‪(position‬ث‪ ٝ‬دبضأشط‪ٞ‬ب ٔ‪ٙ‬شؿت ٔی ق‪٘ٛ‬س ‪ .‬ثطای ٔظبَ ‪،‬‬
‫)‪ٔdef func(a,b=5‬ؼشجط اؾز ‪ِٚ‬ی )‪٘ def func(a=5,b‬بٔؼشجط اؾز ‪.‬‬

‫آرگَهبى ّبی کلیذی‬

‫اٌط قٕب س‪ٛ‬اثؼی زاقش‪ ٝ‬ثبقیس و‪ ٝ‬دبضأشط‪ٞ‬بی ظیبزی ٔی دصیطز ‪ِٚ ،‬ی قٕب ٔی ذ‪ٛ‬ا‪ٞ‬یس س‪ٟٙ‬ب ثركی اظ آٖ دبضأشط‪ٞ‬ب‬
‫ضا ٔكرم و‪ٙ‬یس ‪ٔ ،‬ی س‪ٛ‬ا٘یس ث‪ ٝ‬آٖ دبضأشط‪ٞ‬ب س‪ٛ‬ؾٍ ٘بْ قبٖ ٔمساض ثس‪ٞ‬یس – ایٗ ُّٔت آضٌ‪ٔٛ‬بٖ ‪ٞ‬بی وّیسی‬
‫٘بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ٔ .‬ب اظ ٘بْ وّیسی )‪ (keyword‬زض ػ‪ٛ‬و ٔ‪ٛ‬لؼیز )‪ (position‬ثطای سؼییٗ آضٌ‪ٔٛ‬بٖ ‪ٞ‬بی سبثغ‬
‫اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یٓ ‪.‬‬

‫‪ ٚ‬ز‪ٔ ٚ‬عیز ‪ٚ‬ػ‪ٛ‬ز زاضز – یه ‪ ،‬اؾشفبز‪ ٜ‬اظ سبثغ آؾبٖ سط اؾز ‪ ،‬چطا و‪ٔ ٝ‬ب ٘یبظی ث‪ٍ٘ ٝ‬طا٘ی زضثبض‪ ٜ‬ی سطسیت‬
‫آضٌ‪ٔٛ‬بٖ ‪ٞ‬ب ٘ساضیٓ ‪ .‬ز‪ٔ ، ٚ‬ب س‪ٟٙ‬ب ث‪ ٝ‬آٖ دبضأشط‪ٞ‬بیی و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ٞ‬یٓ ٔمساض ٔی ز‪ٞ‬یٓ ‪ٔ ،‬مبزیط ٔبثمی دبضأشط‪ٞ‬ب اظ‬
‫َطیك آضٌ‪ٔٛ‬بٖ ‪ٞ‬بی دیف فطو اضؾبَ ٔی ق‪ٛ‬ز ‪.‬‬

‫استفبدُ اس آرگَهبى ّبی کلیذی‬

‫هثبل ‪ .7.6‬ثکبرگیزی آرگَهبى ّبی کلیذی‬

‫‪@PythonForever‬‬
‫‪#!/usr/bin/python‬‬
‫‪# Filename: func_key.py‬‬

‫‪def func(a, b=5, c=10):‬‬


‫‪print 'a is', a, 'and b is', b, 'and c is', c‬‬

‫)‪func(3, 7‬‬
‫)‪func(25, c=24‬‬
‫)‪func(c=50, a=100‬‬

‫خزٍجی‬

‫‪$‬‬ ‫‪python func_key.py‬‬


‫‪a‬‬ ‫‪is 3 and b is 7 and c is 10‬‬
‫‪a‬‬ ‫‪is 25 and b is 5 and c is 24‬‬
‫‪a‬‬ ‫‪is 100 and b is 5 and c is 50‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫سبثغ ‪ ، 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‬ثطای ثطٌكشٗ اظیه سبثغ اؾشفبز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ .‬یؼ‪ٙ‬ی ‪ ،‬ثطای ٌطیع اظ سبثغ ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪ٔ .‬ب ٔی‬
‫س‪ٛ‬ا٘یٓ ثه‪ٛ‬ضر اذشیبضی ٔمساضی ضا ٘یع اظ سبثغ ثطٌطزا٘یٓ ‪.‬‬

‫استفبدُ اس دستَر ‪return‬‬

‫هثبل ‪ .7.7‬ثکبرگیزی دستَر ‪return‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: func_return.py‬‬

‫‪def maximum(x, y):‬‬


‫‪if x > y:‬‬
‫‪return x‬‬
‫‪else:‬‬
‫‪return y‬‬

‫)‪print maximum(2, 3‬‬

‫خزٍجی‬

‫‪$ python func_return.py‬‬


‫‪3‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫سبثغ ‪ٔ ، 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‬‬

‫هثبل ‪ .7.8‬ثکبرگیزی ‪DocStrings‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: func_doc.py‬‬

‫‪def printMax(x, y):‬‬


‫‪'''Prints the maximum of two numbers.‬‬

‫'''‪The two values must be integers.‬‬

‫‪@PythonForever‬‬
‫‪x = int(x) # convert to integers, if possible‬‬
‫)‪y = int(y‬‬

‫‪if x > y:‬‬


‫'‪print x, 'is maximum‬‬
‫‪else:‬‬
‫'‪print y, 'is maximum‬‬

‫)‪printMax(3, 5‬‬
‫__‪print printMax.__doc‬‬

‫خزٍجی‬

‫‪$ python func_doc.py‬‬


‫‪5 is maximum‬‬
‫‪Prints the maximum of two numbers.‬‬

‫‪The two values must be integers.‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫ضقش‪ ٝ‬ایی و‪ ٝ‬زض ا‪ِٚ‬یٗ ذٍ ٔ‪ُٙ‬می سبثغ آٔس‪ ٜ‬اؾز ‪docstring ،‬آٖ سبثغ اؾز ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪DocStrings ٝ‬‬
‫‪ٞ‬ب ثط‪ٚ‬ی ٔبغ‪ٞ َٚ‬ب ‪ ٚ‬والؼ ‪ٞ‬ب ( و‪ ٝ‬زض فهُ ‪ٞ‬بی آسی زضثبض‪ ٜ‬ی آٖ ‪ٞ‬ب ذ‪ٛ‬ا‪ٞ‬یٓ آٔ‪ٛ‬ذز ) ‪ ٓٞ‬اػٕبَ ٔی ق‪٘ٛ‬س ‪.‬‬

‫ضؾٓ اؾز و‪ٞ docstring ٝ‬ب زض چ‪ٙ‬سیٗ ذٍ ٘‪ٛ‬قش‪ ٝ‬ق‪٘ٛ‬س ثُ‪ٛ‬ضیى‪ ٝ‬زض ذٍ ا‪ َٚ‬ا‪ِٚ‬یٗ وّٕ‪ ٝ‬ثب حطف ثعضي‬
‫قط‪ٚ‬ع ٔی ق‪ٛ‬ز ‪ ٚ‬آذطیٗ ذٍ ثب ٘مُ‪ ٝ‬دبیبٖ ٔی یبثس ‪ٕٞ .‬چ‪ٙ‬یٗ ز‪ٔٚ‬یٗ ذٍ یه ذبِی اؾز ‪ٞ ٚ‬طٌ‪ ٝ٘ٛ‬س‪ٛ‬يیحبر‬
‫ػعئیبر ٔ‪ٛ‬ضز ٘یبظاظ ذٍ ؾ‪ ْٛ‬قط‪ٚ‬ع ٔی ق‪ٛ‬ز ‪.‬ث‪ ٝ‬قسر ث‪ ٝ‬قٕب س‪ٛ‬نی‪ٔ ٝ‬ی ق‪ٛ‬ز و‪ ٝ‬ایٗ ضؾٓ ضا ثطای سٕبٔی‬
‫‪ٞdocstring‬بی س‪ٛ‬اثغ ثب ا‪ٕٞ‬یز سبٖ ضػبیز و‪ٙ‬یس ‪.‬‬

‫‪@PythonForever‬‬
‫قٕب ٔی س‪ٛ‬ا٘یس ث‪ ٝ‬ضقش‪ٔ ٝ‬ؿش‪ٙ‬سؾبظ سبثغ ‪ printMax‬ثب اؾشفبز‪ ٜ‬اظ ‪ٚ‬یػٌی ( __‪__doc‬ث‪ ٝ‬ز‪ٚ‬ثبض سىطاض دی زضدی‬
‫ظیطذٍ س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس ) اظ سبثغ زؾشطؾی دیسا و‪ٙ‬یس ‪ .‬زلز و‪ٙ‬یس و‪ ٝ‬دبیش‪ ٖٛ‬ث‪ٞ ٝ‬طچیعی ث‪ ٝ‬چكٓ یه قیء ٍ٘ب‪ٔ ٜ‬ی‬
‫و‪ٙ‬س ‪ ٚ‬ایٗ قبُٔ س‪ٛ‬اثغ ‪ٔ ٓٞ‬ی ق‪ٛ‬ز ‪ ( .‬زضثبض‪ ٜ‬ی اقیبء زض فهُ والؼ ‪ٞ‬ب ذ‪ٛ‬ا‪ٞ‬یٓ آٔ‪ٛ‬ذز )‪.‬‬

‫اٌط سب ث‪ ٝ‬حبَ اظ سبثغ )(‪ help‬زض دبیش‪ ٖٛ‬اؾشفبز‪ ٜ‬وطز‪ ٜ‬ثبقیس ‪ٔ ،‬ی ثبیؿز ٘ح‪ ٜٛ‬ی اؾشفبز‪ ٜ‬اظ ‪ٞ docstring‬ب ضا‬
‫زیس‪ ٜ‬ثبقیس ! وبضی و‪ ٝ‬ایٗ سبثغ ا٘ؼبْ ٔی ز‪ٞ‬س ‪ ،‬ای‪ٙ‬ؿز و‪ٚ ٝ‬یػٌی __‪ __doc‬اظ آٖ سبثغ ضا ‪ٚ‬اوكی ٔی و‪ٙ‬س ‪ٚ‬‬
‫ؾذؽ آٖ ضا ثطای قٕب زض یه لبِت ٔ‪ٙ‬ظٓ ٕ٘بیف ٔی ز‪ٞ‬س ‪ .‬قٕب ث‪ ٝ‬ایٗ ن‪ٛ‬ضر ‪ٔ ،(help(printMax‬ی س‪ٛ‬ا٘یس‬
‫ایٗ وبض ضا ثطای سبثغ سؼطیف قس‪ ٜ‬زض ایٗ ٔظبَ أشحبٖ و‪ٙ‬یس ‪.‬یبزسبٖ ثبقس ثطای ذط‪ٚ‬ع اظ ‪ ، help‬وبضاوشط ‪ q‬ضا‬
‫سبیخ و‪ٙ‬یس ‪.‬‬

‫ث‪ ٝ‬ایٗ َطیك ‪ ،‬اثعاض‪ٞ‬بی ذ‪ٛ‬زوبض ٔی س‪ٛ‬ا٘‪ٙ‬س ٔؿش‪ٙ‬سار ضا اظ ثط٘بٔ‪ ٝ‬ی قٕب اؾشرطاع و‪ٙٙ‬س ‪ .‬ث‪ٙ‬بثطایٗ ‪ ٗٔ ،‬قسیسا ث‪ٝ‬‬
‫قٕب دیك‪ٟٙ‬بز ٔی و‪ ٓٙ‬و‪ ٝ‬اظ ضقش‪ٞ ٝ‬بی ٔؿش‪ٙ‬س ؾبظ ثطای س‪ٛ‬اثغ ثب ا‪ٕٞ‬یشی و‪ٔ ٝ‬ی ٘‪ٛ‬یؿیس ‪ ،‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ .‬زؾش‪ٛ‬ض‬
‫‪pydoc‬و‪ ٝ‬زض س‪ٛ‬ظیغ دبیش‪ ٖٛ‬قٕب ‪ٚ‬ػ‪ٛ‬ز زاضز ‪ ،‬ثُ‪ٛ‬ض ٔكبث‪ٔ ٝ‬ظُ زؾش‪ٛ‬ض ‪ ()help‬اظ ‪ٞdocstring‬ب اؾشفبز‪ٔ ٜ‬ی‬
‫و‪ٙ‬س ‪.‬‬

‫خالصِ‬

‫قٕب ػ‪ٙ‬ج‪ٞ ٝ‬بی ٔرشّفی اظ س‪ٛ‬اثغ ضا ٔالحظ‪ٕٛ٘ ٝ‬زیس ‪ ،‬أب س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ٔ ٝ‬ب زض ای‪ٙ‬ؼب سٕبٔی ػ‪ٙ‬ج‪ٞ ٝ‬ب ضا د‪ٛ‬قف‬
‫٘سازیٓ ‪ .‬ث‪ٞ ٝ‬طحبَ ‪ ،‬ثیكشط آ٘چ‪ ٝ‬و‪ ٝ‬قٕب زضثبض‪ ٜ‬ی س‪ٛ‬اثغ دبیش‪ ٖٛ‬ثُ‪ٛ‬ض وّی ثب آٖ ض‪ٚ‬ث‪ ٝ‬ض‪ٔ ٚ‬ی ق‪ٛ‬یس ضا ُٔطح‬
‫وطزیٓ ‪.‬‬

‫زض فهُ ثؼسی ‪ٔ ،‬ی ذ‪ٛ‬ا‪ٞ‬یٓ ٘ح‪ ٜٛ‬ی ایؼبز ٔبغ‪ٞ َٚ‬بی دبیش‪ ٖٛ‬ضا ثیبٔ‪ٛ‬ظیٓ ‪.‬‬

‫کتبة یک ثبیت اس پبیتَى‪.‬فصل ّشتن‪.‬هبصٍل ّب‬

‫فْزست هٌذرجبت‬

‫‪ٔ 1‬بغ‪ٞ َٚ‬ب‬ ‫‪‬‬

‫‪ٔ 2‬ؼطفی‬ ‫‪‬‬

‫‪ 3‬فبیُ ‪ٞ‬بی ‪.pyc ، Byte-compiled‬‬ ‫‪‬‬

‫‪ 4‬زؾش‪ٛ‬ض‪from … import‬‬ ‫‪‬‬

‫‪ٚ 5‬یػٌی __‪ٔ __name‬بغ‪َٚ‬‬ ‫‪‬‬

‫‪ 6‬ؾبذز ٔبغ‪ٞ َٚ‬بی زِر‪ٛ‬ا‪ ٜ‬سبٖ‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫‪from … import 7‬‬ ‫‪‬‬

‫‪ 8‬سبثغ)(‪dir‬‬ ‫‪‬‬

‫‪ 9‬ذالن‪ٝ‬‬ ‫‪‬‬

‫هبصٍل ّب‬

‫هؼزفی‬

‫قٕب ٔالحظ‪ٕٛ٘ ٝ‬زیس و‪ ٝ‬ث‪ ٝ‬چ‪ ٝ‬ن‪ٛ‬ضر ٔی س‪ٛ‬ا٘یٓ زض ثط٘بٔ‪ٞ ٝ‬بی ٔبٖ ثب یىجبض سؼطیف س‪ٛ‬اثغ ‪ ،‬اظ وسـ اؾشفبز‪ ٜ‬ی‬
‫ٔؼسز ثجطیٓ ‪ .‬حبَ اٌط ثر‪ٛ‬ا‪ٞ‬یس اظ قٕبضی اظ س‪ٛ‬اثغ زض زیٍط ثط٘بٔ‪ٞ ٝ‬بیی و‪ٔ ٝ‬ی ٘‪ٛ‬یؿیس اؾشفبز‪ٔ ٜ‬ؼسز ثجطیس ‪،‬‬
‫چُ‪ٛ‬ض ؟ ‪ٕٞ‬بٖ َ‪ٛ‬ض و‪ ٝ‬حسؼ ظز‪ ٜ‬ایس ‪ ،‬دبؾد ٔبغ‪ َٚ‬اؾز ‪ .‬یه ٔبغ‪ َٚ‬ثُ‪ٛ‬ض وّی فبیّی ؾز و‪ ٝ‬قبُٔ س‪ٛ‬اثغ ‪ٚ‬‬
‫ٔشغیط‪ٞ‬بیی ؾز و‪ ٝ‬قٕب سؼطیف وطز‪ ٜ‬ایس ‪ .‬ثطای اؾشفبز‪ ٜ‬ی ٔؼسز اظ ٔبغ‪ َٚ‬زض زیٍط ثط٘بٔ‪ٞ ٝ‬ب ‪ٔ ،‬ی ثبیؿز ٘بْ‬
‫فبیُ ٔبغ‪ َٚ‬زاضای دؿ‪٘ٛ‬س ‪ .py‬ثبقس ‪.‬‬

‫یه ٔبغ‪ٔ َٚ‬ی س‪ٛ‬ا٘س ث‪ٛ‬ؾیّ‪ ٝ‬ی زیٍط ثط٘بٔ‪ٞ ٝ‬ب ثطای اؾشفبز‪ ٜ‬ی ػّٕیبسی ‪ٚ‬اضز )‪ (import‬ق‪ٛ‬ز ‪ ٚ .‬ث‪ٕٞ ٝ‬یٗ سطسیت‬
‫اؾز و‪ٔ ٝ‬ب ٔی س‪ٛ‬ا٘یٓ اظ وشبثرب٘‪ ٝ‬ی اؾشب٘ساضز دبیش‪ ٖٛ‬ث‪ ٝ‬ذ‪ٛ‬ثی اؾشفبز‪ ٜ‬و‪ٙ‬یٓ ‪ .‬زض ازأ‪٘ ٝ‬ح‪ ٜٛ‬ی اؾشفبز‪ ٜ‬اظ‬
‫ٔبغ‪ٞ َٚ‬بی وشبثرب٘‪ ٝ‬ی اؾشب٘ساضز دبیش‪ ٖٛ‬ضا ذ‪ٛ‬ا‪ٞ‬یٓ زیس ‪.‬‬

‫استفبدُ اس هبصٍل ‪sys‬‬

‫هثبل ‪ .8.1‬استفبدُ اس هبصٍل ‪sys‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: using_sys.py‬‬

‫‪import sys‬‬

‫'‪print 'The command line arguments are:‬‬


‫‪for i in sys.argv:‬‬
‫‪print i‬‬

‫'‪print '\n\nThe PYTHONPATH is', sys.path, '\n‬‬

‫‪@PythonForever‬‬
‫خزٍجی‬

‫‪$ python using_sys.py we are arguments‬‬


‫‪The command line arguments are:‬‬
‫‪using_sys.py‬‬
‫‪we‬‬
‫‪are‬‬
‫‪arguments‬‬

‫‪The PYTHONPATH is ['/home/swaroop/byte/code',‬‬


‫‪'/usr/lib/python23.zip',‬‬
‫‪'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',‬‬
‫‪'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-‬‬
‫‪dynload',‬‬
‫‪'/usr/lib/python2.3/site-packages',‬‬
‫]'‪'/usr/lib/python2.3/site-packages/gtk-2.0‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض اثشسا ‪ٔ ،‬ب ٔبغ‪ 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‬ف‪ٟ‬طؾز قس‪ ٜ‬ا٘س ‪ ،‬لطاض ثس‪ٞ‬یس ‪.‬‬

‫فبیل ّبی ‪.pyc ، Byte-compiled‬‬

‫‪ٚ‬اضز وطزٖ یه ٔبغ‪ َٚ‬سب حسی أط دط‪ٞ‬عی‪ ٝٙ‬ایی ؾز ‪ ،‬اظ ای‪ٙ‬ط‪ ٚ‬دبیش‪ ٖٛ‬سطف‪ٙ‬س‪ٞ‬بیی ضا ثطای ؾطػز ثركی ث‪ ٝ‬ایٗ‬
‫لًی‪ ٝ‬اػٕبَ ٔی و‪ٙ‬س ‪ .‬یه ضا‪ ٜ‬آٖ ایؼبز فبیُ ‪ٞ‬بی وبٔذبیُ قس‪ ٜ‬ی ثبیشی )‪ (byte-compiled‬ثب دؿ‪٘ٛ‬س ‪.pyc‬‬
‫اؾز و‪ٔ ٝ‬طث‪ ٌٛ‬ث‪ ٝ‬ثرف ٔیب٘ی ایی اؾز و‪ ٝ‬دبیش‪ ٖٛ‬ثط٘بٔ‪ٞ ٝ‬ب ضا ث‪ ٝ‬آٖ سجسیُ ٔی و‪ٙ‬س ‪( ،‬ثرف ٔؼطفی دبیش‪ٖٛ‬‬
‫چٍ‪ ٝ٘ٛ‬وبض ٔی و‪ٙ‬س ؟ ضا ث‪ ٝ‬یبز ثیب‪ٚ‬ضیس) ‪ ٚ .‬ایٗ ػُٕ ثبػض ؾطػز ثركی ٔی ق‪ٛ‬ز چطا و‪ ٝ‬ثب ایٗ وبض ثركی اظ‬
‫فطآی‪ٙ‬س ٔ‪ٛ‬ضز ٘یبظ زض ‪ٚ‬اضزوطزٖ ٔبغ‪ َٚ‬ا٘ؼبْ ٔی ق‪ٛ‬ز ‪ٕٞ .‬چ‪ٙ‬یٗ ایٗ فبیُ ‪ٞ‬بی وبٔذبیُ قس‪ ٜ‬ی ثبیشی ٔؿشمُ اظ‬
‫‪ٞplatfrom‬ؿش‪ٙ‬س ‪ .‬ذت او‪ٔ ٖٛٙ‬ی زا٘یس و‪ ٝ‬فبیُ ‪ٞ‬بی ‪ .pyc‬ثطای چ‪ٙٔ ٝ‬ظ‪ٛ‬ضی اؾشفبز‪ٔ ٜ‬ی ق‪٘ٛ‬س ‪.‬‬

‫‪@PythonForever‬‬
‫دستَر ‪from … import‬‬

‫اٌط ثر‪ٛ‬ا‪ٞ‬یس ٔؿشمیٕب ٔشغیط ‪ argv‬زض ثط٘بٔ‪ ٝ‬سبٖ ‪ٚ‬اضز و‪ٙ‬یس ( ثطای دط‪ٞ‬یع اظ ایٗ و‪ ٝ‬زض ‪ٞ‬ط ٘‪ٛ‬ثز ‪ sys.‬ضا ثطای آٖ‬
‫سبیخ و‪ٙ‬یس) ‪ٔ ،‬ی س‪ٛ‬ا٘یس اظ زؾش‪ٛ‬ض ‪from sys import argv‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ .‬اٌط ٔی ذ‪ٛ‬ا‪ٞ‬یس سٕبٔی ٘بْ ‪ٞ‬بی ث‪ٝ‬‬
‫وبض ضفش‪ ٝ‬زض ٔبغ‪ sys َٚ‬ضا ‪ٚ‬اضز و‪ٙ‬یس ‪ٔ ،‬ی س‪ٛ‬ا٘یس اظ زؾش‪ٛ‬ض * ‪ from sys import‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ .‬ایٗ ض‪ٚ‬ـ‬
‫ثطای ‪ٞ‬ط ٔبغ‪ِٚ‬ی وبض ٔی و‪ٙ‬س ‪ .‬ثُ‪ٛ‬ض وّی ‪ ،‬اظ زؾش‪ٛ‬ض ‪from … import‬دط‪ٞ‬یع و‪ٙ‬یس ‪ ٚ‬ث‪ ٝ‬ػبی آٖ اظ زؾش‪ٛ‬ض‬
‫‪ import‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ ،‬چطا و‪ ٝ‬ث‪ ٝ‬ایٗ َطیك ‪ ٓٞ‬ثط٘بٔ‪ ٝ‬سبٖ ذ‪ٛ‬ا٘بیی ثبالیی دیسا ٔی و‪ٙ‬س ‪ ٓٞ ٚ‬اظ ثطذ‪ٛ‬ضز ‪ ٚ‬سًبز‬
‫٘بْ ‪ٞ‬ب اػش‪ٙ‬بة ٔی ق‪ٛ‬ز ‪.‬‬

‫ٍیضگی __‪ __name‬هبصٍل‬

‫‪ٞ‬ط ٔبغ‪ َٚ‬زاضای یه ٘بْ اؾز ‪ ٚ‬اظ ای‪ٙ‬ط‪ ٚ‬زؾش‪ٛ‬ضاسی و‪ ٝ‬زض یه ٔبغ‪ٞ َٚ‬ؿش‪ٙ‬س ٔی س‪ٛ‬ا٘‪ٙ‬س اظ َطیك آٖ ‪٘ ،‬بْ ٔبغ‪َٚ‬‬
‫قبٖ ضا دیسا و‪ٙٙ‬س ‪ .‬ایٗ ُّٔت ٔره‪ٛ‬نب زض قطایُی ذبل ثبػض ضاحشی وبض ٔی ق‪ٛ‬ز ‪ٕٞ .‬یٗ َ‪ٛ‬ض و‪ ٝ‬لجال ‪ٓٞ‬‬
‫‪ .‬حبَ اٌط‬ ‫اقبض‪ ٜ‬قس ‪ٚ ،‬لشی یه ٔبغ‪ َٚ‬ثطای ا‪ِٚ‬یٗ ثبض ‪ٚ‬اضز ٔی ق‪ٛ‬ز ‪ ،‬ثّ‪ٛ‬ن انّی آٖ ٔبغ‪ َٚ‬اػطا ٔی ق‪ٛ‬ز‬
‫ثر‪ٛ‬ا‪ٞ‬یٓ و‪ ٝ‬ایٗ ثّ‪ٛ‬ن س‪ٟٙ‬ب ‪ٚ‬لشی و‪ ٝ‬ثط٘بٔ‪ ٝ‬س‪ٛ‬ؾٍ ذ‪ٛ‬زـ ث‪ ٝ‬وبض ٌطفش‪ٔ ٝ‬ی ق‪ٛ‬ز ‪ ٝ٘ ٚ‬ظٔب٘ی و‪ ٝ‬س‪ٛ‬ؾٍ زیٍط‬
‫ٔبغ‪ٞ َٚ‬ب ‪ٚ‬اضز ٔی ق‪ٛ‬ز ‪ ،‬اػطا ق‪ٛ‬ز ‪ ،‬چ‪ ٝ‬وبضی ثبیس ا٘ؼبْ ثس‪ٞ‬یٓ ؟ ایٗ وبض ٔی س‪ٛ‬ا٘س ثب اؾشفبز‪ ٜ‬اظ ‪ٚ‬یػٌی‬
‫__‪__name‬اظ ٔبغ‪ َٚ‬ثسؾز آیس ‪.‬‬

‫استفبدُ اس ٍیضگی __‪ __name‬هبصٍل‬

‫هثبل ‪ .8.2‬ثِ کبرگیزی ٍیضگی __‪ __name‬هبصٍل‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: using_name.py‬‬

‫‪if __name__ == '__main__':‬‬


‫'‪print 'This program is being run by itself‬‬
‫‪else:‬‬
‫'‪print 'I am being imported from another module‬‬

‫خزٍجی‬

‫‪@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‬اؾز ‪ٔ .‬ظبَ ظیط ایٗ ُّٔت ضا‬
‫ض‪ٚ‬قٗ ذ‪ٛ‬ا‪ٞ‬س وطز ‪.‬‬

‫ایجبد هبصٍل ّبی دلخَاُ‬

‫هثبل ‪ .8.3‬چگًَگی ایجبد هبصٍل ّبی دلخَاُ‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: mymodule.py‬‬

‫‪def sayhi():‬‬
‫'‪print 'Hi, this is mymodule speaking.‬‬

‫'‪version = '0.1‬‬

‫‪# End of mymodule.py‬‬

‫‪@PythonForever‬‬
‫ٔظبَ ثبال یه ٔبغ‪ ٕٝ٘ٛ٘ َٚ‬ث‪ٛ‬ز ‪ٕٞ .‬بُ٘‪ٛ‬ض و‪ٔ ٝ‬الحظ‪ٔ ٝ‬ی ٕ٘بئیس ‪ ،‬ایٗ ٔبغ‪ٞ َٚ‬یچ چیع ذبل ثره‪ٛ‬نی ثطای‬
‫ٔمبیؿ‪ ٝ‬ثب ثط٘بٔ‪ٞ ٝ‬بی دبیش‪ٔ ٖٛ‬ؼٕ‪ِٛ‬ی ٘ساضز ‪ٔ .‬ب زض ازأ‪ ٝ‬ذ‪ٛ‬ا‪ٞ‬یٓ آٔ‪ٛ‬ذز و‪ ٝ‬ث‪ ٝ‬چ‪ ٝ‬ن‪ٛ‬ضر ایٗ ٔبغ‪ َٚ‬ضا زض زیٍط‬
‫ثط٘بٔ‪ٞ ٝ‬بی ٔبٖ ‪ٚ‬اضز و‪ٙ‬یٓ ‪.‬‬

‫ث‪ ٝ‬یبز ثیب‪ٚ‬ضیس و‪ ٝ‬ایٗ ٔبغ‪ٔ َٚ‬ی ثبیؿز زض زایطوش‪ٛ‬ضی یىؿب٘ی اظ ثط٘بٔ‪ ٝ‬ایی و‪ ٝ‬زض آٖ ‪ٔ import‬ی ق‪ٛ‬ز لطاض‬
‫ٌطفش‪ ٝ‬ثبقس ‪ ٚ ،‬یب ٔی ثبیؿز ایٗ ٔبغ‪ َٚ‬زض یىی اظ زایطوش‪ٛ‬ضی ‪ٞ‬بی ِیؿز قس‪ ٜ‬زض ‪ sys.path‬لطاض ثٍیطز ‪.‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: mymodule_demo.py‬‬

‫‪import mymodule‬‬

‫)(‪mymodule.sayhi‬‬
‫‪print 'Version', mymodule.version‬‬

‫خزٍجی‬

‫‪$ python mymodule_demo.py‬‬


‫‪Hi, this is mymodule speaking.‬‬
‫‪Version 0.1‬‬

‫ًحَُ ی ػوبکزد ایي هثبل‬

‫زلز و‪ٙ‬یس و‪ٔ ٝ‬ب اظ ‪ٕٞ‬بٖ ػالٔز ٘مُ‪ ٝ‬ثطای زؾشطؾی ث‪ ٝ‬اػًبی ٔبغ‪ َٚ‬اؾشفبز‪ ٜ‬وطزیٓ ‪ .‬دبیش‪ ٖٛ‬ث‪ ٝ‬ذ‪ٛ‬ثی اظ ‪ٕٞ‬بٖ‬
‫ػالٔز اؾشفبز‪ٔ ٜ‬ؼسز ٔی ثطز سب '‪'Pythonic‬ضا ث‪ٕ٘ ٝ‬بیف ثٍصاضز ‪ ،‬ثُ‪ٛ‬ضی و‪ٔ ٝ‬ب ٔؼج‪ٛ‬ض٘جبقیٓ ض‪ٚ‬ـ ‪ٞ‬بی‬
‫ػسیسی ضا ثطای ا٘ؼبْ وبض‪ٞ‬ب یبز ثٍیطیٓ ‪.‬‬

‫‪@PythonForever‬‬
‫‪from … import‬‬

‫زض ایٗ ػب ٔظبِی ‪ٞ‬ؿز و‪٘ ٝ‬ح‪ from … import ٛ‬ضا ث‪ ٝ‬وبض ٔی ٌیطز ‪.‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: mymodule_demo2.py‬‬

‫‪from mymodule import sayhi, version‬‬


‫‪# Alternative:‬‬
‫* ‪# from mymodule import‬‬

‫)(‪sayhi‬‬
‫‪print 'Version', version‬‬

‫ذط‪ٚ‬ػی ثط٘بٔ‪ ٝ‬ی ‪ٕٞ mymodule_demo2.py‬ب٘‪ٙ‬س ذط‪ٚ‬ػی ثط٘بٔ‪ ٝ‬ی ‪ mymodule_demo.py‬اؾز ‪.‬‬

‫تبثغ )(‪dir‬‬

‫قٕب ٔی س‪ٛ‬ا٘یس اظ سبثغ س‪ٛ‬وبض ‪dir‬ثطای ف‪ٟ‬طؾز ٌطفشٗ ‪ٞidentifier‬بیی و‪ ٝ‬زض یه ٔبغ‪ َٚ‬سؼطیف قس‪ ٜ‬ا٘س ‪،‬‬
‫اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ٞ . identifer‬ب قبُٔ س‪ٛ‬اثغ ‪ ،‬والؼ ‪ٞ‬ب ‪ٔ ٚ‬شغیط‪ٞ‬بی سؼطیف قس‪ ٜ‬زض ٔبغ‪ٞ َٚ‬ؿش‪ٙ‬س ‪.‬‬

‫‪ٍٙٞ‬بٔی و‪٘ ٝ‬بْ ٔبغ‪ِٚ‬ی ضا ث‪ ٝ‬سبثغ س‪ٛ‬وبض ‪ٔ dir‬ی ز‪ٞ‬یس ‪ ،‬ایٗ سبثغ ِیؿشی اظ ٘بْ ‪ٞ‬بی سؼطیف قس‪ ٜ‬زض آٖ ٔبغ‪ َٚ‬ضا‬
‫ثطٔی ٌطزا٘س ‪ٍٙٞ .‬بٔی و‪ ٝ‬آضٌ‪ٔٛ‬ب٘ی ضا ث‪ ٝ‬ایٗ سبثغ ٘فطؾشیس ‪ ،‬آٖ ِیؿشی اظ ٘بْ ‪ٞ‬بی سؼطیف قس‪ ٜ‬زض ٔبغ‪ َٚ‬فؼّی ضا‬
‫ثط ٔی ٌطزا٘س ‪.‬‬

‫استفبدُ اس تبثغ ‪dir‬‬

‫هثبل ‪ .8.4‬ثکبرگیزی تبثغ ‪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‬زؾشطؾی دیسا و‪ٙ‬یس – ثُ‪ٛ‬ضی و‪ٌٛ ٝ‬یب ‪ٞ‬یچ ‪ٚ‬لز‬
‫دیف اظ ایٗ ‪ٚ‬ػ‪ٛ‬ز ٘ساقش‪ ٝ‬اؾز ‪.‬‬

‫خالصِ‬

‫ٔبغ‪ٞ َٚ‬ب ٔفیس ‪ٞ‬ؿش‪ٙ‬س ‪ ،‬چطا و‪ ٝ‬آٖ ‪ٞ‬ب ؾط‪ٚ‬یؽ ‪ٞ‬ب ‪ ٚ‬ػّٕیبسی ضا اضائ‪ٔ ٝ‬ی ز‪ٙٞ‬س ‪ ،‬و‪ٔ ٝ‬ی س‪ٛ‬ا٘یس زضزیٍط ثط٘بٔ‪ٞ ٝ‬ب‬
‫اظ آٖ ‪ٞ‬ب اؾشفبز‪ ٜ‬ی ٔؼسز ثجطیس ‪ .‬وشبثرب٘‪ ٝ‬ی اؾشب٘ساضز دبیش‪ ٖٛ‬و‪ٕٞ ٝ‬طا‪ ٜ‬ثب دبیش‪ ٖٛ‬اضائ‪ ٝ‬قس‪ ٜ‬اؾز ‪ٔ ،‬ظبِی اظ‬
‫ٔؼٕ‪ٛ‬ػ‪ ٝ‬ایی اظ ایٗ ٔبغ‪ٞ َٚ‬بؾز ‪ٔ .‬ب ث‪ ٝ‬ذ‪ٛ‬ثی ٔالحظ‪ٕٛ٘ ٝ‬زیٓ و‪ ٝ‬چُ‪ٛ‬ض اظ ایٗ ٔبغ‪ٞ َٚ‬ب اؾشفبز‪ ٜ‬و‪ٙ‬یٓ ‪ ٚ‬چُ‪ٛ‬ض‬
‫ٔبغ‪ٞ َٚ‬بی ذ‪ٛ‬زٔبٖ ضا ایؼبز و‪ٙ‬یٓ ‪.‬‬

‫زض فهُ ثؼسی ‪ ،‬زضثبض‪ ٜ‬ی ثطذی زیٍط اظ ػ‪ٙ‬ج‪ٞ ٝ‬بی ػبِت س‪ٛ‬ػ‪ ٝ‬دبیش‪ ٖٛ‬و‪ ٝ‬ؾبذشٕبٖ زاز‪ٞ ٜ‬ب ٘بْ زاضز ‪ ،‬ذ‪ٛ‬ا‪ٞ‬یٓ‬
‫آٔ‪ٛ‬ذز ‪.‬‬

‫کتبة یک ثبیت اس پبیتَى‪.‬فصل ًْن‪.‬سبختوبى ّبی دادُ‬

‫فْزست هٌذرجبت‬

‫‪ٔ 1‬ؼطفی‬ ‫‪‬‬

‫‪ِ 2‬یؿز‬ ‫‪‬‬

‫‪ 3‬سؼطیف ٔرشهطی اظ اقیبء ‪ ٚ‬والؼ‬ ‫‪‬‬

‫‪ 4‬چ‪ٙ‬سسبیی ثب نفط ‪ ٚ‬یب یه آیشٓ‬ ‫‪‬‬

‫‪ 5‬وبضثطز چ‪ٙ‬سسبیی ‪ٞ‬ب زض زؾش‪ٛ‬ض‪print‬‬ ‫‪‬‬

‫‪ 6‬زیىك‪ٙ‬طی‬ ‫‪‬‬

‫‪ 7‬ز٘جبِ‪ٞ ٝ‬ب‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫‪ٔ 8‬طػغ ‪ٞ‬ب‬ ‫‪‬‬

‫‪ 9‬وٕی ثیكشط زضثبض‪ ٜ‬ی ضقش‪ٞ ٝ‬ب‬ ‫‪‬‬

‫‪ 10‬ذالن‪ٝ‬‬ ‫‪‬‬

‫هؼزفی‬

‫ؾبذشٕبٖ ‪ٞ‬بی زاز‪ ٜ‬ثُ‪ٛ‬ض وّی ػجبضسؿز اظ ؾبذشبض‪ٞ‬بیی و‪ٔ ٝ‬ی س‪ٛ‬ا٘س زاز‪ٞ ٜ‬بیی ضا ثب ‪ٕٞ‬سیٍط ‪ ٚ‬زض و‪ٙ‬بض ‪ٍٝ٘ ٓٞ‬‬
‫زاضز ‪ .‬ثؼجبضسی زیٍط ‪ ،‬ثطای شذیط‪ ٜ‬ی ٔؼٕ‪ٛ‬ػ‪ ٝ‬ایی اظ زاز‪ٞ ٜ‬بی ‪ٚ‬اثؿش‪ ٝ‬ث‪ ٝ‬وبض ٔی ض‪٘ٚ‬س ‪.‬‬

‫ؾ‪ ٝ‬ؾبذشٕبٖ زاز‪ ٜ‬ی س‪ٛ‬وبض زض دبیش‪ٞ ٖٛ‬ؿز ‪ ،‬و‪ ٝ‬ػجبضس‪ٙ‬س اظ ِیؿز )‪ ،(list‬چ‪ٙ‬سسبیی )‪ ٚ (tuple‬زیىك‪ٙ‬طی‬
‫‪ٔ (dictionary) .‬ب زض ازأ‪٘ ٝ‬ح‪ ٜٛ‬ی اؾشفبز‪ ٜ‬اظ ‪ٞ‬ط یه اظ آٖ ‪ٞ‬ب ‪ ٚ‬ای‪ٙ‬ى‪ ٝ‬چُ‪ٛ‬ض ظ٘سٌی ضا ثطای ٔب ضاحز سط ٔی‬
‫ؾبظ٘س ضا ذ‪ٛ‬ا‪ٞ‬یٓ زیس ‪.‬‬

‫لیست‬

‫یه ِیؿز ‪ ،‬ؾبذشٕبٖ زاز‪ ٜ‬ایی ؾز و‪ٔ ٝ‬ؼٕ‪ٛ‬ػ‪ ٝ‬ایی سطسیجی اظ آیشٓ ‪ٞ‬ب ضا ٍ٘‪ٔ ٝ‬ی زاضز ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪ٔ ٝ‬ی‬
‫س‪ٛ‬ا٘یس یه ز٘جبِ‪ ٝ‬اظ آیشٓ ‪ٞ‬ب ضا زض یه ِیؿز شذیط‪ ٜ‬و‪ٙ‬یس ‪ .‬ایٗ ُّٔت ٔی س‪ٛ‬ا٘س ث‪ ٝ‬ضاحشی ثب زض ٘ظط ٌطفشٗ یه‬
‫ِیؿز ذطیس سه‪ٛ‬ض ق‪ٛ‬ز ‪ ،‬چطا و‪ ٝ‬آٖ ػب ‪ِ ٓٞ‬یؿشی اظ آیشٓ ‪ٞ‬ب ضا ثطای ذطیسٖ زاضیٓ ‪ ،‬ثب ایٗ سفب‪ٚ‬ر و‪ ٝ‬احشٕبال زض‬
‫ِیؿز ذطیس ‪ٞ‬ط آیشٓ ضا زض ذُی ٔؼعا زاضیٓ ‪ ،‬زض حبِی و‪ ٝ‬زض دبیش‪ ، ٖٛ‬ثیٗ آیشٓ ‪ٞ‬ب ‪ٚ‬یطٌ‪ٔ َٛ‬ی ٌصاضیٓ ‪.‬‬

‫ِیؿز آیشٓ ‪ٞ‬ب ٔی ثبیؿز زض یه ػفز ثطاوز لطاض ثٍیط٘س ‪ ،‬سب دبیش‪ ٖٛ‬ثف‪ٕٟ‬س و‪ ٝ‬قٕب یه ِیؿز ضا ٔكرم وطز‪ٜ‬‬
‫ایس ‪ .‬یىجبض و‪ِ ٝ‬یؿشی ضا سؼطیف ٔی و‪ٙ‬یس ‪ٔ ،‬ی س‪ٛ‬ا٘یس آیشٓ ‪ٞ‬بیی ضا زض ِیؿز ايبف‪ ، ٝ‬حصف ‪ ٚ‬یب ػؿشؼ‪ٕ٘ ٛ‬بئیس ‪،‬‬
‫‪ ٚ‬چ‪ٔ ٖٛ‬ی س‪ٛ‬ا٘یٓ آیشٓ ‪ٞ‬بیی ضا ث‪ِ ٝ‬یؿز ايبف‪ ٚ ٝ‬یب حصف و‪ٙ‬یٓ ‪ ،‬اظ ای‪ٙ‬ط‪ٔ ٚ‬ی ٌ‪ٛ‬ئیٓ و‪ِ ٝ‬یؿز یه ٘‪ٛ‬ع زاز‪ ٜ‬ی‬
‫سغییط دصیط )‪ (mutable data type‬اؾز ‪ ،‬یؼ‪ٙ‬ی ایٗ ٘‪ٛ‬ع ٔی س‪ٛ‬ا٘س زؾشىبضی ق‪ٛ‬ز ‪.‬‬

‫تؼزیف هختصزی اس اشیبء ٍ کالط‬

‫‪ٞ‬ط چ‪ٙ‬س زضازأ‪ ٝ‬ی وشبة ث‪ ٝ‬ثحض وّی زضثبض‪ ٜ‬ی والؼ ‪ٞ‬ب ‪ ٚ‬اقیبء ‪ٞ‬ب ٔی دطزاظیٓ ‪ ،‬أب س‪ٛ‬يیح ٔرشهطی زض ای‪ٙ‬ؼب‬
‫ثطای زضن ث‪ٟ‬شط ِیؿز ٔ‪ٙ‬بؾت ‪ٞ‬ؿز ‪ ٚ ،‬ثحض وّی ایٗ ٔ‪ٛ‬ي‪ٛ‬ع ضا زض فهُ ذ‪ٛ‬زـ ذ‪ٛ‬ا‪ٞ‬یٓ زاقز ‪.‬‬

‫یه ِیؿز ٔظبِی اظ اؾشفبز‪ ٜ‬اظ اقیبء ‪ ٚ‬والؼ اؾز ‪ٚ .‬لشی و‪ ٝ‬قٕب ٔشغیط ‪ i‬ضا ثىبض ٔی ثطیس ‪ ٚ‬یه ٔمساضی ضا ث‪ٝ‬‬
‫آٖ ٘ؿجز ٔی ز‪ٞ‬یس ( فطو و‪ٙ‬یس و‪ ٝ‬ػسز نحیح ‪ 5‬ضا ث‪ ٝ‬آٖ ٘ؿجز زاز‪ ٜ‬ایس) ‪ٔ ،‬ی س‪ٛ‬ا٘یس ث‪ ٝ‬ایٗ ن‪ٛ‬ضر فىط‬

‫‪@PythonForever‬‬
‫و‪ٙ‬یس و‪ ٝ‬یه قیء (ٕ٘‪ )ٝ٘ٛ‬ث‪٘ ٝ‬بْ ‪ i‬اظ والؼ (٘‪ٛ‬ع ‪) int‬ایؼبز ٕ٘‪ٛ‬ز‪ ٜ‬ایس ‪ .‬ثطای زضن ث‪ٟ‬شط ایٗ ُّٔت ذط‪ٚ‬ػی‬
‫)‪help(int‬ضا ٔالحظ‪ٕ٘ ٝ‬بئیس ‪.‬‬

‫یه والؼ ٔی س‪ٛ‬ا٘س زاضای هتذّبیی ثبقس ‪ .‬ثسیٗ ٔؼ‪ٙ‬ی و‪ ، ٝ‬س‪ٛ‬اثؼی و‪ ٝ‬سؼطیف قس‪ ٜ‬ا٘س ‪ ،‬س‪ٟٙ‬ب زض ٔ‪ٛ‬ضز آٖ والؼ‬
‫ث‪ ٝ‬وبض ٌطفش‪ٔ ٝ‬ی ق‪٘ٛ‬س ‪ٔ ٚ .‬ی س‪ٛ‬ا٘یس اظػّٕیبر آٖ لؿٕز س‪ٟٙ‬ب ‪ٍٙٞ‬بٔی و‪ ٝ‬یه قیء اظ آٖ والؼ زاقش‪ ٝ‬ثبقیس ‪،‬‬
‫اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ .‬ثطای ٔظبَ ‪ ،‬دبیش‪ٔ ٖٛ‬شس ‪ append‬ضا ثطای والؼ ‪ list‬اضائ‪ٕٛ٘ ٝ‬ز‪ ٜ‬اؾز و‪ ٝ‬ث‪ ٝ‬قٕب اػبظ‪ٔ ٜ‬ی ز‪ٞ‬س‬
‫آیشٕی ضا زض ا٘ش‪ٟ‬بی ِیؿز ايبف‪ ٝ‬و‪ٙ‬یس ‪ .‬ثطای ٔظبَ ‪ ،‬زؾش‪ٛ‬ض )'‪ ،mylist.append('an item‬آٖ ضقش‪ ٝ‬ضا ث‪ٝ‬‬
‫ا٘ش‪ٟ‬بی ِیؿز ‪mylist‬ايبف‪ٔ ٝ‬ی و‪ٙ‬س ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ٝ‬اظ ػالٔز ٘مُ‪ ٝ‬ثطای زؾشطؾی ث‪ٔ ٝ‬شس‪ٞ‬بی یه قیء‬
‫اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یس ‪.‬‬

‫یه والؼ ٔی س‪ٛ‬ا٘س زاضای فیلذّبیی ثبقس و‪ ٝ‬چیعی ثیف اظ یه ٔشغیط ٘یؿش‪ٙ‬س ‪ِٚ‬ی ٔشغیط‪ٞ‬بیی ‪ٞ‬ؿش‪ٙ‬س و‪ ٝ‬س‪ٟٙ‬ب‬
‫زض ٔ‪ٛ‬ضز والؼ ث‪ ٝ‬وبض ٌطفش‪ٔ ٝ‬ی ق‪٘ٛ‬س ‪ٔ .‬ی س‪ٛ‬ا٘یس اظ ایٗ ٔشغیط‪ٞ‬ب‪٘/‬بْ ‪ٞ‬ب ‪ٍٙٞ‬بٔی و‪ ٝ‬قیء ایی اظ آٖ والؼ زاضیس‬
‫‪ ،‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ .‬فیّس‪ٞ‬ب ‪ٕٞ ٓٞ‬چ‪ٙ‬یٗ اظ َطیك ػالٔز ٘مُ‪ ٝ‬زضزؾشطؼ لطاضٔی ٌیط٘س ‪ ،‬ثطای ٔظبَ ‪،‬‬
‫‪mylist.field .‬‬

‫استفبدُ اس لیست ّب‬

‫هثبل ‪ .9.1‬ثکبرگیزی لیست ّب‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: using_list.py‬‬

‫‪# This is my shopping list‬‬


‫]'‪shoplist = ['apple', 'mango', 'carrot', 'banana‬‬

‫'‪print 'I have', len(shoplist), 'items to purchase.‬‬

‫‪print 'These items are:', # Notice the comma at end of‬‬


‫‪the line‬‬
‫‪for item in shoplist:‬‬
‫‪print item,‬‬

‫'‪print '\nI also have to buy rice.‬‬


‫)'‪shoplist.append('rice‬‬
‫‪print 'My shopping list is now', shoplist‬‬

‫‪@PythonForever‬‬
print 'I will sort my list now'
shoplist.sort()
print 'Sorted shopping list is', shoplist

print 'The first item I will buy is', shoplist[0]


olditem = shoplist[0]
del shoplist[0]
print 'I bought the', olditem
print 'My shopping list is now', 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‬‬
‫استفبدُ اس چٌذتبیی ّب‬

‫ ثکبرگیزی چٌذتبیی ّب‬.9.2 ‫هثبل‬

#!/usr/bin/python
# Filename: using_tuple.py

zoo = ('wolf', 'elephant', 'penguin')


print 'Number of animals in the zoo is', len(zoo)

new_zoo = ('monkey', 'dolphin', zoo)


print 'Number of animals in the new zoo is',
len(new_zoo)
print 'All animals in new zoo are', new_zoo
print 'Animals brought from old zoo are', new_zoo[2]
print 'Last animal brought from old zoo is',
new_zoo[2][2]

‫خزٍجی‬

$ 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,‬كرم و‪ٙ‬یس ‪.‬‬

‫ًکتِ ایی ثزای ثزًبهِ ًَیسبى ‪Perl‬‬

‫یه ِیؿز و‪ ٝ‬زض زاذّف یه ِیؿز زیٍط‪ٞ‬ؿز ‪ٛٞ ،‬یز ِیؿز ث‪ٛ‬زٖ ذ‪ٛ‬زـ ضا اظ زؾز ٕ٘ی ز‪ٞ‬س ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی‬
‫و‪ِ ٝ‬یؿز ‪ٞ‬ب زض دبیش‪ٕٞ ٖٛ‬چ‪ِ ٖٛ‬یؿز ‪ٞ‬بی دطَ ٔؿُح )‪٘(flattened‬یؿش‪ٙ‬س ‪ٕٞ ٚ ،‬یٗ َ‪ٛ‬ض زض ٔ‪ٛ‬ضز چ‪ٙ‬سسبیی‬
‫‪ٞ‬بیی و‪ ٝ‬زض زاذُ قبٖ چ‪ٙ‬سسبیی ‪ٞ‬بی زیٍطی ؾز ‪ ،‬یب یه چ‪ٙ‬سسبیی و‪ ٝ‬زض زاذّف ِیؿز اؾز ‪ ،‬یب یه ِیؿشی‬
‫و‪ ٝ‬زض زاذّف چ‪ٙ‬سسبیی ؾز ‪ ٚ‬غیط‪ . ٜ‬سب آ٘ؼب و‪ ٝ‬ث‪ ٝ‬دبیش‪ٔ ٖٛ‬طسجٍ اؾز ‪ ،‬آ٘‪ٟ‬ب س‪ٟٙ‬ب اقیبء ایی ‪ٞ‬ؿش‪ٙ‬س و‪ ٝ‬ثب‬
‫اؾشفبز‪ ٜ‬اظ اقیبء ی زیٍط شذیط‪ٔ ٜ‬ی ق‪٘ٛ‬س ‪ .‬سٕبْ ُّٔت ‪ٕٞ‬یٗ ‪ٞ‬ؿز ‪.‬‬

‫کبرثزد چٌذتبیی ّب در دستَر ‪print‬‬

‫یىی اظ ثیكشطیٗ اؾشفبز‪ ٜ‬ی چ‪ٙ‬سسبیی ‪ٞ‬ب زض زؾش‪ٛ‬ض ‪ print‬اؾز ‪ .‬زض ای‪ٙ‬ؼب ٔظبِی آ‪ٚ‬ضز‪ ٜ‬قس‪ ٜ‬اؾز ‪.‬‬

‫‪@PythonForever‬‬
‫هثبل ‪ .9.3‬خزٍجی ثب استفبدُ اس چٌذتبیی ّب‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: print_tuple.py‬‬

‫‪age = 22‬‬
‫'‪name = 'Swaroop‬‬

‫)‪print '%s is %d years old' % (name, age‬‬


‫‪print 'Why is %s playing with that python?' % name‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زؾش‪ٛ‬ض ‪ٔ ، print‬ی س‪ٛ‬ا٘س ضقش‪ ٝ‬ایی ضا ثٍیطز و‪ ٝ‬ایٗ ضقش‪ ٝ‬اظ ٔكره‪ٞ ٝ‬بیی ٔؼیٗ و‪ ٝ‬ػالٔز ‪ %‬ث‪ ٝ‬ز٘جبَ قبٖ‬
‫‪ٞ‬ؿز ‪ ٚ ،‬ثس٘جبَ آٖ یه چ‪ٙ‬سسبیی اظ آیشٓ ‪ٞ‬بیی و‪ ٝ‬ثب آٖ ٔكره‪ٞ ٝ‬ب سُبثك زاض٘س سكىیُ قس‪ ٜ‬ثبقس‪ .‬ایٗ‬
‫ٔكره‪ٞ ٝ‬ب ثطای لبِت ث‪ٙ‬سی ذط‪ٚ‬ػی زض یه ض‪ٚ‬ـ ٔؼیٗ ث‪ ٝ‬وبض ٌطفش‪ٔ ٝ‬ی ق‪٘ٛ‬س ‪ .‬ایٗ ٔكره‪ٞ ٝ‬ب ٔی س‪ٛ‬ا٘س‬
‫ٔظُ ‪ %s‬ثطای ضقش‪ٞ ٝ‬ب ‪ %d ٚ‬ثطای اػساز نحیح ثبقس ‪ .‬چ‪ٙ‬سسبیی و‪ ٝ‬ثس٘جبَ آٖ ‪ٞ‬ب ٔی آیس ‪ٔ ،‬ی ثبیؿز زاضای‬
‫آیشٓ ‪ٞ‬بیی ٔطسجٍ ثب ایٗ ٔكره‪ٞ ٝ‬ب ‪ ٚ‬زض یه سطسیت یىؿبٖ ثب آٖ ‪ٞ‬ب ثبقس ‪.‬‬

‫ض‪ٚ‬قٗ ‪ٞ‬ؿز و‪ ٝ‬ا‪ِٚ‬یٗ وبضثطز آٖ ‪ ،‬زض ػبیی ؾز و‪ٔ ٝ‬ب اظ ا‪ِٚ‬یٗ ‪ %s‬اؾشفبز‪ ٜ‬وطزیٓ ‪ ٚ‬ایٗ ث‪ٔ ٝ‬شغیط ‪ name‬ایی‬
‫ٔطث‪ٞ ٌٛ‬ؿز و‪ ٝ‬ا‪ِٚ‬یٗ آیشٓ زض چ‪ٙ‬سسبیی اؾز ‪ ٚ‬ز‪ٔٚ‬یٗ ٔكره‪ٔ %d ٝ‬ی ثبقس و‪ٔ ٝ‬طث‪ ٌٛ‬ث‪ age ٝ‬ایی ؾز و‪ٝ‬‬
‫ز‪ٔٚ‬یٗ آیشٓ زض چ‪ٙ‬سسبیی ؾز ‪.‬‬

‫وبضی و‪ ٝ‬دبیش‪ ٖٛ‬زض ای‪ٙ‬ؼب ا٘ؼبْ ٔی ز‪ٞ‬س ‪ ،‬ای‪ٙ‬ؿز و‪ٞ ٝ‬ط آیشٓ زض چ‪ٙ‬سسبیی ضا ث‪ ٝ‬ضقش‪ ٝ‬ایی سجسیُ ٔی و‪ٙ‬س ‪ ٚ‬آٖ‬
‫ٔمساض ضقش‪ ٝ‬ضا ثب ٔىبٖ ٔطث‪ َٝٛ‬اـ ػبیٍعیٗ ٔی و‪ٙ‬س ‪ .‬ث‪ٙ‬بثطایٗ ‪ %s‬ثب ٔمساض ٔشغیط ‪ name‬ػبیٍعیٗ ٔی ق‪ٛ‬ز ‪ٚ‬‬
‫اِی آذط ‪.‬‬

‫ای‪ ٍٝ٘ٛٙ‬اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض ‪ٛ٘ ، print‬قشٗ ذط‪ٚ‬ػی ضا ث‪ ٝ‬قسر آؾبٖ ٔی ؾبظز ‪ ٚ‬اظ زؾشىبضی ثیكشطضقش‪ ٝ‬و‪ ٝ‬ثطای‬
‫ضؾیسٖ ث‪ٕٞ ٝ‬چیٗ وبضی ا٘ؼبْ ٔی ق‪ٛ‬ز ػّ‪ٌٛ‬یطی ٔی و‪ٙ‬س‪ٕٞ .‬چیٗ اظ اؾشفبز‪ ٜ‬اظ وبٔب ضا و‪ ٝ‬سبو‪ ٖٛٙ‬اؾشفبز‪ٔ ٜ‬ی‬
‫وطزیٓ ػّ‪ٌٛ‬یطی ٔی و‪ٙ‬س ‪.‬‬

‫‪@PythonForever‬‬
‫ثیكشط ا‪ٚ‬لبر ‪ ،‬قٕب وبفیؿز و‪ ٝ‬اظ ٔكره‪ ، %s ٝ‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ ٚ‬ث‪ ٝ‬دبیش‪ ٖٛ‬اػبظ‪ ٜ‬ثس‪ٞ‬یس و‪ ٝ‬ث‪ ٝ‬ػبی قٕب ٔطالت‬
‫ثبقس ‪ .‬ایٗ لًی‪ ٝ‬حشی ثطای اػساز ‪ ٓٞ‬وبض ٔی و‪ٙ‬س ‪ٞ .‬طچ‪ٙ‬س ‪ ،‬قٕب ٕٔىٗ اؾز ثر‪ٛ‬ا‪ٞ‬یس ٔكره‪ٞ ٝ‬بی زضؾشی ضا‬
‫لطاض ثس‪ٞ‬یس و‪ ٝ‬زض ای‪ٙ‬ه‪ٛ‬ضر یه ٔطحّ‪ ٝ‬ی چه وطزٖ ضا ث‪ ٝ‬ثط٘بٔ‪ ٝ‬سبٖ ايبف‪ٔ ٝ‬ی ق‪ٛ‬ز ‪.‬‬

‫زض زؾش‪ٛ‬ض ز‪ٔ ، print ْٚ‬ب اظ یه ٔكره‪ٔ ٝ‬ؼطز و‪ ٝ‬ث‪ ٝ‬ز٘جبَ ػالٔز ‪ %‬آٔس‪ ٚ ٜ‬ث‪ ٝ‬ز٘جبِف یه آیشٓ س‪ٟٙ‬ب ‪ٞ‬ؿز‬
‫اؾشفبز‪ ٜ‬وطزیٓ – زض ایٗ حبِز زیٍطػفز ػالٔز دطا٘شع ٘یبٔس‪ ٜ‬اؾز ‪ ٚ‬ایٗ حبِز فمٍ ثطای ٔ‪ٛ‬اضزی و‪ ٝ‬یه‬
‫ٔكره‪ ٝ‬س‪ٟٙ‬ب زض ضقش‪ ٝ‬اؾز ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪.‬‬

‫دیکشٌزی‬

‫یه زیىك‪ٙ‬طی ٔظُ یه وشبثچ‪– ٝ‬آزضؼ اؾز ‪ .‬و‪ ٝ‬قٕب ٔی س‪ٛ‬ا٘یس آزضؼ یب ػعئیبر سٕبؼ یه قرم ضا ثب‬
‫زا٘ؿشٗ فمٍ ٘بٔف دیسا ٕ٘بئیس ‪ .‬ثسیٗ ٔؼ‪ٙ‬ی و‪ٔ ، ٝ‬ب کلیذّبیی (٘بْ) ضا ث‪ ٝ‬هقبدیزی(ػعئیبر )ٔطسجٍ ‪ٚ ٚ‬اثؿش‪ٝ‬‬
‫ٔی ؾبظیٓ ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ٝ‬وّیس‪ٞ‬ب ٔی ثبیؿز یى‪ ٝ‬ثبق‪ٙ‬س ‪ ،‬چطاو‪ ٝ‬زض غیطای‪ٙ‬ه‪ٛ‬ضر ثطای ٔظبَ قٕب ثب زاقشٗ ز‪ٚ‬‬
‫قرم ثب ٘بْ ‪ٞ‬بی یىؿبٖ ٕ٘ی س‪ٛ‬ا٘یس اَالػبر زضؾشی ضا دیسا و‪ٙ‬یس ‪.‬‬

‫س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ٝ‬س‪ٟٙ‬ب ٔی س‪ٛ‬ا٘یس اظ اقیبء سغییط٘بدصیط ثطای وّیس‪ٞ‬بی یه زیىك‪ٙ‬طی اؾشفبز‪ ٜ‬و‪ٙ‬یس (ٔظُ ضقش‪ٞ ٝ‬ب) ‪،‬‬
‫‪ِٚ‬ی ٔی س‪ٛ‬ا٘یس ‪ ٓٞ‬اظ اقیبء سغییطدصیط ‪ ٓٞٚ‬اظ اقیبء سغییط٘بدصیطثطای ٔمبزیط زیىك‪ٙ‬طی اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ .‬ایٗ ُّٔت‬
‫ثُ‪ٛ‬ض وّی ث‪ ٝ‬ایٗ ن‪ٛ‬ضر سفؿیطٔی ق‪ٛ‬ز و‪ٔ ٝ‬ی ثبیؿز س‪ٟٙ‬ب اظ اقیبء ی ؾبز‪ ٜ‬ثطای وّیس‪ٞ‬ب اؾشفبز‪ ٜ‬ق‪ٛ‬ز ‪.‬‬

‫ػفز ‪ٞ‬بی وّیس ‪ٔ ٚ‬مساض زض یه زیىك‪ٙ‬طی ثب اؾشفبز‪ ٜ‬اظ ٘كبٖ }‪d = {key1: value1 , key2 : value2‬‬
‫ٔؼیٗ ٔی ق‪٘ٛ‬س ‪ .‬زلز و‪ٙ‬یس و‪ ٝ‬ػفز ‪ٞ‬بی وّیس‪ٔ/‬مساض ثب ػالٔز ‪ :‬اظ ‪ ٓٞ‬ػسا ٔی ق‪٘ٛ‬س ‪ ٚ‬ذ‪ٛ‬ز ػفز ‪ٞ‬ب ثب ػالٔز‬
‫‪ ,‬اظ ‪ ٓٞ‬ػسا ٔی ق‪٘ٛ‬س ‪ٍٕٞ ٚ‬ی زض زاذُ یه ػفز ثطاوز ?> لطاض ٔی ٌیط٘س ‪.‬‬

‫زیىك‪ٙ‬طی ‪ٞ‬بیی و‪ ٝ‬اؾشفبز‪ ٜ‬ذ‪ٛ‬ا‪ٞ‬یس وطز ‪ٞ ٕٝ٘ٛ٘ ،‬بیی‪/‬اقیبیی اظ والؼ ‪ٞ dict‬ؿش‪ٙ‬س ‪.‬‬

‫استفبدُ اس دیکشٌزی‬

‫هثبل ‪ .9.4‬ثکبر گیزی دیکشٌزی‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: using_dict.py‬‬

‫‪# 'ab' is short for 'a'ddress'b'ook‬‬

‫‪@PythonForever‬‬
'Swaroop' : ab = {
'[email protected]',
'Larry' : '[email protected]',
'Matsumoto' : '[email protected]',
'Spammer' : '[email protected]'
}

print "Swaroop's address is %s" % ab['Swaroop']

# Adding a key/value pair


ab['Guido'] = '[email protected]'

# Deleting a key/value pair


del ab['Spammer']

print '\nThere are %d contacts in the address-book\n' %


len(ab)

for name, address in ab.items():


print 'Contact %s at %s' % (name, address)

if 'Guido' in ab: # OR ab.has_key('Guido')


print "\nGuido's address is %s" % ab['Guido']

‫خزٍجی‬

$ python using_dict.py
Swaroop's address is [email protected]

There are 4 contacts in the address-book

Contact Swaroop at [email protected]


Contact Matsumoto at [email protected]
Contact Larry at [email protected]
Contact Guido at [email protected]

Guido'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) ٖ‫ وطز‬ٝ‫ ػٍّٕطسى‬ٚ ٓ‫ی‬ٙ‫ زؾشطؾی دیسا و‬ِٝ‫ یه آیشٓ ذبل زض ز٘جب‬ٝ‫ٔؿشمیٕب ث‬
. ‫ ضا‬ِٝ‫ی یه ثرف اظ ز٘جب‬ٙ‫ یؼ‬، ٓ‫ضی‬ٚ‫ ضا ثسؾز آ‬ٝ‫ اظ ضقش‬ٝ‫ا٘یٓ یه سى‬ٛ‫ثش‬

‫استفبدُ اس دًجبلِ ّب‬

‫ ثکبرگیزی دًجبلِ ّب‬.9.5 ‫هثبل‬

#!/usr/bin/python
# Filename: seq.py

shoplist = ['apple', 'mango', 'carrot', 'banana']

# Indexing or 'Subscription' operation


print 'Item 0 is', shoplist[0]
print 'Item 1 is', shoplist[1]
print 'Item 2 is', shoplist[2]
print 'Item 3 is', shoplist[3]
print 'Item -1 is', shoplist[-1]
print 'Item -2 is', shoplist[-2]

# 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
‫خزٍجی‬

‫‪$ python seq.py‬‬


‫‪Item 0 is apple‬‬
‫‪Item 1 is mango‬‬
‫‪Item 2 is carrot‬‬
‫‪Item 3 is banana‬‬
‫‪Item -1 is banana‬‬
‫‪Item -2 is carrot‬‬
‫]'‪Item 1 to 3 is ['mango', 'carrot‬‬
‫]'‪Item 2 to end is ['carrot', 'banana‬‬
‫]'‪Item 1 to -1 is ['mango', 'carrot‬‬
‫‪Item start to end is ['apple', 'mango', 'carrot',‬‬
‫]'‪'banana‬‬
‫‪characters 1 to 3 is wa‬‬
‫‪characters 2 to end is aroop‬‬
‫‪characters 1 to -1 is waroo‬‬
‫‪characters start to end is swaroop‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض اثشسا ‪ ،‬چٍ‪ٍ٘ٛ‬ی اؾشفبز‪ ٜ‬اظ ای‪ٙ‬سوؽ‪ ،‬ثطای ٌطفشٗ سه آیشٓ ‪ٞ‬بیی اظ ز٘جبِ‪ ٝ‬ضا ٔالحظ‪ٔ ٝ‬ی و‪ٙ‬یٓ ‪ .‬و‪ ٝ‬ث‪ ٝ‬ایٗ‬
‫ُّٔت ‪ٕٞ‬چ‪ٙ‬یٗ ثؼ‪ٛٙ‬اٖ ػٍّٕط ‪٘subscription‬یع اقبض‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ٞ .‬ط ٌب‪ ٜ‬و‪ ٝ‬قٕب یه ػسز زض زاذُ ػفز‬
‫ثطاوز ثطای یه ز٘جبِ‪ٔ ٝ‬كرم ٔی و‪ٙ‬یس ‪ ،‬دبیش‪ ٖٛ‬آیشٓ ٔطث‪ ٌٛ‬ث‪ ٝ‬آٖ ٔ‪ٛ‬لؼیز زض ز٘جبِ‪ ٝ‬ضا ثطای قٕب ثسؾز ٔی‬
‫آ‪ٚ‬ضز ‪ .‬یبزسبٖ ثبقس و‪ ٝ‬دبیش‪ ٖٛ‬ػسز قٕبضـ ضا اظ ‪0‬قط‪ٚ‬ع ٔی و‪ٙ‬س ‪ .‬ث‪ٙ‬بثطایٗ ‪ ،shoplit[0] ،‬ا‪ِٚ‬یٗ آیشٓ ‪ٚ‬‬
‫]‪ ،shoplist[3‬چ‪ٟ‬بضٔیٗ آیشٓ زضز٘جبِ‪ ٝ‬ی ‪ shoplist‬ضا ثسؾز ٔی آ‪ٚ‬ضز ‪.‬‬

‫‪ٕٞ‬چ‪ٙ‬یٗ ای‪ٙ‬سوؽ ٔی س‪ٛ‬ا٘س یه ػسز ٔ‪ٙ‬فی ثبقس ‪ ،‬و‪ ٝ‬زض ایٗ ٔ‪ٛ‬ضز ‪ٛٔ ،‬لؼیشف اظ آذط ز٘جبِ‪ٔ ٝ‬حبؾج‪ٔ ٝ‬ی ق‪ٛ‬ز ‪.‬‬
‫ث‪ٙ‬بثطایٗ ]‪ shoplist[-1‬ث‪ ٝ‬آذطیٗ آیشٓ ‪ shoplist[-2] ٚ‬ث‪ ٝ‬ز‪ٔٚ‬یٗ آیشٓ اظ آذط‪ ،‬زض ز٘جبِ‪ ٝ‬اقبض‪ٔ ٜ‬ی و‪ٙ‬س ‪.‬‬

‫ػٍّٕط ‪ ، slicing‬ثب ٘بْ ز٘جبِ‪ ٚ ٝ‬ثس٘جبَ آٖ یه ػفز اظ اػساز اذشیبضی و‪ ٝ‬ثب ػالٔز ‪ :‬زض‪ ٖٚ‬ػفز ثطاوز اظ ‪ٓٞ‬‬
‫ػسا قس‪ ٜ‬ا٘س ‪ٔ ،‬كرم ٔی ق‪ٛ‬ز ‪ .‬زلز و‪ٙ‬یس و‪ ٝ‬ایٗ ُّٔت ثؿیبض ظیبز قجی‪ ٝ‬ث‪ ٝ‬ػٍّٕط ای‪ٙ‬سوؽ ٌصاضی ‪ٞ‬ؿز و‪ٝ‬‬
‫سب ثسیٗ ػب اظ آٖ اؾشفبز‪ٔ ٜ‬ی وطزیٓ ‪ ٚ .‬یبزسبٖ ثبقس و‪ ٝ‬اػساز اذشیبضی ‪ٞ‬ؿش‪ٙ‬س ‪ ،‬أب ػالٔز ‪ :‬ایٗ َ‪ٛ‬ض ٘یؿز ‪.‬‬

‫‪@PythonForever‬‬
‫ا‪ِٚ‬یٗ ػسز ( دیف اظ ػالٔز ‪ ) :‬زض ػٍّٕط ‪ slicing‬ث‪ٛٔ ٝ‬لؼیشی و‪ ٝ‬سى‪ ٝ‬وطزٖ اظ آ٘ؼب قط‪ٚ‬ع ٔی ق‪ٛ‬ز ‪ ،‬اقبض‪ٔ ٜ‬ی‬
‫و‪ٙ‬س ‪ ٚ‬ػسز ز‪ ( ْٚ‬ثؼس اظ ػالٔز ) ‪ٔ :‬كرم ٔی و‪ٙ‬س و‪ ٝ‬زض وؼب سى‪ ٝ‬وطزٖ دبیبٖ یبثس ‪ .‬اٌط ا‪ِٚ‬یٗ ػسز ٔكرم‬
‫ٍ٘طزز ‪ ،‬دبیش‪ ٖٛ‬اظ اثشسای ز٘جبِ‪ ٝ‬قط‪ٚ‬ع ذ‪ٛ‬ا‪ٞ‬س وطز ‪ ٚ‬اٌط ز‪ٔٚ‬یٗ ػسز ٔكرم ٘ك‪ٛ‬ز ‪ ،‬زض ا٘ش‪ٟ‬بی ز٘جبِ‪ ٝ‬دبیبٖ ٔی‬
‫یبثس ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ، slice ٝ‬اظ ٔ‪ٛ‬لؼیز قط‪ٚ‬ع سب دیف اظ ٔ‪ٛ‬لؼیز دبیبٖ ضا ثط ٔی ٌطزا٘س ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪ ٝ‬زض سى‪ٝ‬‬
‫ی ز٘جبِ‪ٛٔ ، ٝ‬لؼیز قط‪ٚ‬ع ضا قبُٔ ٔی ق‪ٛ‬ز ‪ِٚ‬ی ٔ‪ٛ‬لؼیز دبیبٖ ضا قبُٔ ٕ٘ی ق‪ٛ‬ز ‪.‬‬

‫ث‪ٙ‬بثطایٗ ‪ ،‬زؾش‪ٛ‬ض ]‪ shoplist[1:3‬یه سى‪ ٝ‬اظ ز٘جبِ‪ ٝ‬ضا و‪ ٝ‬قط‪ٚ‬ػف اظ ٔ‪ٛ‬لؼیز ‪ 1‬اؾز ‪( ،‬و‪ ٝ‬زاضای ٔىبٖ ‪2‬‬
‫‪ٞ‬ؿز ) ‪ِٚ‬ی دبیب٘ف زض ٔىبٖ ‪ 3‬اؾز ضا ثط ٔی ٌطزا٘س ‪ ،‬دؽ ث‪ٙ‬بثطایٗ یه سى‪ ٝ‬اظ ز‪ ٚ‬آیشٓ ضا ثطٔی ٌطزا٘س ‪ٚ‬‬
‫زؾش‪ٛ‬ض ]‪shoplist[:‬یه وذی اظ سٕبْ ز٘جبِ‪ ٝ‬ضا ثط ٔی ٌطزا٘س ‪.‬‬

‫سطویت ‪ٞ‬بی ٌ‪٘ٛ‬بٌ‪٘ٛ‬ی اظ سى‪ ٝ‬وطزٖ ضقش‪ ٝ‬ضا ثب اسىب ث‪ ٝ‬سؼبّٔی ث‪ٛ‬زٖ ٔفؿطدبیش‪ ٖٛ‬أشحبٖ و‪ٙ‬یس ‪ ،‬چطا و‪٘ ٝ‬شیؼ‪ ٝ‬ی‬
‫زؾش‪ٛ‬ضار ‪ٚ‬اضز‪ ٜ‬قس‪ ٜ‬ضا ف‪ٛ‬ضا زض ذٍ فطٔبٖ ٔالحظ‪ ٝ‬ذ‪ٛ‬ا‪ٞ‬یس وطز ‪ .‬یه ٘ىش‪ ٝ‬ثب اضظـ زض ٔ‪ٛ‬ضز ز٘جبِ‪ٞ ٝ‬ب ای‪ٙ‬ؿز و‪ٝ‬‬
‫ث‪ ٝ‬یه ض‪ٚ‬ـ یىؿبٖ ٔی س‪ٛ‬ا٘یس ث‪ ٝ‬سٕبٔی چ‪ٙ‬سسبیی ‪ٞ‬ب ‪ِ ،‬یؿز ‪ٞ‬ب ‪ ٚ‬ضقش‪ٞ ٝ‬ب زؾشطؾی یبثیس ‪.‬‬

‫هزجغ ّب‬

‫رجَع ٔی‬ ‫‪ٚ‬لشی قٕب یه قیء ضا ایؼبز ٔی و‪ٙ‬یس ‪ ٚ‬یه ٔشغیط ضا ث‪ ٝ‬آٖ ٘ؿجز ٔی ز‪ٞ‬یس ‪ٔ ،‬شغیط فمٍ ث‪ ٝ‬قیء‬
‫و‪ٙ‬س ‪٘ ٚ‬كبٖ ز‪ٙٞ‬س‪ ٜ‬ی ذ‪ٛ‬ز قیء ٘یؿز ! و‪ ٝ‬ایٗ یؼ‪ٙ‬ی ‪٘ ،‬بْ ٔشغیط ث‪ ٝ‬ثركی اظ حبفظ‪ ٝ‬ی وبٔذی‪ٛ‬سط قٕب و‪ ٝ‬آٖ‬
‫قیء زض آ٘ؼب شذیط‪ ٜ‬قس‪ ٜ‬اؾز اقبض‪ٔ ٜ‬ی و‪ٙ‬س ‪ ٚ .‬ثؼ‪ٛٙ‬اٖ ‪ bind‬قسٖ یه ٘بْ ث‪ ٝ‬یه قیء اظ آٖ ٘بْ ثطز‪ٔ ٜ‬ی‬
‫ق‪ٛ‬ز ‪.‬‬

‫زضوُ ‪ ،‬الظْ ٘یؿز و‪ٍ٘ ٝ‬طاٖ ایٗ ٔ‪ٛ‬ي‪ٛ‬ع ثبقیس ‪ ،‬أب سبطیطار ظطیفی اظ ٔطػغ ‪ٞ‬ب )‪ٞ (references‬ؿز و‪ٔ ٝ‬ی‬
‫ثبیؿز اظ آٖ آٌب‪ ٜ‬ثبقیس ‪ ،‬ایٗ ُّٔت ثب ٔظبَ ظیط ض‪ٚ‬قٗ ٔی ق‪ٛ‬ز ‪.‬‬

‫اشیبء ٍ هزجغ ّب‬

‫هثبل ‪ .9.6‬اشیبء ٍ هزجغ ّب‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: reference.py‬‬

‫'‪print 'Simple Assignment‬‬


‫]'‪shoplist = ['apple', 'mango', 'carrot', 'banana‬‬

‫‪@PythonForever‬‬
mylist = shoplist # mylist is just another name
pointing to the same object!

del shoplist[0] # I purchased the first item, so I


remove it from the list

print 'shoplist is', shoplist


print 'mylist is', mylist
# notice that both shoplist and mylist both print the
same list without
# the 'apple' confirming that they point to the same
object

print 'Copy by making a full slice'


mylist = shoplist[:] # make a copy by doing a full
slice
del mylist[0] # remove first item

print 'shoplist is', shoplist


print 'mylist is', mylist
# notice that now the two lists are different

‫خزٍجی‬

$ 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
‫ٔشغیطی ضا ث‪٘ ٝ‬بْ زیٍطی ٘ؿجز ثس‪ٞ‬یس ‪ٞ ،‬ط ز‪ٚ‬ی آ٘‪ٟ‬ب ث‪ ٝ‬یه قیء یىؿبٖ اقبض‪ ٜ‬ذ‪ٛ‬ا‪ٙٞ‬س وطز ‪ ٚ‬ایٗ زض ن‪ٛ‬ضسیى‪ٝ‬‬
‫ٔطالت ٘جبقیس ‪ٔ ،‬ی س‪ٛ‬ا٘س ٔ‪ٙ‬ؼط ث‪ ٝ‬ث‪ٛ‬ػ‪ٛ‬ز آٔسٖ ا٘‪ٛ‬اع ٔكىالسی ثك‪ٛ‬ز ‪.‬‬

‫ًکتِ ایی در هَرد ثزًبهِ ًَیسبى ‪Perl‬‬

‫ث‪ ٝ‬ذبَط ثؿذبضیس و‪ ٝ‬زؾش‪ٛ‬ض ا٘شؿبة ثطای ِیؿز ‪ٞ‬ب یه وذی اظ آٖ ‪ٞ‬ب ضا ایؼبز ٕ٘ی و‪ٙ‬س ‪ .‬قٕب ٔی ثبیؿز اظ‬
‫ػٍّٕط سى‪ ٝ‬ؾبظی ثطای ایؼبز یه وذی اظ ز٘جبِ‪ ٝ‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪.‬‬

‫کوی ثیشتز درثبرُ ی رشتِ ّب‬

‫ٔب زضثبض‪ ٜ‬ی ػطئیبر ضقش‪ٞ ٝ‬ب ثحض وطزیٓ ‪ .‬چ‪ ٝ‬چیع ثیكشط زیٍطی ثطای زا٘ؿشٗ ‪ٞ‬ؿز ؟ ذت ‪ ،‬آیب ٔی زا٘یس و‪ٝ‬‬
‫ضقش‪ٞ ٝ‬ب ‪ ٓٞ‬اقیبیی ‪ٞ‬ؿش‪ٙ‬س ‪ ٚ‬زض ٘شیؼ‪ٔ ٝ‬شس‪ٞ‬بیی زاض٘س و‪ ٝ‬ثط‪ٚ‬ی ثرف ‪ٞ‬بیی اظ ضقش‪. ٝ‬‬

‫‪ٞ str‬ؿش‪ٙ‬س ‪ .‬ثطذی اظ‬ ‫ضقش‪ٞ ٝ‬بیی و‪ ٝ‬قٕب زض ثط٘بٔ‪ٞ ٝ‬بی سبٖ اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یس ‪ٍٕٞ ،‬ی اقیبیی اظ والؼ‬
‫ٔشس‪ٞ‬بی ٔفیس ایٗ والؼ زض ٔظبَ ثؼسی ٘كبٖ زاز‪ٔ ٜ‬ی ق‪٘ٛ‬س ‪ .‬ثطای ِیؿز وبّٔی اظ ٔشس‪ٞ‬بی آٖ ذط‪ٚ‬ػی زؾش‪ٛ‬ض‬
‫)‪help(str‬ضا ٔالحظ‪ٕ٘ ٝ‬بئیس ‪.‬‬

‫هتذّبی رشتِ‬

‫هثبل ‪ .9.7‬هتذّبی رشتِ‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: str_methods.py‬‬

‫‪name = 'Swaroop' # This is a string object‬‬

‫‪if name.startswith('Swa'):‬‬
‫'"‪print 'Yes, the string starts with "Swa‬‬

‫‪if 'a' in name:‬‬


‫'"‪print 'Yes, it contains the string "a‬‬

‫‪if name.find('war') != -1:‬‬

‫‪@PythonForever‬‬
‫'"‪print 'Yes, it contains the string "war‬‬

‫'_*_' = ‪delimiter‬‬
‫]'‪mylist = ['Brazil', 'Russia', 'India', 'China‬‬
‫)‪print delimiter.join(mylist‬‬

‫خزٍجی‬

‫‪$ python str_methods.py‬‬


‫"‪Yes, the string starts with "Swa‬‬
‫"‪Yes, it contains the string "a‬‬
‫"‪Yes, it contains the string "war‬‬
‫‪Brazil_*_Russia_*_India_*_China‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زضایٗ ٔظبَ ‪ ،‬زض ػُٕ ثؿیبضی اظ ٔشس‪ٞ‬بی ضقش‪ ٝ‬ضا ٔی ثی‪ٙ‬یٓ ‪ٔ .‬شس ‪startswith‬ثطای ٔكرم وطزٖ ای‪ٙ‬ى‪ ٝ‬آیب‬
‫ضقش‪ ٝ‬ی انّی ثب ضقش‪ ٝ‬ی زاز‪ ٜ‬قس‪ ٜ‬آغبظ قس‪ ٜ‬اؾز یب ذیط ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪ .‬ػٍّٕط ‪ ، in‬ثطای ثطای ثطضؾی ای‪ٙ‬ى‪ٝ‬‬
‫ضقش‪ ٝ‬زاز‪ ٜ‬قس‪ ٜ‬ثركی اظ ضقش‪ ٝ‬انّی ٔی ثبقس یب ذیط ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪.‬‬

‫ٔشس ‪ find‬ثطای دیساوطزٖ ٔ‪ٛ‬لؼیز ضقش‪ ٝ‬زاز‪ ٜ‬قس‪ ٜ‬زض ضقش‪ ٝ‬انّی ثىبض ٔی ض‪ٚ‬ز ‪ ٚ ،‬اٌط ٔ‪ٛ‬فك ث‪ ٝ‬دیساوطزٖ ایٗ‬
‫ظیط ضقش‪ ٝ‬زض ضقش‪ ٝ‬انّی ٘ك‪ٛ‬ز ‪ٔ ،‬مساض ‪ 1 -‬ضا ثط ٔی ٌطزا٘س ‪ٕٞ .‬چ‪ٙ‬یٗ والؼ ‪ str‬زاضای یه ٔشس ثؿیبض ػبِی ث‪ٝ‬‬
‫٘بْ ‪ٔ join‬ی ثبقس و‪ ٝ‬ثطای الحبق آیشٓ ‪ٞ‬بی یه ؾبذشٕبٖ زاز‪ ٜ‬ی ز٘جبِ‪ ٝ‬ایی ث‪ ٝ‬یىسیٍط ثب اسىب ث‪ ٝ‬ضقش‪ ٝ‬ایی و‪ٝ‬‬
‫٘مف ػساو‪ٙٙ‬س‪ ٜ‬ی ٔبثیٗ ‪ٞ‬ط آیشٓ ضا زض ز٘جبِ‪ ٝ‬زاضز ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪ ٚ ،‬زض ٘شیؼ‪ ٝ‬یه ضقش‪ ٝ‬ی ثعضي سطی ضا و‪ ٝ‬اظ‬
‫آٖ س‪ِٛ‬یس ٔی ق‪ٛ‬ز ضا ثطٔی ٌطزا٘س ‪.‬‬

‫خالصِ‬

‫ٔب ػعئیبر ا٘‪ٛ‬اع ٔرشّفی اظ ؾبذشبض‪ٞ‬بی زاز‪ ٜ‬ایی س‪ٛ‬وبض ضا زض دبیش‪ ٖٛ‬ثطضؾی وطزیٓ ‪ .‬ایٗ ؾبذشٕبٖ ‪ٞ‬بی زاز‪ ٜ‬ثطای‬
‫٘‪ٛ‬قشٗ ثط٘بٔ‪ٞ ٝ‬بیی ثب ؾبیع‪ٞ‬بی ٔؼم‪ٙٔ َٛ‬بؾت ا٘س ‪.‬‬

‫او‪ ٖٛٙ‬سب ثسیٗ ػب ‪ٔ ،‬ب ثب ثؿیبضی اظ ان‪ َٛ‬دبی‪ ٝ‬ایی دبیش‪ ٖٛ‬آق‪ٙ‬ب قس‪ ٜ‬ایٓ ‪ ،‬زض فهُ ثؼسی ذ‪ٛ‬ا‪ٞ‬یٓ زیس و‪ ٝ‬چُ‪ٛ‬ض‬
‫یه ثط٘بٔ‪ ٝ‬ی ‪ٚ‬الؼی ث‪ ٝ‬ظثبٖ دبیش‪ ٖٛ‬ضا َطاحی ‪ ٚ‬دیبز‪ ٜ‬ؾبظی ٔی ٕ٘بئیٓ ‪.‬‬

‫‪@PythonForever‬‬
‫کتبة یک ثبیت اس پبیتَى‪.‬فصل دّن‪.‬حل هسبئل‪ًَ.‬شتي ثزًبهِ ایی ثِ سثبى پبیتَى‬

‫فْزست هٌذرجبت‬

‫‪ 1‬فهُ ز‪. ٓٞ‬حُ ٔؿبئُ ‪ٛ٘ .‬قشٗ ثط٘بٔ‪ ٝ‬ایی ث‪ ٝ‬ظثبٖ دبیش‪ٖٛ‬‬ ‫‪‬‬

‫‪ٔ 2‬ؿئّ‪ٝ‬‬ ‫‪‬‬

‫‪ 3‬حُ ٔؿئّ‪ٝ‬‬ ‫‪‬‬

‫‪٘ 4‬ؿر‪ ٝ‬ی ز‪ ْٚ‬ثط٘بٔ‪ٝ‬‬ ‫‪‬‬

‫‪٘ 5‬ؿر‪ ٝ‬ی ؾ‪ ْٛ‬ثط٘بٔ‪ٝ‬‬ ‫‪‬‬

‫‪٘ 6‬ؿر‪ ٝ‬ی چ‪ٟ‬بضْ‬ ‫‪‬‬

‫‪ 7‬اػٕبَ ث‪ٟ‬ج‪ٛ‬ز ‪ٚ‬انالح ثیكشط زض ثط٘بٔ‪ٝ‬‬ ‫‪‬‬

‫‪ 8‬فطآی‪ٙ‬س س‪ٛ‬ؾؼ‪ ٝ‬ی ٘طْ افعاض‬ ‫‪‬‬

‫‪ 9‬ذالن‪ٝ‬‬ ‫‪‬‬

‫فصل دّن ‪.‬حل هسبئل ‪ًَ .‬شتي ثزًبهِ ایی ثِ سثبى پبیتَى‬

‫ٔب ثرف ‪ٞ‬بی ٔش‪ٛٙ‬ػی اظ ظثبٖ ثط٘بٔ‪ٛ٘ ٝ‬یؿی دبیش‪ ٖٛ‬ضا سكطیح وطزیٓ ‪ ٚ‬او‪ٔ ٖٛٙ‬ی ذ‪ٛ‬ا‪ٞ‬یٓ ثب َطاحی ‪ٛ٘ ٚ‬قشٗ یه‬
‫ثط٘بٔ‪ ٝ‬و‪ ٝ‬لطاض اؾز وبضٔفیسی ضا ثطای ٔب ا٘ؼبْ ثس‪ٞ‬س ‪ ،‬ثجی‪ٙ‬یٓ و‪ ٝ‬چُ‪ٛ‬ض ٔی س‪ٛ‬ا٘یٓ سٕبٔی ایٗ ثرف ‪ٞ‬ب ضا‬
‫ثسضؾشی زضو‪ٙ‬بض ‪ ٓٞ‬لطاض ز‪ٞ‬یٓ ‪.‬‬

‫هسئلِ‬

‫ٔؿئّ‪ ٝ‬ی ٔ‪ٛ‬ضز ٘ظط ٔب ػجبضسؿز اظ ‪ٔ ٗٔ " :‬ی ذ‪ٛ‬ا‪ ٓٞ‬ثط٘بٔ‪ ٝ‬ایی ثطای دكشیجبٖ ٌیطی اظ سٕبٔی فبیُ ‪ٞ‬بی‬
‫يط‪ٚ‬ضی اْ ایؼبز و‪." ٓٙ‬‬

‫‪ٞ‬طچ‪ٙ‬س ‪ ،‬ایٗ ٔؿئّ‪ ٝ‬ی ؾبز‪ ٜ‬ایی ؾز ‪ِٚ ،‬ی اَالػبر ٔ‪ٛ‬ضز ٘یبظ ضا ثطای قط‪ٚ‬ع حُ ٔؿئّ‪ ٝ‬زض اذشیبض ٔب لطاض ٕ٘ی‬
‫ز‪ٞ‬س ‪ .‬زض ‪ٚ‬الغ تجشیِ ٍ تحلیل ثیكشطی ٔ‪ٛ‬ضز ٘یبظ اؾز ‪ .‬ثطای ٔظبَ ‪ ،‬ث‪ ٝ‬چ‪ ٝ‬ن‪ٛ‬ضر ثبیس ٔكرم و‪ٙ‬یٓ و‪ ٝ‬وساْ‬
‫فبیُ ‪ٞ‬ب قبُٔ دكشیجبٖ ٌیطی ٔی ق‪٘ٛ‬س ؟ ایٗ فبیُ ‪ٞ‬ب ث‪ ٝ‬چ‪ ٝ‬ن‪ٛ‬ضر زض فبیُ دكشیجبٖ شذیط‪ٔ ٜ‬ی ق‪٘ٛ‬س ؟ ‪ ٚ‬فبیُ‬
‫دكشیجبٖ س‪ٟ‬ی‪ ٝ‬قس‪ ٜ‬زض وؼب شذیط‪ٔ ٜ‬ی ق‪ٛ‬ز ؟‬

‫‪@PythonForever‬‬
‫ثؼس اظ سؼعی‪ ٚ ٝ‬سحّیُ ٔ‪ٙ‬بؾت ٔؿئّ‪ ، ٝ‬ثط٘بٔ‪ٔ ٝ‬بٖ ضا طزاحی ٔی و‪ٙ‬یٓ ‪ٔ .‬ب ِیؿشی اظ ٘ح‪ ٜٛ‬ی ػّٕىطز ثط٘بٔ‪ٝ‬‬
‫ایؼبز ٔی و‪ٙ‬یٓ ‪ .‬زض ایٗ ٔ‪ٛ‬ضز ‪ِ ٗٔ ،‬یؿز ظیط ضا ثه‪ٛ‬ضسی و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ ٓٞ‬ثط٘بٔ‪ ٝ‬وبض و‪ٙ‬س ‪ ،‬ایؼبز وطز‪ ٜ‬اْ ‪ .‬اٌط قٕب‬
‫َطاحی ثط٘بٔ‪ ٝ‬ضا ثط ػ‪ٟ‬س‪ ٜ‬ثٍیطیس ‪ٕٔ ،‬ىٗ اؾز و‪ ٝ‬ثب چ‪ٙ‬یٗ ٔ‪ٛ‬اضز یىؿب٘ی و‪ ٝ‬زض ِیؿز ظیط آٔس‪ ٜ‬اؾز ض‪ٚ‬ث‪ ٝ‬ض‪ٚ‬‬
‫٘ك‪ٛ‬یس – ‪ٞ‬ط قرهی ض‪ٚ‬ـ ذبل ذ‪ٛ‬زـ ضا ثطای ا٘ؼبْ ایٗ وبضزاضز ‪ ٚ ،‬زضؾز ‪ٞ ٓٞ‬ؿز ‪.‬‬

‫‪٘ ‬بْ فبیُ ‪ٞ‬ب ‪ ٚ‬زایطوش‪ٛ‬ضی ‪ٞ‬بیی و‪ٔ ٝ‬ی ثبیؿز اظ آ٘‪ٟ‬ب ٘ؿر‪ ٝ‬ی دكشیجبٖ ٌطفش‪ ٝ‬ق‪ٛ‬ز زض یه ِیؿز‬
‫ٔكرم ٔی ق‪٘ٛ‬س ‪.‬‬
‫‪ ‬فبیُ دكشیجبٖ س‪ٟ‬ی‪ ٝ‬قس‪ٔ ٜ‬ی ثبیؿز زض یه زایطوش‪ٛ‬ضی انّی شذیط‪ ٜ‬ق‪ٛ‬ز ‪.‬‬
‫‪ ‬فبیُ ‪ٞ‬بی دكشیب٘ی ٌطفش‪ ٝ‬قس‪ ٜ‬زض زاذُ یه فبیُ ‪ zip‬لطاض ٔی ٌیط٘س ‪.‬‬
‫‪ ‬زض ٘بْ فبیُ آضقی‪ ، (zip) ٛ‬سبضید ‪ ٚ‬ؾبػز فؼّی ضا شوط ٔی و‪ٙ‬یٓ ‪.‬‬
‫‪ٔ ‬ب اظ زؾش‪ٛ‬ضاؾشب٘ساضز ‪ zip‬و‪ ٝ‬زض س‪ٛ‬ظیغ ‪ٞ‬بی اؾشب٘ساضز ی‪٘ٛ‬یىؽ ‪ِ /‬ی‪ٛٙ‬وؽ ‪ ،‬لبثُ زؾشطؼ اؾز ‪،‬‬
‫ثطای ایؼبز فبیُ دكشیجبٖ وٕه ٔی ٌیطیٓ ‪ .‬وبضثطاٖ ‪ٚ‬ی‪ٙ‬س‪ٚ‬ظ ٔی س‪ٛ‬ا٘‪ٙ‬س اظ ثط٘بٔ‪ ٝ‬ی ‪Info-Zip‬‬
‫اؾشفبز‪ ٜ‬و‪ٙٙ‬س ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ٝ‬قٕب ٔی س‪ٛ‬ا٘یس اظ ‪ٞ‬ط ثط٘بٔ‪ ٝ‬ی فكطز‪ ٜ‬ؾبظی و‪ ٝ‬اظ زؾش‪ٛ‬ضار ذٍ‬
‫فطٔبٖ دكشیجب٘ی ٔی و‪ٙ‬س ‪ ،‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ ،‬چطا و‪ٔ ٝ‬ی س‪ٛ‬ا٘یٓ اظ َطیك ثط٘بٔ‪ٔ ٝ‬بٖ زؾش‪ٛ‬ضار ضا ث‪ ٝ‬آٖ‬
‫ثط٘بٔ‪ ٝ‬اضؾبَ و‪ٙ‬یٓ ‪.‬‬

‫حل هسئلِ‬

‫اظ آ٘ؼبیی و‪َ ٝ‬طاحی ثط٘بٔ‪ ٝ‬ی ٔب ث‪ ٝ‬یه ٔطحّ‪ ٝ‬ی ٔ‪ٙ‬بؾت ‪ ٚ‬دبیساض ضؾیس ‪ ،‬او‪ٔ ٖٛٙ‬ی س‪ٛ‬ا٘یٓ وس٘‪ٛ‬یؿی ضا ‪ ،‬و‪ ٝ‬زض‬
‫‪ٚ‬الغ یه دیبز‪ ٜ‬ؾبظی اظ حُ ٔؿئّ‪ٔ ٝ‬بٖ ٔی ثبقس ضا آغبظ و‪ٙ‬یٓ ‪.‬‬

‫ًسخِ ی اٍل ثزًبهِ‬

‫هثبل ‪ .10.1‬ثزًبهِ ی پشتیجبى گیزی – اٍلیي ًسخِ‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: backup_ver1.py‬‬

‫‪import os‬‬
‫‪import time‬‬

‫‪# 1. The files and directories to be backed up are‬‬


‫‪specified in a list.‬‬
‫]'‪source = ['/home/swaroop/byte', '/home/swaroop/bin‬‬

‫‪@PythonForever‬‬
# If you are using Windows, use source =
[r'C:\Documents', r'D:\Work'] or something like that

# 2. The backup must be stored in a main backup


directory
target_dir = '/mnt/e/backup/' # Remember to change this
to what you will be using

# 3. The files are backed up into a zip file.


# 4. The name of the zip archive is the current date
and time
target = target_dir + time.strftime('%Y%m%d%H%M%S') +
'.zip'

# 5. We use the zip command (in Unix/Linux) to put the


files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, '
'.join(source))

# Run the backup


if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'

‫خزٍجی‬

$ 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‬طْ افعاض ٘بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬

‫یىی اظ ث‪ٟ‬ج‪ٛ‬ز‪ٞ‬بیی و‪ ٗٔ ٝ‬احؿبؼ ٔی و‪ٛٔ ٓٙ‬طط اؾز ‪ ،‬ث‪ٟ‬شط وطزٖ ٔىب٘یؿٓ ٘بْ ز‪ٞ‬ی فبیُ اؾز – ث‪ ٝ‬ایٗ ن‪ٛ‬ضر‬
‫و‪ ٝ‬اظ ظٔبٖ فؼّی ثؼ‪ٛٙ‬اٖ ٘بْ فبیُ اؾشفبز‪ ٜ‬ق‪ٛ‬ز ‪ ٚ‬ایٗ فبیُ زض زاذُ زایطوش‪ٛ‬ضی لطاض ثٍیطز و‪ ٝ‬ثط اؾبؼ سبضید‬
‫فؼّی زض زایطوش‪ٛ‬ضی انّی دكشیجبٖ ایؼبز ٔی ق‪ٛ‬ز ‪ ،‬یىی اظ ٔعیز ‪ٞ‬بی ایٗ ض‪ٚ‬ـ ایٗ اؾز و‪ ٝ‬دكشیجبٖ ‪ٞ‬بی‬
‫س‪ٟ‬ی‪ ٝ‬قس‪ ٜ‬ی قٕب زض یه ض‪ٚ‬ـ ؾّؿّ‪ٔ ٝ‬طاسجی شذیط‪ٔ ٜ‬ی ق‪٘ٛ‬س ‪ ٚ‬زض٘شیؼ‪ٔ ٝ‬سیطیز آ٘‪ٟ‬ب آؾبٖ سط ٔی ق‪ٛ‬ز ‪ .‬زیٍط‬
‫ٔعیز ایٗ ض‪ٚ‬ـ و‪ٛ‬سب‪ ٜ‬قسٖ َ‪٘ َٛ‬بْ فبیُ ‪ٞ‬بؾز ‪ٔ ٚ .‬عیز زیٍط ای‪ٙ‬ؿز و‪ ٝ‬ػساؾبظی زایطوش‪ٛ‬ضی ‪ٞ‬ب ث‪ ٝ‬قٕب‬
‫وٕه ٔی و‪ٙ‬س و‪ ٝ‬ث‪ ٝ‬آؾب٘ی ٘ؿر‪ٞ ٝ‬بی دكشیجبٖ س‪ٟ‬ی‪ ٝ‬قس‪ ٜ‬ضا ث‪ ٝ‬اظای ‪ٞ‬ط ض‪ٚ‬ظ ثطضؾی و‪ٙ‬یس ‪ ،‬چطا و‪ٞ ٝ‬ط‬
‫زایطوش‪ٛ‬ضی س‪ٟٙ‬ب زضن‪ٛ‬ضسی و‪٘ ٝ‬ؿر‪ ٝ‬ی دكشیجب٘ی ثطای آٖ ض‪ٚ‬ظ ٌطفش‪ ٝ‬ق‪ٛ‬ز ‪ ،‬ایؼبز ٔی ق‪ٛ‬ز ‪.‬‬

‫هثبل ‪ .10.2‬ثزًبهِ ی پشتیجبى – ًسخِ ی دٍم‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: backup_ver2.py‬‬

‫‪import os‬‬
‫‪import time‬‬

‫‪# 1. The files and directories to be backed up are‬‬


‫‪specified in a list.‬‬
‫]'‪source = ['/home/swaroop/byte', '/home/swaroop/bin‬‬
‫= ‪# If you are using Windows, use source‬‬
‫‪[r'C:\Documents', r'D:\Work'] or something like that‬‬

‫‪# 2. The backup must be stored in a main backup‬‬


‫‪directory‬‬
‫‪target_dir = '/mnt/e/backup/' # Remember to change this‬‬
‫‪to what you will be using‬‬

‫‪# 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‬‬

‫‪@PythonForever‬‬
# The current time is the name of the zip archive
now = time.strftime('%H%M%S')

# Create the subdirectory if it isn't already there


if not os.path.exists(today):
os.mkdir(today) # make directory
print 'Successfully created directory', today

# The name of the zip file


target = today + os.sep + now + '.zip'

# 5. We use the zip command (in Unix/Linux) to put the


files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, '
'.join(source))

# Run the backup


if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'

‫خزٍجی‬

$ 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‬‬

‫‪# 1. The files and directories to be backed up are‬‬


‫‪specified in a list.‬‬
‫]'‪source = ['/home/swaroop/byte', '/home/swaroop/bin‬‬
‫= ‪# If you are using Windows, use source‬‬
‫‪[r'C:\Documents', r'D:\Work'] or something like that‬‬

‫‪# 2. The backup must be stored in a main backup‬‬


‫‪directory‬‬
‫‪target_dir = '/mnt/e/backup/' # Remember to change this‬‬
‫‪to what you will be using‬‬

‫‪@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')

# Take a comment from the user to create the name of


the zip file
comment = raw_input('Enter a comment --> ')
if len(comment) == 0: # check if a comment was entered
target = today + os.sep + now + '.zip'
else:
target = today + os.sep + now + '_' +
comment.replace(' ', '_') + '.zip'

# Create the subdirectory if it isn't already there


if not os.path.exists(today):
os.mkdir(today) # make directory
print 'Successfully created directory', today

# 5. We use the zip command (in Unix/Linux) to put the


files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, '
'.join(source))

# Run the backup


if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'

‫خزٍجی‬

$ python backup_ver3.py
File "backup_ver3.py", line 25
target = today + os.sep + now + '_' +
^

@PythonForever
‫‪SyntaxError: invalid syntax‬‬

‫ًحَُ ی ػولکزد ( ًبدرست ) ایي ثزًبهِ‬

‫ایٗ ثط٘بٔ‪ ٝ‬ثسضؾشی وبض ٕ٘ی و‪ٙ‬س ! ٔفؿط دبیش‪ ٖٛ‬اػالْ ٔی و‪ٙ‬س و‪ ٝ‬ذُبی ٘ح‪ٛ‬ی ‪ٚ‬ػ‪ٛ‬ز زاضز ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪ٝ‬‬
‫ؾبذشبض نحیحی و‪ ٝ‬دبیش‪ ٖٛ‬ا٘شظبض زیسٖ آٖ ضا زاقش‪ ٝ‬اؾز ضػبیز ٘كس‪ ٜ‬اؾز ‪ٚ .‬لشی و‪ٔ ٝ‬ب ٔش‪ٛ‬ػ‪ ٝ‬ی ذُبیی اظ‬
‫ؾ‪ٛ‬ی ٔفؿط دبیش‪ٔ ٖٛ‬ی ق‪ٛ‬یٓ ‪ ،‬ایٗ ذُب ‪ٔ ،‬ىب٘ی و‪ ٝ‬ذُب زض آٖ ضخ زاز‪ ٜ‬قس‪ ٜ‬اؾز ضا ٘یع ثر‪ٛ‬ثی اػالْ ٔی و‪ٙ‬س ‪.‬‬
‫زض٘شیؼ‪ ٝ‬اقىبَ ظزایی ثط٘بٔ‪ ٝ‬ضا اظ ‪ٕٞ‬بٖ ذٍ قط‪ٚ‬ع ٔی و‪ٙ‬یٓ ‪.‬‬

‫اٌط وٕی ثیكشط زلز و‪ٙ‬یٓ ‪ٔ ،‬الحظ‪ٔ ٝ‬ی و‪ٙ‬یٓ و‪ ٝ‬یه ذٍ ٔ‪ُٙ‬می اظ وس ثط٘بٔ‪ ٝ‬زض ز‪ ٚ‬ذٍ ٔؼعا قىؿش‪ ٝ‬قس‪ٜ‬‬
‫اؾز ‪ ،‬أب ٔب ٔكرم ٘ىطز‪ ٜ‬ایٓ و‪ ٝ‬ایٗ ز‪ٚ‬ذٍ زضازأ‪ٔ ٚ ٝ‬شؼّك ث‪ ٝ‬یىسیٍط ‪ٞ‬ؿش‪ٙ‬س ‪ .‬ثُ‪ٛ‬ض وّی ٔفؿط دبیش‪ ٖٛ‬زض‬
‫ا٘ش‪ٟ‬بی ذٍ ا‪ َٚ‬ثب ػٍّٕط (‪ )+‬ض‪ ٚ‬ث‪ ٝ‬ض‪ٔ ٚ‬ی ق‪ٛ‬ز ‪ ،‬ثس‪ ٖٚ‬آ٘ى‪ ٝ‬ػّٕ‪٘ٛ‬سی ثؼس اظایٗ ػٍّٕط ثیبثس ‪ ٚ‬اظ ای‪ٙ‬ط‪ٕ٘ ٚ‬ی زا٘س‬
‫و‪ ٝ‬چُ‪ٛ‬ض ثبیس ازأ‪ ٝ‬ثس‪ٞ‬س ‪ .‬ثطای ایٗ ٔ‪ٙ‬ظ‪ٛ‬ض ثطای ثیبٖ ٔطسجٍ ث‪ٛ‬زٖ ایٗ ز‪ ٚ‬ذٍ ث‪ ٝ‬یىسیٍط ٔی ثبیؿز زض ذٍ‬
‫ا‪ َٚ‬اظ وبضاوشط ) \ ( ‪ ،‬اؾشفبز‪ ٜ‬و‪ٙ‬یٓ ‪.‬دؽ ث‪ ٝ‬ایٗ ض‪ٚ‬ـ ثط٘بٔ‪ٔ ٝ‬بٖ ضا سهحیح ٔی و‪ٙ‬یٓ ‪ .‬ث‪ ٝ‬ایٗ وبضی و‪ ٝ‬او‪ٖٛٙ‬‬
‫ا٘ؼبْ زازیٓ ‪ ،‬ضفغ اقىبَ ثط٘بٔ‪ٔ ٝ‬ی ٌ‪ٛ‬ی‪ٙ‬س ‪.‬‬

‫ًسخِ ی چْبرم‬

‫هثبل ‪. 10.4‬ثزًبهِ ی تْیِ ًسخِ ی پشتیجبى – ًسخِ ی چْبرم‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: backup_ver2.py‬‬

‫‪import os, time‬‬

‫‪# 1. The files and directories to be backed up are‬‬


‫‪specified in a list.‬‬
‫]'‪source = ['/home/swaroop/byte', '/home/swaroop/bin‬‬
‫= ‪# If you are using Windows, use source‬‬
‫‪[r'C:\Documents', r'D:\Work'] or something like that‬‬

‫‪# 2. The backup must be stored in a main backup‬‬


‫‪directory‬‬

‫‪@PythonForever‬‬
target_dir = '/mnt/e/backup/' # Remember to change this
to what you will be using

# 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')

# Take a comment from the user to create the name of


the zip file
comment = raw_input('Enter a comment --> ')
if len(comment) == 0: # check if a comment was entered
target = today + os.sep + now + '.zip'
else:
target = today + os.sep + now + '_' + \
comment.replace(' ', '_') + '.zip'
# Notice the backslash!

# Create the subdirectory if it isn't already there


if not os.path.exists(today):
os.mkdir(today) # make directory
print 'Successfully created directory', today

# 5. We use the zip command (in Unix/Linux) to put the


files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, '
'.join(source))

# Run the backup


if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'

‫خزٍجی‬

@PythonForever
‫‪$ python backup_ver4.py‬‬
‫‪Enter a comment --> added new examples‬‬
‫‪Successful backup to‬‬
‫‪/mnt/e/backup/20041208/082156_added_new_examples.zip‬‬

‫‪$ python backup_ver4.py‬‬


‫>‪Enter a comment --‬‬
‫‪Successful backup to /mnt/e/backup/20041208/082316.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‬ضقش‪ ٝ‬ی زؾش‪ٛ‬ضی ث‪ ٝ‬ن‪ٛ‬ضر ظیط زض ٔی آیس ‪:‬‬

‫‪tar = 'tar -cvzf %s %s -X /home/swaroop/excludes.txt' %‬‬


‫))‪(target, ' '.join(srcdir‬‬

‫قطح ؾ‪ٛ‬ئیچ ‪ٞ‬بی ثط٘بٔ‪ ٝ‬زض ازأ‪ ٝ‬آٔس‪ ٜ‬اؾز ‪:‬‬

‫‪ ،-c‬ایؼبز فبیُ آضقی‪ ٛ‬ضا ٔكرم ٔی و‪ٙ‬س ‪.‬‬ ‫‪‬‬

‫‪verbose ،-v‬ضا ٔكرم ٔی و‪ٙ‬س ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪ ٝ‬زؾش‪ٛ‬ضار ٔی ثبیؿز دبؾرٍ‪ٛ‬یی وبّٔشطی زاقش‪ٝ‬‬ ‫‪‬‬

‫ثبق‪ٙ‬س ‪.‬‬
‫‪ٔ ،-z‬كرم ٔی و‪ٙ‬س و‪ ٝ‬فیّشط ‪ٔ gzip‬ی ثبیؿز اػٕبَ ق‪ٛ‬ز ‪.‬‬ ‫‪‬‬

‫‪ ، -f‬اػجبض زض ایؼبز فبیُ آضقی‪ ٛ‬ضا ٔكرم ٔی و‪ٙ‬س ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪ ٝ‬اٌط فبیُ ‪٘ ٓٞ‬بٔی اظ لجُ ٔ‪ٛ‬ػ‪ٛ‬ز‬ ‫‪‬‬

‫اؾز ‪ٔ ،‬ی ثبیؿز فبیُ آضقی‪ ٛ‬ػسیس ػبیٍعیٗ آٖ ق‪ٛ‬ز ‪.‬‬


‫‪ِ ،-X‬یؿشی اظ فبیُ ‪ٞ‬بیی و‪٘ ٝ‬جبیس زض فبیُ آضقی‪ ٛ‬لطاض ثٍیط٘س ضا ٔكرم ٔی و‪ٙ‬س ‪ ،‬ثطای ٔظبَ ‪ٔ ،‬ؼ‪ٙ‬ی‬ ‫‪‬‬

‫~*ای‪ٙ‬ؿز و‪ ٝ‬فبیُ آضقی‪ ٛ‬قبُٔ فبیُ ‪ٞ‬بیی و‪ ٝ‬اؾٓ قبٖ ث‪ ~ ٝ‬ذشٓ ٔی ق‪ٛ‬ز ‪ٕ٘ ،‬ی ثبقس ‪.‬‬

‫هْن‬

‫یه ض‪ٚ‬ـ ثؿیبض ػبِی ثطای ث‪ٟ‬ج‪ٛ‬ز ثط٘بٔ‪ ٝ‬ای‪ٙ‬ؿز و‪ ٝ‬اظ ذ‪ٛ‬ز ٔبغ‪ٞ َٚ‬بی دبیش‪ ٖٛ‬ث‪ ٝ‬اؾٓ ‪ zipfile ٚ tarfile‬ثطای‬
‫ایؼبز فبیُ آضقی‪ ٛ‬اؾشفبز‪ ٜ‬و‪ٙ‬یٓ ‪ .‬ایٗ ٔبغ‪ٞ َٚ‬ب ػعء وشبثرب٘‪ ٝ‬ی اؾشب٘ساضز دبیش‪ٞ ٖٛ‬ؿش‪ٙ‬س ‪ ٚ‬زض ٘شیؼ‪ ٓٞ ٝ‬او‪ٖٛٙ‬‬
‫ثطای اؾشفبز‪ ٜ‬زض زؾشطؼ قٕب ‪ٞ‬ؿش‪ٙ‬س ‪ .‬اؾشفبز‪ ٜ‬اظایٗ وشبثرب٘‪ٞ ٝ‬ب اظ ثىبضٌیطی زؾش‪ٛ‬ض ‪ os.system‬و‪ ٝ‬ثُ‪ٛ‬ضوّی‬
‫ثطای اؾشفبز‪ ٜ‬س‪ٛ‬نی‪ٕ٘ ٝ‬ی ق‪ٛ‬ز ‪ ( ،‬چطا و‪ ٝ‬ایٗ زؾش‪ٛ‬ض ثطاحشی ٕٔىٗ اؾز اقشجب‪ٞ‬بر دط‪ٞ‬عی‪ ٝٙ‬ایی ضا ث‪ٛ‬ػ‪ٛ‬ز‬
‫ثیب‪ٚ‬ضز‪٘ ).‬یع ػّ‪ٌٛ‬یطی ٔی و‪ٙ‬س ‪.‬‬

‫‪ٞ‬ط چ‪ٙ‬س و‪ ٗٔ ٝ‬زض ای‪ٙ‬ؼب نطفب ث‪ ٝ‬ػ‪ٟ‬ز آٔ‪ٛ‬ظـ اظ ض‪ٚ‬ـ ‪ os.system‬ثطای ایؼبز فبیُ دكشیجبٖ اؾشفبز‪ ٜ‬وطزْ ‪.‬‬

‫‪@PythonForever‬‬
‫فزآیٌذ تَسؼِ ی ًزم افشار‬

‫‪ .‬ایٗ فبظ ‪ٞ‬ب ٔی س‪ٛ‬ا٘‪ٙ‬س‬ ‫ٔب زض ایٗ فهُ زض حیٗ فطآی‪ٙ‬س ٘‪ٛ‬قشٗ ٘طْ افعاض اظ ٔیبٖ فبظ‪ٞ‬بی ٔرشّفی ٌصض وطزیٓ‬
‫ثه‪ٛ‬ضر ظیط ذالن‪ ٝ‬ق‪٘ٛ‬س ‪:‬‬

‫چ‪ ٝ‬چیعی (آ٘بِیع )‬ ‫‪‬‬

‫چُ‪ٛ‬ض (َطاحی )‬ ‫‪‬‬

‫ا٘ؼبْ زازٖ ( دیبز‪ ٜ‬ؾبظی )‬ ‫‪‬‬

‫سؿز ( سؿز ‪ ٚ‬اقىبَ ظزایی )‬ ‫‪‬‬

‫اؾشفبز‪ ( ٜ‬ػّٕىطز یب س‪ٛ‬ؾؼ‪) ٝ‬‬ ‫‪‬‬

‫ٍ٘‪ٟ‬ساضی ( ث‪ٟ‬ج‪ٛ‬ز )‬ ‫‪‬‬

‫هْن‬

‫ض‪ٚ‬ـ دیك‪ٟٙ‬بز قس‪ ٜ‬ثطای ٘‪ٛ‬قشٗ ثط٘بٔ‪ٞ ٝ‬ب ‪ ،‬ػجبضسؿز اظ قی‪ ٜٛ‬ایی و‪ٔ ٝ‬ب زض ٘‪ٛ‬قشٗ ثط٘بٔ‪ ٝ‬ی س‪ٟ‬ی‪ ٝ‬ی ٘ؿر‪ ٝ‬ی‬
‫دكشیجبٖ آٖ ضا ز٘جبَ ٕ٘‪ٛ‬زیٓ ‪:‬‬

‫آ٘بِیع ‪َ ٚ‬طاحی ضا ا٘ؼبْ زازیٓ ‪ .‬دیبز‪ ٜ‬ؾبظی ضا ثب یه ٘ؿر‪ ٝ‬ی ؾبز‪ ٜ‬قط‪ٚ‬ع وطزیٓ ‪ .‬آٖ ضا سؿز ‪ ٚ‬اقىبَ ظازیی‬
‫وطزیٓ ‪ .‬آٖ ضا ثىبضٌطفشیٓ ‪ ٚ‬اؾشفبز‪ ٜ‬وطزیٓ سب ُٕٔئٗ ق‪ٛ‬یٓ و‪ٕٞ ٝ‬ب٘‪ٙ‬س ا٘شظبضٔبٖ ػُٕ ٔی و‪ٙ‬س ‪.‬‬

‫او‪ٞ ٖٛٙ‬ط ‪ٚ‬یػٌی و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ٞ‬یس ضا ث‪ ٝ‬ثط٘بٔ‪ ٝ‬ايبف‪ ٝ‬و‪ٙ‬یس ‪ ٚ‬چطذ‪ ٝ‬ی ا٘ؼبْ –سؿز – اؾشفبز‪ ٜ‬ضا ثطای چ‪ٙ‬سیٗ ثبض‬
‫سب ػبیی و‪٘ ٝ‬یبظ ‪ٞ‬ؿز سىطاض و‪ٙ‬یس ‪ ،‬ث‪ ٝ‬یبز زاقش‪ ٝ‬ثبقیس و‪٘ ٝ‬طْ افعاض ضقس ٔی و‪ٙٙ‬س ‪ ٝ٘ ،‬ای‪ٙ‬ى‪ ٝ‬ؾبذش‪ ٝ‬ق‪ٛ‬ز ‪.‬‬

‫خالصِ‬

‫ٔب ٔالحظ‪ٕٛ٘ ٝ‬زیٓ و‪ ٝ‬ث‪ ٝ‬چ‪ ٝ‬قىُ ثط٘بٔ‪ٞ ٝ‬بی دبیش‪ ٖٛ‬زِر‪ٛ‬ا‪ ٜ‬ذ‪ٛ‬زٔبٖ ضا ایؼبز و‪ٙ‬یٓ ‪ ٚ‬زضایٗ حیٗ زضٌیط فبظ‪ٞ‬بی‬
‫ٔرشّفی زض٘‪ٛ‬قشٗ ثط٘بٔ‪ ٝ‬قسیٓ ‪ٕٞ ٚ .‬بٖ َ‪ٛ‬ض و‪ ٝ‬زض ایٗ فهُ زیسیٓ ‪ ،‬قٕب ‪ ٓٞ‬ایٗ فبظ ‪ٞ‬ب ضا زض ایؼبز ثط٘بٔ‪ٞ ٝ‬بی‬
‫سبٖ ٔفیس ذ‪ٛ‬ا‪ٞ‬یس یبفز ‪ ٚ ،‬اظ ای‪ٙ‬ط‪ ٚ‬زض دبیش‪ ٚ ٖٛ‬ث‪ٕٞ ٝ‬بٖ ا٘ساظ‪ ٜ‬زض حُ ٔؿبئُ آؾ‪ٛ‬ز‪ ٜ‬ذ‪ٛ‬ا‪ٞ‬یس قس ‪.‬‬

‫زض فهُ ثؼسی ‪ٔ ،‬ب ثط٘بٔ‪ٛ٘ ٝ‬یؿی قیء ٌطا ضا ثحض ذ‪ٛ‬ا‪ٞ‬یٓ وطز ‪.‬‬

‫‪@PythonForever‬‬
‫کتبة یک ثبیت اس پبیتَى‪.‬فصل یبسدّن‪.‬ثزًبهِ ًَیسی شیء گزا‬

‫فْزست هٌذرجبت‬

‫‪ 1‬ثط٘بٔ‪ٛ٘ ٝ‬یؿی قیء ٌطا‬ ‫‪‬‬

‫‪ٔ 2‬ؼطفی‬ ‫‪‬‬

‫‪self 3‬‬ ‫‪‬‬

‫‪ 4‬والؼ ‪ٞ‬ب‬ ‫‪‬‬

‫‪ٔ 5‬شس‪ٞ‬بی قیء‬ ‫‪‬‬

‫‪ٔ 6‬شس__‪__init‬‬ ‫‪‬‬

‫‪ٔ 7‬شغیط‪ٞ‬بی قیء ‪ٔ ٚ‬شغیط‪ٞ‬بی والؼ‬ ‫‪‬‬

‫‪ٚ 8‬ضاطز‬ ‫‪‬‬

‫‪ 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‬بی‬ ‫‪ٞ‬ط ذ‪ٛ‬ا٘‪ٙ‬س‪ ٜ‬ی ثط٘بٔ‪ٞ ٝ‬بی قٕب ف‪ٛ‬ضا آٖ ضا سكریم ٔی ز‪ٞ‬س ‪ ٚ‬حشی اٌط اظ ٘بْ‬
‫(ٔحیٍ ‪ٞ‬بی س‪ٛ‬ؾؼ‪ ٝ‬یىذبضچ‪ٔ )ٝ‬ره‪ٛ‬ل ٘یع ٔی س‪ٛ‬ا٘‪ٙ‬س ث‪ ٝ‬قٕب وٕه و‪ٙٙ‬س ‪.‬‬

‫ًکبتی ثزای ثزًبهِ ًَیسبى ‪C++/Java/C#‬‬

‫‪self‬زض دبیش‪ٕٞ ٖٛ‬بٖ اقبض‪ٌ ٜ‬ط ‪ self‬زض ‪ٔ ٚ C++‬طػغ ‪ this‬زض ػب‪ٚ‬ا ‪ C# ٚ‬اؾز ‪.‬‬

‫حشٕب و‪ٙ‬ؼىب‪ٞ ٚ‬ؿشیس و‪ ٝ‬دبیش‪ ٖٛ‬ث‪ ٝ‬چ‪ ٝ‬ن‪ٛ‬ضر ٔمساض ‪ self‬ضا اضؾبَ ٔی و‪ٙ‬س ‪ ٚ‬چطا قٕب ٘یبظی ث‪ٔ ٝ‬مساضز‪ٞ‬ی ث‪ٝ‬‬
‫آٖ ٘ساضیس ‪ .‬ثب یه ٔظبَ ایٗ ٔ‪ٛ‬ي‪ٛ‬ع ضا قفبف ٔی و‪ٙ‬یٓ ‪ ،‬فطو و‪ٙ‬یس والؾی ث‪ ٝ‬اؾٓ ‪ ٕٝ٘ٛ٘ ٚ MyClass‬ایی اظ‬
‫‪ MyObject‬زاضیس ‪ٍٙٞ .‬بٔی و‪ٔ ٝ‬شسی اظ ایٗ والؼ ضا ثؼ‪ٛٙ‬اٖ ٕ٘‪ٝ٘ٛ‬‬ ‫ایٗ والؼ ث‪٘ ٝ‬بْ‬
‫)‪MyObject.method(arg1,arg2‬نسا ٔی ظ٘یس ‪ .‬ایٗ وس ثه‪ٛ‬ضر ذ‪ٛ‬زوبض س‪ٛ‬ؾٍ دبیش‪ ٖٛ‬ث‪ٝ‬‬
‫)‪MyClass.method(Myobject,arg1,arg2‬سجسیُ ٔی ق‪ٛ‬ز ‪-‬ایٗ سٕبْ آٖ چیعی ث‪ٛ‬ز و‪ self ٝ‬ثُ‪ٛ‬ض‬
‫ذبل زاقز ‪ .‬ایٗ ُّٔت ‪ٕٞ‬چ‪ٙ‬یٗ ثسیٗ ٔؼ‪ٙ‬ی ؾز و‪ ٝ‬اٌط ٔشسی زاقش‪ ٝ‬ثبقیس و‪ٞ ٝ‬یچ آضٌ‪ٔٛ‬ب٘ی ثؼ‪ٛٙ‬اٖ ‪ٚ‬ض‪ٚ‬زی‬
‫ٕ٘ی دصیطز ‪ ،‬ثبظ قٕب ٔی ثبیؿز آضٌ‪ٔٛ‬بٖ ‪ self‬ضا ثطای آٖ سؼطیف ٕ٘بئیس ‪.‬‬

‫کالط ّب‬

‫یه والؼ ِ سب حس ٕٔىٗ ؾبز‪ ٜ‬زض ٔظبَ ظیط آ‪ٚ‬ضز‪ ٜ‬قس‪ ٜ‬اؾز ‪.‬‬

‫ایجبد یک کالط ‪ :‬هثبل ‪ . 11.1‬ایجبد یک کالط ‪:‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: simplestclass.py‬‬

‫‪class Person:‬‬
‫‪pass # An empty block‬‬

‫)(‪p = Person‬‬
‫‪print p‬‬

‫خزٍجی ‪:‬‬

‫‪$ python simplestclass.py‬‬

‫‪@PythonForever‬‬
‫>‪<__main__.Person instance at 0xf6fcb18c‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫ٔب یه والؼ ػسیس ضا ثب اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض ‪ ٚ class‬ثس٘جبَ آٖ ثب آ‪ٚ‬ضزٖ ٘بْ والؼ ‪ٔ ٚ‬شؼبلجب ثب یه ثالن س‪ ٛ‬ضفش‪ٝ‬‬
‫اظ زؾش‪ٛ‬ضار و‪ ٝ‬ثس٘‪ ٝ‬والؼ ضا قىُ ٔی ز‪ٞ‬س ایؼبز وطزیٓ ‪ .‬زض ایٗ ٔظبَ ‪ٔ ،‬ب ثالن ذبِی س‪ ٛ‬ضفش‪ ٝ‬ضا س‪ٟٙ‬ب ثب یه‬
‫زؾش‪ٛ‬ض ‪٘ pass‬كبٖ زازیٓ ‪ .‬ؾذؽ ‪ ،‬یه قیء‪ ٕٝ٘ٛ٘/‬اظ ایٗ والؼ ضا ثب اؾشفبز‪ ٜ‬اظ ٘بْ والؼ ‪ٕٞ‬طا‪ ٜ‬ثب یه ػفز‬
‫دطا٘شع ثبظ ‪ٚ‬ثؿش‪ ، ٝ‬ایؼبز وطزیٓ ‪ ( .‬زض ثرف ثؼسی زضثبض‪ ٕٝ٘ٛ٘ ٜ‬ؾبظی ثیكشط ذ‪ٛ‬ا‪ٞ‬یٓ آٔ‪ٛ‬ذز ‪ٚ ) .‬ؾذؽ ثطای‬
‫اطجبر نحز وبضٔبٖ ث‪ ٝ‬ؾبزٌی ثب چبح وطزٖ ٔشغیط‪ ،‬اظ ٘‪ٛ‬ع آٖ ُٕٔئٗ ٔی ق‪ٛ‬یٓ ‪ ،‬چطا و‪ ٝ‬ث‪ٔ ٝ‬ب ٘كبٖ ٔی ز‪ٞ‬س‬
‫و‪ ٝ‬یه ٕ٘‪ ٝ٘ٛ‬اظ والؼ ‪ ، Person‬زض ٔبغ‪ __main__ َٚ‬زاضیٓ ‪ .‬س‪ٛ‬ػ‪ ٝ‬زاقش‪ ٝ‬ثبقیس و‪ ٝ‬آزضؼ حبفظ‪ٝ‬‬
‫وبٔذی‪ٛ‬سطی و‪ ٝ‬قیء زض آٖ شذیط‪ ٜ‬قس‪ ٜ‬اؾز ٘یع چبح ٔی ق‪ٛ‬ز ‪ .‬ایٗ آزضؼ زض وبٔذی‪ٛ‬سط‪ٞ‬ط وؿی ٔشفب‪ٚ‬ر ‪ٞ‬ؿز‬
‫‪ ،‬چطا و‪ ٝ‬دبیش‪ٔ ٖٛ‬ی س‪ٛ‬ا٘س قیء ضا زض ‪ٞ‬ط وؼبیی اظ حبفظ‪ ٝ‬و‪ ٝ‬فًبی ذبِی یبفز شذیط‪ ٜ‬و‪ٙ‬س ‪.‬‬

‫هتذّبی شیء‬

‫ٔب زضثبض‪ ٜ‬اقیبء ‪ /‬والؼ ‪ٞ‬ب نحجز وطزیٓ ‪ٌ ٚ‬فشیٓ و‪ٔ ٝ‬ی س‪ٛ‬ا٘‪ٙ‬س ٔشس‪ٞ‬بیی ٔكبث‪ ٝ‬ث‪ ٝ‬س‪ٛ‬اثغ زاقش‪ ٝ‬ثبق‪ٙ‬س ‪ ،‬س‪ٟٙ‬ب ثب‬
‫ایٗ اؾشظ‪ٙ‬بء و‪ ٝ‬یه آضٌ‪ٔٛ‬بٖ ايبفی ث‪٘ ٝ‬بْ ‪ self‬زاض٘س ‪ .‬حبَ ٔی ذ‪ٛ‬ا‪ٞ‬یٓ ٔظبَ ‪ٞ‬بیی زضایٗ ضاثُ‪ ٝ‬زاقش‪ ٝ‬ثبقیٓ ‪.‬‬

‫استفبدُ اس هتذّبی اشیبء‬

‫هثبل ‪ . 11.2‬ثِ کبرگیزی هتذّبی اشیبء‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: method.py‬‬

‫‪class Person:‬‬
‫‪def sayHi(self):‬‬
‫'?‪print 'Hello, how are you‬‬

‫)(‪p = Person‬‬
‫)(‪p.sayHi‬‬

‫‪# This short example can also be written as‬‬


‫)(‪Person().sayHi‬‬

‫‪@PythonForever‬‬
‫خزٍجی‬

‫‪$ python method.py‬‬


‫?‪Hello, how are you‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض ایٗ ٔظبَ زض ػُٕ ثب ‪ self‬آق‪ٙ‬ب قسیٓ ‪ .‬زلز و‪ٙ‬یس و‪ٔ ٝ‬شس ‪ SayHi‬دبضأشطی ٕ٘ی ٌیطز ‪ِٚ‬ی ثب ایٗ حبَ ‪self‬‬
‫ضا زض سؼطیف سبثغ ذ‪ٛ‬ز زاضز ‪.‬‬

‫هتذ __‪__init‬‬

‫سؼسازی اظ ٘بْ ‪ٞ‬بی ٔشس‪ٞ‬ب ‪ٞ‬ؿش‪ٙ‬س و‪ ٝ‬ثطای والؼ ‪ٞ‬بی دبیش‪ٔ ٖٛ‬ؼ‪ٙ‬ی ‪ٔ ٚ‬ف‪ ْٟٛ‬ذبنی زاض٘س ‪ .‬یىی اظ آٖ ٘بْ ‪ٞ‬ب‬
‫__‪ٞ__init‬ؿز ‪ ،‬و‪ ٝ‬او‪ٔ ٖٛٙ‬ی ذ‪ٛ‬ا‪ٞ‬یٓ ث‪ٔ ٝ‬ف‪ ْٟٛ‬آٖ دی ثجطیٓ ‪ٔ.‬شس __‪ ، __init‬ث‪ٔ ٝ‬ؼطز ای‪ٙ‬ى‪ ٝ‬یه قیء اظ‬
‫والؼ ٕ٘‪ ٝ٘ٛ‬ؾبظی ٔی ق‪ٛ‬ز ‪ ،‬اػطا ٔی ق‪ٛ‬ز ‪ .‬ایٗ ٔشس ثطای ‪ٞ‬ط وبض ا‪ِٚ‬ی‪ ٝ‬ایی و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ٞ‬یس ثب قیء سبٖ ا٘ؼبْ‬
‫ز‪ٞ‬یس ‪ٙٔ ،‬بؾت اؾز ‪ .‬ث‪ ٝ‬ز‪ ٚ‬ظیطذُی و‪ ٝ‬زض اثشسا ‪ ٚ‬ا٘ش‪ٟ‬بی ٘بْ ایٗ ٔشس ‪ٞ‬ؿز زلز زاقش‪ ٝ‬ثبقیس ‪.‬‬

‫ثِ کبرگیزی هتذ __‪__init‬‬

‫هثبل ‪ . 11.3‬استفبدُ اس هتذ __‪__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‬‬

‫‪# This short example can also be written as‬‬


‫)(‪Person('Swaroop').sayHi‬‬

‫‪@PythonForever‬‬
‫خزٍجی ‪:‬‬
‫‪$ python class_init.py‬‬
‫‪Hello, my name is Swaroop‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض ای‪ٙ‬ؼب ‪ٔ ،‬ب ٔشس __‪ __init‬ضا َ‪ٛ‬ضی سؼطیف وطزیٓ و‪ ٝ‬یه دبضأشط ث‪ ٝ‬اؾٓ ‪ name‬ثذصیطز ( زض و‪ٙ‬بضدبضأشط‬
‫‪ٔself‬ؼٕ‪ٕٞ ٚ َٛ‬یكٍی ) ‪ .‬ؾذؽ س‪ٟٙ‬ب یه فیّس ػسیس ث‪٘ ٝ‬بْ ‪ name‬ایؼبز وطزیٓ ‪ .‬زلز و‪ٙ‬یس و‪ ٝ‬ایٗ ‪ٞ‬ب‬
‫ٔشغیط‪ٞ‬بیی ٔشفب‪ٚ‬ر ‪ٞ‬ؿش‪ٙ‬س ‪ٞ ،‬ط چ‪ٙ‬س و‪٘ ٝ‬بْ ‪ٞ‬بی قبٖ ٔظُ ‪ ٓٞ‬اؾز ‪ .‬ػالٔز ٘مُ‪ٌ ٝ‬صاقش‪ ٝ‬قس‪ ٜ‬ثبػض ٔی ق‪ٛ‬ز‬
‫و‪ ٝ‬ثیٗ آ٘‪ٟ‬ب سٕبیع لبئُ ق‪ٛ‬یٓ ‪٘ .‬ىش‪ ٝ‬حبئع ا‪ٕٞ‬یز ایٗ اؾز و‪ٔ ٝ‬ب ثُ‪ٛ‬ض نطیح ٔشس __‪ __init‬ضا فطاذ‪ٛ‬ا٘ی‬
‫٘ىطزیٓ ‪ ،‬أب آضٌ‪ٔٛ‬بٖ ‪ٞ‬بی آٖ ضا زض حیٗ ایؼبز یه ٕ٘‪ ٝ٘ٛ‬اظ والؼ ‪ ،‬زض ثیٗ دطا٘شع‪ٞ‬بی ٘بْ والؼ ث‪ ٝ‬آٖ‬
‫فطؾشبزیٓ ‪ .‬ایٗ ٔف‪ ْٟٛ‬ذبل ایٗ ٔشس ‪ٞ‬ؿز ‪ .‬او‪ٔ ٖٛٙ‬ب ٔی س‪ٛ‬ا٘یٓ اظ فیّس ‪ self.name‬زض سٕبٔی ٔشس‪ٞ‬بی ٔبٖ‬
‫اؾشفبز‪ ٜ‬و‪ٙ‬یٓ ‪ ،‬و‪ ٝ‬ایٗ وبض زض ٔشس ‪ٔ SayHi‬كرم ‪ٞ‬ؿز ‪.‬‬

‫ًکتِ ایی ثزای ثزًبهِ ًَیسبى ‪C++/Java/C#‬‬

‫ٔشس __‪ __init‬زض لیبؼ ٔی س‪ٛ‬ا٘س ٔظُ ؾبظ٘س‪ٞ‬ب زض ‪ ٚC# ، C++‬ػب‪ٚ‬ا ثبقس ‪.‬‬

‫هتغیزّبی شیء ٍ هتغیزّبی کالط‬

‫سب ثسیٗ ػب زضثبض‪ ٜ‬ػّٕیبسی و‪ ٝ‬ثركی اظ اقیبء ‪ ٚ‬والؼ ‪ٞ‬ؿش‪ٙ‬س ثحض قس ‪ ،‬او‪ٔ ٖٛٙ‬ب ٔی ذ‪ٛ‬ا‪ٞ‬یٓ زضثبض‪ ٜ‬ی زاز‪ٜ‬‬
‫و‪ ٝ‬ثرف زیٍطی اظ اقیبء ‪ ٚ‬والؼ ‪ٞ‬ؿش‪ٙ‬س ثحض و‪ٙ‬یٓ ‪ .‬زض ‪ٚ‬الغ ‪ ،‬زاز‪ٞ ٜ‬ب چیع ذبنی ث‪ ٝ‬ػع ٔشغیط‪ٞ‬بی ٔؼٕ‪ِٛ‬ی‬
‫و‪ ٝ‬ث‪ ٝ‬فًبی ٘بٔی اقیبء ‪ ٚ‬والؼ ‪ٞ‬ب ‪ bound‬قس‪ ٜ‬ا٘س ‪٘ ،‬یؿش‪ٙ‬س ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪٘ ٝ‬بْ ‪ٞ‬بی ایٗ ٔشغیط‪ٞ‬ب س‪ٟٙ‬ب زض‬
‫زاذُ ایٗ والؼ ‪ٞ‬ب ‪ ٚ‬اقیبء ٔؼشجط ‪ٞ‬ؿش‪ٙ‬س ‪.‬‬

‫ز‪ٛ٘ ٚ‬ع اظفیّس ‪ٞ‬ب ‪ٚ‬ػ‪ٛ‬ز زاض٘س – ٔشغیط‪ٞ‬بی والؼ ‪ٔ ٚ‬شغیط‪ٞ‬بی قیء ‪ ،‬و‪َ ٝ‬جم‪ ٝ‬ث‪ٙ‬سی قبٖ ث‪ ٝ‬سطسیت ‪ٌٛٙٔ ،‬‬
‫ثطایٗ اؾز و‪ ٝ‬آیب ٔشغیط‪ٞ‬ب ٔشؼّك ث‪ ٝ‬والؼ ‪ٞ‬ؿش‪ٙ‬س ‪ ٚ‬یب ث‪ ٝ‬قیء ‪.‬‬

‫ٔشغیط‪ٞ‬بی والؼ ث‪ ٝ‬ایٗ ػ‪ٟ‬ز ث‪ ٝ‬اقشطان ٌصاقش‪ ٝ‬قس‪ ٜ‬ا٘س سب ثطای سٕبٔی اقیبء ی (ٕ٘‪ٞ ٝ٘ٛ‬ب) والؼ لبثُ‬
‫زؾشطؼ ثبق‪ٙ‬س ‪ .‬س‪ٟٙ‬ب یه وذی اظ ٔشغیط والؼ ‪ٚ‬ػ‪ٛ‬ز زاضز ‪ٍٙٞ ٚ‬بٔی و‪ٞ ٝ‬ط قیء ایی سغییطی زض یه ٔشغیط‬
‫والؼ ثس‪ٞ‬س ‪ ،‬ایٗ سغییط ث‪ ٝ‬زضؾشی زض سٕبٔی ٕ٘‪ٞ ٝ٘ٛ‬بی زیٍط ٔ‪ٙ‬ؼىؽ ٔی ق‪ٛ‬ز ‪.‬‬

‫ٔشغیط‪ٞ‬بی قیء ‪ٔ،‬شؼّك ث‪ٞ ٝ‬ط قیء‪ٙٔ ٕٝ٘ٛ٘/‬حهط ث‪ ٝ‬فطز اظ یه والؼ ‪ٞ‬ؿش‪ٙ‬س ‪.‬زض ایٗ حبِز ‪ٞ ،‬ط قیء وذی‬
‫ٔره‪ٛ‬ل ث‪ ٝ‬ذ‪ٛ‬زـ ضا اظ فیّس زاضز ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪ ٝ‬آ٘‪ٟ‬ب اقشطان ٌصاضز‪ٕ٘ ٜ‬ی ق‪٘ٛ‬س ‪ ٚ‬ضاثُ‪ ٝ‬ایی ثیٗ ٘بْ ‪ٞ‬بی‬

‫‪@PythonForever‬‬
ّٝ‫ٓ آؾبٖ ایٗ ٔؿئ‬ٟ‫ یه ٔظبَ ثبػض ف‬. ‫ز ٘ساضز‬ٛ‫ػ‬ٚ ‫ر‬ٚ‫بی ٔشفب‬ٞ ٕٝ٘ٛ٘ ‫بی یىؿبٖ اظ‬ٞ ‫ب زض والؼ‬ٞ ٖ‫یىؿبٖ آ‬
. ‫س قس‬ٞ‫ا‬ٛ‫ذ‬

‫استفبدُ اس هتغیزّبی شیء ٍ کالط‬

‫ ثِ کبرگیزی هتغیزّبی شیء ٍ کالط‬. 11.4 ‫هثبل‬

#!/usr/bin/python
# Filename: objvar.py

class Person:
'''Represents a person.'''
population = 0

def __init__(self, name):


'''Initializes the person's data.'''
self.name = name
print '(Initializing %s)' % self.name

# When this person is created, he/she


# adds to the population
Person.population += 1

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()

kalam = Person('Abdul Kalam')


kalam.sayHi()
kalam.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‬ؿجز ز‪ٞ‬ی ن‪ٛ‬ضر ٌطفش‪ ٝ‬اؾز) ‪ٞ‬ؿز ‪ ٚ‬اظ ای‪ٙ‬ط‪ ٚ‬یه ٔشغیط قیء اؾز ‪.‬‬

‫ث‪ٙ‬بثطایٗ ٔب ث‪ٔ ٝ‬شغیط والؼ ‪ population‬ثه‪ٛ‬ضر ‪ Person.population‬ضػ‪ٛ‬ع ٔی و‪ٙ‬یٓ ‪ ٝ٘ ٚ‬ث‪ ٝ‬ن‪ٛ‬ضر‬


‫‪ self.population .‬س‪ٛ‬ػ‪ ٝ‬زاقش‪ ٝ‬ثبقیس زض ن‪ٛ‬ضسیى‪ ٝ‬یه ٔشغیط قیء ‪٘ ،‬بْ یىؿب٘ی ثب ٔشغیط والؼ زاقش‪ ٝ‬ثبقس‬
‫‪ٔ ،‬شغیط والؼ ضا ذ‪ٛ‬ا‪ٞ‬س د‪ٛ‬قب٘س ! زض یه ٔشس اظ قیء ‪ ،‬ثب اؾشفبز‪ ٜ‬اظ ٘كبٖ ‪ self.name‬ث‪ٔ ٝ‬شغیط قیء ‪name‬‬
‫ضػ‪ٛ‬ع ٔی و‪ٙ‬یٓ ‪ .‬سفب‪ٚ‬ر ؾبز‪ ٜ‬ثیٗ ٔشغیط‪ٞ‬بی والؼ ‪ٔ ٚ‬شغیط‪ٞ‬بی قیء ضا ث‪ ٝ‬ذبَط ثؿذبضیس ‪.‬‬

‫ٔكرم ‪ٞ‬ؿز و‪ٔ ٝ‬شس __‪ __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‬بٔیس‪ٔ ٜ‬ی ق‪٘ٛ‬س ‪.‬‬

‫حبال ٔب ایٗ ٔظبَ ضا ثؼ‪ٛٙ‬اٖ یه ثط٘بٔ‪ ٝ‬ذ‪ٛ‬ا‪ٞ‬یٓ زیس ‪.‬‬

‫ثِ کبرگیزی ٍراثت‬

‫هثبل ‪ .11.5‬استفبدُ اس ٍراثت‬

‫‪#!/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

t = Teacher('Mrs. Shrividya', 40, 30000)


s = Student('Swaroop', 22, 75)

print # prints a blank line

members = [t, s]
for member in members:

@PythonForever
‫‪member.tell() # works for both Teachers and‬‬
‫‪Students‬‬

‫خزٍجی‬

‫‪$ python inherit.py‬‬


‫)‪(Initialized SchoolMember: Mrs. Shrividya‬‬
‫)‪(Initialized Teacher: Mrs. Shrividya‬‬
‫)‪(Initialized SchoolMember: Swaroop‬‬
‫)‪(Initialized Student: Swaroop‬‬
‫"‪Name:"Mrs. Shrividya" Age:"40" Salary: "30000‬‬
‫"‪Name:"Swaroop" Age:"22" Marks: "75‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫ثطای اؾشفبز‪ ٜ‬اظ ‪ٚ‬ضاطز ‪ٔ ،‬ب ٘بْ ‪ٞ‬بی والؼ دبی‪ ٝ‬ضا زض یه چ‪ٙ‬سسبیی ث‪ ٝ‬ز٘جبَ ٘بْ والؼ زض سؼطیف والؼ ٔكرم‬
‫ٔی و‪ٙ‬یٓ ‪ .‬ؾذؽ ‪ٔ ،‬كب‪ٞ‬س‪ٔ ٜ‬ی و‪ٙ‬یٓ و‪ٔ ٝ‬شس __‪__init‬اظ والؼ دبی‪ ٝ‬ثب اؾشفبز‪ ٜ‬اظ ٔشغیط ‪ self‬ثُ‪ٛ‬ض نطیح‬
‫فطاذ‪ٛ‬ا٘ی ٔی ق‪ٛ‬ز ‪ ،‬ثسیٗ سطسیت و‪ٔ ٝ‬مسٔبر ا‪ِٚ‬ی‪ ٝ‬والؼ دبی‪ ٝ‬ضا و‪ ٝ‬ثركی اظ قیء اؾز ا٘ؼبْ ٔی ز‪ٞ‬یٓ ‪ .‬ایٗ‬
‫ثؿیبض ٔ‪ ٟٓ‬اؾز و‪ ٝ‬ث‪ ٝ‬ذبَط زاقش‪ ٝ‬ثبقیٓ و‪ ٝ‬دبیش‪ ٖٛ‬ثُ‪ٛ‬ض ذ‪ٛ‬زوبض ؾبظ٘س‪ ٜ‬ی والؼ دبی‪ ٝ‬ضا فطاذ‪ٛ‬ا٘ی ٕ٘ی و‪ٙ‬س ‪،‬‬
‫‪ ٚ‬قٕب ٔی ثبیؿز ثُ‪ٛ‬ض نطیح آٖ ضا ثطای ذ‪ٛ‬زسبٖ نسا ثع٘یس ‪.‬‬

‫‪ٕٞ‬چ‪ٙ‬یٗ ٔی ثی‪ٙ‬یٓ و‪ ٝ‬فطاذ‪ٛ‬ا٘ی ٔشس‪ٞ‬بی والؼ دبی‪ ٝ‬زض ظیطوالؼ ‪ٞ‬ب ثب دیك‪٘ٛ‬س ٘بْ والؼ دبی‪ٕٞ ٝ‬طا‪ ٜ‬ثب اؾٓ ٔشس‬
‫آٖ ‪ ٚ‬ؾذؽ فطؾشبزٖ ٔشغیط ‪ self‬ثؼ‪ٛٙ‬اٖ ا‪ِٚ‬یٗ آضٌ‪ٔٛ‬بٖ زض و‪ٙ‬بض زیٍطآضٌ‪ٔٛ‬بٖ ‪ٞ‬ب ن‪ٛ‬ضر ٔی ٌیطز ‪.‬‬

‫س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ٍٙٞ ،ٝ‬بٔیى‪ٔ ٝ‬شس ‪ Tell‬اظ والؼ ‪ SchoolMember‬ضا ث‪ ٝ‬وبض ٔی ثطیٓ ثب ٕ٘‪ٞ ٝ٘ٛ‬بیی اظ‬
‫‪ٔStudent ٚTeacher‬ی س‪ٛ‬ا٘یٓ ‪ٕٞ‬بٖ َ‪ٛ‬ضی ضفشبض و‪ٙ‬یٓ و‪ ٝ‬ثب ٕ٘‪ٞ ٝ٘ٛ‬بی ‪ SchoolMember‬ضفشبض ٔی و‪ٙ‬یٓ‬
‫‪.‬‬

‫‪ٕٞ‬چ‪ٙ‬یٗ ‪ ،‬ض‪ٚ‬قٗ ‪ٞ‬ؿز و‪ٔ ٝ‬شس ‪ Tell‬اظ ظیط٘‪ٛ‬ع نسا ظز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ٔ ٝ٘ ٚ‬شس ‪Tell‬اظ والؼ ‪SchoolMember‬‬
‫‪ .‬یه ضا‪ ٜ‬ثطای زضن ایٗ ُّٔت ‪ ،‬ایٗ اؾز و‪ ٝ‬دبیش‪ٕٞ ٖٛ‬یك‪ ٝ‬قط‪ٚ‬ع ػؿشؼ‪ ٛ‬ثطای ٔشس‪ٞ‬ب ضا زض ٘‪ٛ‬ػی (والؾی) و‪ٝ‬‬
‫زض آٖ ‪ٞ‬ؿز آغبظ ٔی و‪ٙ‬س ‪ ،‬ؾذؽ اٌط ٘ش‪ٛ‬ا٘س ٔشس ٔ‪ٛ‬ضز ٘ظط ضا زض آٖ ٘‪ٛ‬ع (والؼ) دیسا و‪ٙ‬س ‪ ،‬ازأ‪ ٝ‬ػؿشؼ‪ ٛ‬ضا زض‬
‫ٔشس‪ٞ‬بی ٔشؼّك ث‪ ٝ‬والؼ ‪ٞ‬بی دبی‪ ٝ‬اـ قط‪ٚ‬ع ٔی و‪ٙ‬س ‪ ،‬ثه‪ٛ‬ضر یىی یىی ‪ ٚ‬ث‪ ٝ‬سطسیجی و‪ ٝ‬زض چ‪ٙ‬سسبیی زض سؼطیف‬
‫والؼ ٔكرم قس‪ ٜ‬ا٘س ‪.‬‬

‫‪@PythonForever‬‬
‫٘ىش‪ ٝ‬ایی زض ٔ‪ٛ‬ضز یه انُالح – اٌط زض ظٔبٖ سؼطیف اضص ثطی ‪ ،‬ثیف اظ یه والؼ زض چ‪ٙ‬سسبیی اضص ثطی‬
‫ف‪ٟ‬طؾز قس‪ ٜ‬ثبقس ‪ ،‬آٖ ضا ‪ٚ‬ضاطز چ‪ٙ‬سٌب٘‪ٔ( multiple inheritance ) ٝ‬ی ٘بٔ‪ٙ‬س ‪.‬‬

‫خالصِ‬

‫ٔب او‪ٔ ٖٛٙ‬فب‪ٞ‬یٓ ٔش‪ٛٙ‬ػی اظ والؼ ‪ٞ‬ب ‪ ٚ‬اقیبء ‪ٕٞ ٚ‬یٗ َ‪ٛ‬ض انُالحبر ٌ‪٘ٛ‬بٌ‪ٔ ٖٛ‬طث‪ ٌٛ‬ث‪ ٝ‬آ٘‪ٟ‬ب ضا ٔ‪ٛ‬ضز ثطضؾی‬
‫لطاض زازیٓ ‪ٕٞ .‬چ‪ٙ‬یٗ ٔعایب ‪ٔ ٚ‬ؼبیت ثط٘بٔ‪ٛ٘ ٝ‬یؿی قیء ٌطا ضا زیسیٓ ‪ .‬دبیش‪ ٖٛ‬ل‪ٛ‬یبً قیء ٌطا ‪ ٚ‬لبثُ ف‪ ٟٓ‬اؾز ‪.‬‬
‫ایٗ ٔفب‪ٞ‬یٓ ثُ‪ٛ‬ض لبثُ ٔالحظ‪ ٝ‬ایی زض ػبی ذ‪ٛ‬زـ ث‪ ٝ‬قٕب وٕه ثیكشطی ذ‪ٛ‬ا‪ٞ‬س وطز ‪.‬‬

‫زض فهُ ثؼسی ‪ ،‬زضثبض‪ٛٔ ٜ‬اػ‪ ٟٝ‬ثب ‪ٚ‬ض‪ٚ‬زی ‪ /‬ذط‪ٚ‬ػی ‪ ٚ‬چٍ‪ٍ٘ٛ‬ی زؾشطؾی ث‪ ٝ‬فبیُ ‪ٞ‬ب زض دبیش‪ ٖٛ‬ذ‪ٛ‬ا‪ٞ‬یٓ آٔ‪ٛ‬ذز ‪.‬‬

‫کتبة یک ثبیت اس پبیتَى‪.‬فصل دٍاسدّن‪ٍ.‬رٍدی‪/‬خزٍجی‬

‫فْزست هٌذرجبت‬

‫‪ٚ 1‬ض‪ٚ‬زی ‪ /‬ذط‪ٚ‬ػی‬ ‫‪‬‬

‫‪ 2‬فبیُ ‪ٞ‬ب‬ ‫‪‬‬

‫‪Pickle 3‬‬ ‫‪‬‬

‫‪ 4‬ذالن‪ٝ‬‬ ‫‪‬‬

‫ٍرٍدی ‪ /‬خزٍجی‬

‫ثؿیبضی اظ ا‪ٚ‬لبر ‪ٞ‬ؿز و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ٞ‬یس ثط٘بٔ‪ ٝ‬سبٖ ثب وبضثط سؼبُٔ زاقش‪ ٝ‬ثبقس (و‪ٔ ٝ‬ی س‪ٛ‬ا٘س ثب ذ‪ٛ‬زسبٖ ثبقس ) ‪.‬‬
‫ٔی ذ‪ٛ‬ا‪ٞ‬یس و‪ٚ ٝ‬ض‪ٚ‬زی ایی اظ وبضثط ثٍیطز ‪ٚ‬ؾذؽ ٘شبیؼی ضا ثطٌطزا٘س‪ٚ ٜ‬چبح و‪ٙ‬س ‪ٔ .‬ب ٔی س‪ٛ‬ا٘یٓ ث‪ ٝ‬ایٗ ذ‪ٛ‬اؾش‪ٝ‬‬
‫‪ٞ‬ب ث‪ ٝ‬سطسیت ثب زؾش‪ٛ‬ضار ‪ print ٚ raw_input‬ثطؾیٓ ‪ٕٞ .‬چ‪ٙ‬یٗ ثطای ذط‪ٚ‬ػی ‪ٔ ،‬ی س‪ٛ‬ا٘یٓ اظ ٔشس‪ٞ‬بی ٌ‪٘ٛ‬بٌ‪ٖٛ‬‬
‫والؼ )‪ str(string‬اؾشفبز‪ ٜ‬ثجطیٓ ‪ .‬ثطای ٔظبَ ‪ ،‬قٕب ٔی س‪ٛ‬ا٘یس اظ ٔشس ‪ rjust‬ثطای س‪ٙ‬ظیٓ ضاؾز چیٗ قسٖ یه‬
‫ضقش‪ ٝ‬ثب ػطو ٔكرم ‪ ،‬ث‪ٟ‬ط‪ ٜ‬ثجطیس ‪ .‬ثطای ػعئیبر ثیكشط )‪ help(str‬ضا ٔالحظ‪ ٝ‬و‪ٙ‬یس ‪.‬‬

‫زیٍط ض‪ٚ‬ـ ضایغ زض ‪ٚ‬ض‪ٚ‬زی ‪ /‬ذط‪ٚ‬ػی ‪ٛٔ ،‬اػ‪ ٟٝ‬ثب فبیُ ‪ٞ‬بؾز ‪ .‬س‪ٛ‬ا٘بیی ذ‪ٛ‬ا٘سٖ ‪ٛ٘ ٚ‬قشٗ فبیُ ‪ٞ‬ب ‪ ،‬ثطای اوظط‬
‫ثط٘بٔ‪ٞ ٝ‬ب يط‪ٚ‬ضی ؾز ‪ٔ ٚ‬ب ٔی ذ‪ٛ‬ا‪ٞ‬یٓ زض ایٗ فهُ آٖ ضا قطح ز‪ٞ‬یٓ‪.‬‬

‫‪@PythonForever‬‬
‫فبیل ّب‬

‫ ضا‬file ‫اٖ اثشسا یه قیء اظ والؼ‬ٛ‫قشٗ ٔی س‬ٛ٘ ‫ یب‬ٚ ٖ‫ا٘س‬ٛ‫ب ثطای ذ‬ٞ ُ‫ وطزٖ اظ فبی‬ٜ‫ اؾشفبز‬ٚ ٖ‫ثطای ثبظوطز‬
، ‫س‬ٙ‫ؿش‬ٞ ‫ب‬ٞ ُ‫قشٗ زض فبی‬ٛ٘ ٚ ٖ‫ا٘س‬ٛ‫ ٔرشم ذ‬ٝ‫ و‬write ‫ یب‬ٚreadline ، read ‫بی‬ٞ‫ ؾذؽ اظ ٔشس‬ٚ ‫ایؼبز وطز‬
ُ‫ قٕب زض حیٗ ثبظوطزٖ فبی‬ٝ‫ ُٔسی ؾز و‬ٝ‫ٌ ث‬ٛٙٔ ‫ب‬ٞ ُ‫قشٗ زض فبی‬ٛ٘ ‫ یب‬ٚ ٖ‫ا٘س‬ٛ‫ا٘بیی ذ‬ٛ‫ س‬. ‫وٕه ٌطفز‬
‫ ضا نسا ٔی‬file ‫ اظ والؼ‬close ‫ ٔشس‬،‫ز‬ٛ‫ وبضسبٖ ثب فبیُ سٕبْ ٔی ق‬ٝ‫ٍبٔیى‬ٙٞ ، ‫بیز‬ٟ٘ ‫ زض‬ٚ . ‫ ایس‬ٜ‫ٔكرم وطز‬
. ‫ اؾز‬ٜ‫ دبیبٖ ضؾیس‬ٝ‫ وبضسبٖ ثب فبیُ ث‬ٝ‫ئیس و‬ٍٛ‫ٖ ث‬ٛ‫ دبیش‬ٝ‫ظ٘یس سب ث‬

‫ثِ کبرگیزی فبیل‬

‫ استفبدُ اس فبیل ّب‬.12.1 ‫هثبل‬

#!/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!
'''

f = file('poem.txt', 'w') # open for 'w'riting


f.write(poem) # write text to file
f.close() # close the file

f = file('poem.txt') # if no mode is specified, 'r'ead


mode is assumed by default
while True:
line = f.readline()
if len(line) == 0: # Zero length indicates EOF
break
print line, # Notice comma to avoid automatic
newline added by Python
f.close() # close the file

@PythonForever
‫خزٍجی‬

‫‪$ python using_file.py‬‬


‫‪Programming is fun‬‬
‫‪When the work is done‬‬
‫‪if you wanna make your work also fun:‬‬
‫!‪use Python‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض اثشسا ‪ٔ ،‬ب یه ٕ٘‪ ٝ٘ٛ‬اظ والؼ ‪ file‬ضا ثب ٔكرم وطزٖ ٘بْ فبیُ ‪ُٔ ٚ‬سی و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ٞ‬یٓ فبیُ ثبظ ق‪ٛ‬ز ‪ ،‬ایؼبز‬
‫ٕ٘‪ٛ‬زیٓ ‪ُٔ .‬س ٔی س‪ٛ‬ا٘س ٔمبزیط ) '‪ ( 'r‬ثطای ذ‪ٛ‬ا٘سٖ ‪( 'w' ) ،‬ثطای ٘‪ٛ‬قشٗ ‪ ٚ‬یب ) '‪ ( 'a‬ثطای ايبف‪ ٝ‬وطزٖ ث‪ ٝ‬فبیُ ضا‬
‫)‪ ، help(file‬ػعئیبر‬ ‫زاقش‪ ٝ‬ثبقس ‪ .‬ثبیس ٌفز و‪ ٝ‬زض ‪ٚ‬الغ ُٔس‪ٞ‬بی ثیكشطی ٘یع زض زؾشطؼ ‪ٞ‬ؿش‪ٙ‬س ‪ ،‬زؾش‪ٛ‬ض‬
‫ثیكشطی زضایٗ ثبض‪ ٜ‬ث‪ ٝ‬قٕب ذ‪ٛ‬ا‪ٞ‬س زاز ‪.‬‬

‫ٔب زض اثشسا ‪ ،‬فبیُ ضا زض ُٔس ٘‪ٛ‬قشٗ ثبظوطزیٓ ‪ ٚ ،‬ؾذؽ اظ ٔشس ‪ write‬اظ والؼ ‪ file‬ثطای ٘‪ٛ‬قشٗ زض فبیُ اؾشفبز‪ٜ‬‬
‫وطزیٓ ‪ ٚ‬دؽ اظ آٖ زض ٘‪ٟ‬بیز فبیُ ضا ثؿشیٓ ‪.‬‬

‫ؾذؽ ‪ ،‬ثبض زیٍطی ‪ٕٞ‬بٖ فبیُ ضا ثطای ذ‪ٛ‬ا٘سٖ ثبظ وطزیٓ ‪ .‬اٌط و‪ٔ ٝ‬ب ُٔس فبیُ ضا ٔكرم ٘ى‪ٙ‬یٓ ‪ ،‬ثُ‪ٛ‬ض دیف‬
‫فطو ُٔس فبیُ ثط‪ٚ‬ی حبِز ذ‪ٛ‬ا٘سٖ لطاض ٔی ٌیطز ‪ٞ .‬ط ذٍ اظ فبیُ ضا زض یه حّم‪ ٝ‬ثب اؾشفبز‪ ٜ‬اظ ٔشس ‪readline‬‬
‫ذ‪ٛ‬ا٘سیٓ ‪ ،‬ایٗ ٔشس یه ذٍ وبُٔ ‪ ،‬قبُٔ وبضوشط ذٍ ػسیس و‪ ٝ‬زض ا٘ش‪ٟ‬بی ‪ٞ‬ط ذٍ ‪ٞ‬ؿز ضا ثطٔی ٌطزا٘س ‪ .‬ذت‬
‫‪ٚ‬لشی و‪ ٝ‬یه ضقش‪ ٝ‬ذبِی ثطٌكز زاز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ٔ ،‬كرم ٔی و‪ٙ‬س و‪ ٝ‬ث‪ ٝ‬دبیبٖ فبیُ ضؾیس‪ ٜ‬ایٓ ‪ ٚ‬زض٘شیؼ‪ٝ‬‬
‫چطذف زض حّم‪ ٝ‬ضا ٔش‪ٛ‬لف ٔی و‪ٙ‬یٓ ‪.‬‬

‫زلز و‪ٙ‬یس و‪ٔ ٝ‬ب اظ یه ‪ٚ‬یطٌ‪ َٛ‬زض زؾش‪ٛ‬ض ‪print‬اؾشفبز‪ ٜ‬وطزیٓ سب اظ ايبف‪ ٝ‬وطزٖ ذٍ ػسیسی و‪ ٝ‬زؾش‪ٛ‬ض ‪print‬‬
‫ثه‪ٛ‬ضر ذ‪ٛ‬زوبض چبح ٔی و‪ٙ‬س ػّ‪ٌٛ‬یطی و‪ٙ‬س ‪ ،‬چطا و‪ ٝ‬ذُی و‪ ٝ‬اظ فبیُ ذ‪ٛ‬ا٘س‪ٔ ٜ‬ی ق‪ٛ‬ز ذ‪ٛ‬ز زاضای وبضاوشط ذٍ‬
‫ػسیس زض ا٘ش‪ٟ‬بی آٖ ‪ٞ‬ؿز ‪ ،‬ؾذؽ زض ٘‪ٟ‬بیز فبیُ ضا ٔی ث‪ٙ‬سیٓ ‪.‬‬

‫او‪ٔ ، ٖٛٙ‬حش‪ٛ‬ای فبیُ ‪ poem.txt‬ضا ثجی‪ٙ‬یس سب ٔ‪ٛ‬ػ‪ ٝ‬ثك‪ٛ‬یس و‪ ٝ‬ثط٘بٔ‪ٚ ٝ‬الؼب ثسضؾشی وبض ٔی و‪ٙ‬س ‪.‬‬

‫‪Pickle‬‬

‫دبیش‪ٔ ٖٛ‬بغ‪ َٚ‬اؾشب٘ساضی ث‪٘ ٝ‬بْ ‪ pickle‬اضائ‪ٔ ٝ‬ی ز‪ٞ‬س و‪ ٝ‬ثب اؾشفبز‪ ٜ‬اظ آٖ ٔی س‪ٛ‬ا٘یس ‪ٞ‬ط قیء ایی اظ دبیش‪ ٖٛ‬ضا زض‬
‫یه فبیُ شذیط‪ٕٛ٘ ٜ‬ز‪ ٚ ٜ‬ؾذؽ ثؼس‪ٞ‬ب ثس‪ ٖٚ‬و‪ٛ‬چه سطیٗ وٓ ‪ ٚ‬وبؾشی ث‪ ٝ‬آٖ زؾشطؾی دیسا و‪ٙ‬یس ‪ .‬و‪ ٝ‬ث‪ ٝ‬ایٗ‬
‫ػُٕ شذیط‪ ٜ‬ؾبظی دبیساض قیء ٘بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬

‫‪@PythonForever‬‬
‫بی‬ٙ‫ اؾشظ‬ٝ‫ ث‬، ‫س‬ٞ‫ ضا ا٘ؼبْ ٔی ز‬Pickle َٚ‫ٕبٖ ػُٕ ٔبغ‬ٞ ‫ زلیمب‬ٝ‫ؿز و‬ٞ ٓٞ cPickle ْ‫ ٘ب‬ٝ‫َ زیٍطی ث‬ٚ‫ٔبغ‬
‫ب‬ٞ َٚ‫ی ایٗ ٔبغ‬ٚ‫ط ز‬ٞ ‫ا٘یس اظ‬ٛ‫ قٕب ٔی س‬. ‫(ثطاثط) ؾطیؼشطؾز‬1000 ٝ‫ زض٘شیؼ‬ٚ ‫ اؾز‬ٜ‫ قس‬ٝ‫قش‬ٛ٘ C ٖ‫ ثب ظثب‬ٝ‫ى‬ٙ‫ای‬
ٝ‫ ٔب ث‬ٝ‫ ثبقیس و‬ٝ‫ ذبَط زاقش‬ٝ‫ ث‬. ‫یٓ وطز‬ٞ‫ا‬ٛ‫ ذ‬ٜ‫ اؾشفبز‬cPickle َٚ‫ؼب اظ ٔبغ‬ٙ‫ ٔب زض ای‬ٝ‫س و‬ٙ‫طچ‬ٞ ، ‫یس‬ٙ‫ و‬ٜ‫اؾشفبز‬
. ٓ‫ی‬ٙ‫ ٔی و‬ٜ‫اقبض‬pickle َٚ‫ اؾٓ ٔبغ‬ٝ‫ب ثطای ؾبزٌی ث‬ٞ َٚ‫ی ایٗ ٔبغ‬ٚ‫طز‬ٞ

Unpickling ٍPickling

Unpickling ٍ . Pickling 12.2 ‫هثبل‬

#!/usr/bin/python
# Filename: pickling.py

import cPickle as p
#import pickle as p

shoplistfile = 'shoplist.data' # the name of the file


where we will store the object

shoplist = ['apple', 'mango', 'carrot']

# Write to the file


f = file(shoplistfile, 'w')
p.dump(shoplist, f) # dump the object to a file
f.close()

del shoplist # remove the shoplist

# Read back from the storage


f = file(shoplistfile)
storedlist = p.load(f)
print storedlist

: ‫خزٍجی‬

$ python pickling.py
['apple', 'mango', 'carrot']

@PythonForever
‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض اثشسا ‪ ،‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ٔ ٝ‬ب اظ ضؾٓ اِرٍ ‪ import .. as‬اؾشفبز‪ ٜ‬وطزیٓ ‪ .‬چطا و‪ ٝ‬اؾشفبز‪ ٜ‬اظ یه ٘بْ و‪ٛ‬سب‪ ٜ‬سط‬
‫ثطای یه ٔبغ‪ ، َٚ‬ثبػض آؾبٖ قسٖ سبیخ ‪ٞ‬بی ثؼسی زض ثط٘بٔ‪ٔ ٝ‬ی ق‪ٛ‬ز ‪ ٚ. ،‬زض ایٗ ٔ‪ٛ‬ضز ‪ ،‬حشی ثبػض ٔی ق‪ٛ‬ز‬
‫و‪ٔ ٝ‬ب ثش‪ٛ‬ا٘یٓ ثیٗ ٔبغ‪ٞ َٚ‬بی ٔشفب‪ٚ‬ر ‪ ٚ (Pickle‬یب ) ‪ cPickle‬س‪ٟٙ‬ب ثب سغییط زازٖ یه ذٍ ؾ‪ٛ‬ئیچ و‪ٙ‬یٓ ! ‪ ،‬زض‬
‫ٔبثمی ثط٘بٔ‪ٔ ٝ‬ب ث‪ ٝ‬ؾبزٌی ثب حطف ‪p‬ث‪ ٝ‬ایٗ ٔبغ‪ َٚ‬ضػ‪ٛ‬ع ٔی و‪ٙ‬یٓ ‪.‬‬

‫ثطای شذیط‪ ٜ‬وطزٖ یه قیء زض یه فبیُ ‪ ،‬زض اثشسا یه قیء فبیُ ضا زض حبِز ٘‪ٛ‬قشٗ ثبظ ٔی و‪ٙ‬یٓ ‪ ٚ‬ؾذؽ‬
‫قیء ٔ‪ٛ‬ضز ٘ظطضا ثب فطاذ‪ٛ‬ا٘ی سبثغ ‪ dump‬اظ ٔبغ‪ ، pickle َٚ‬زض زاذُ فبیُ ثبظ قس‪ٔ ٜ‬ی ٘‪ٛ‬یؿیٓ ‪ ،‬ایٗ فطآی‪ٙ‬س‬
‫‪٘pickling‬بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬

‫ؾذؽ ‪ ،‬قیء ٔ‪ٛ‬ضز ٘ظط ضا ثب اؾشفبز‪ ٜ‬اظ سبثغ ‪ load‬اظ ٔبغ‪ pickle َٚ‬و‪ ٝ‬قیء ضا ثطٔی ٌطزا٘س ثبظیبثی ٔی و‪ٙ‬یٓ ‪،‬‬
‫ایٗ فطآی‪ٙ‬س ‪٘unpickling‬بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬

‫خالصِ‬

‫ٔب زضثبض‪ ٜ‬ض‪ٚ‬ـ ‪ٞ‬بی ٌ‪٘ٛ‬بٌ‪٘ٛ‬ی اظ ‪ٚ‬ض‪ٚ‬زی ‪ /‬ذط‪ٚ‬ػی ‪ٕٞ ٚ‬چ‪ٙ‬یٗ ازاض‪ ٜ‬وطزٖ فبیُ ‪ ٚ‬اؾشفبز‪ ٜ‬اظ ٔبغ‪ pickle َٚ‬ثحض‬
‫وطزیٓ ‪.‬‬

‫زض فهُ ثؼسی ‪ٔ ،‬فب‪ٞ‬یٓ ٔطث‪ ٌٛ‬ث‪ ٝ‬اؾشظ‪ٙ‬بء ‪ٞ‬ب ضا قطح ذ‪ٛ‬ا‪ٞ‬یٓ زاز ‪.‬‬

‫کتبة یک ثبیت اس پبیتَى‪.‬فصل سیشدّن‪.‬استثٌبءّب‬

‫فْزست هٌذرجبت‬

‫‪ 1‬اؾشظ‪ٙ‬بء ‪ٞ‬ب‬ ‫‪‬‬

‫‪ 2‬ذُب‪ٞ‬ب‬ ‫‪‬‬

‫‪Try..Except 3‬‬ ‫‪‬‬

‫‪ 4‬ازاض‪ ٜ‬وطزٖ اؾشظ‪ٙ‬بء ‪ٞ‬ب‬ ‫‪‬‬

‫‪ 5‬ثطاٍ٘یرشٗ اؾشظ‪ٙ‬بء ‪ٞ‬ب‬ ‫‪‬‬

‫‪Try..Finaly 6‬‬ ‫‪‬‬

‫‪ 7‬ذالن‪ٝ‬‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫استثٌبء ّب‬

‫اؾشظ‪ٙ‬بء ‪ٞ‬ب ظٔب٘یى‪ ٝ‬یه ‪ٚ‬يؼیز غیطػبزی ‪ ٚ‬اؾشظ‪ٙ‬بیی زض ثط٘بٔ‪ ٝ‬ضخ ٔی ز‪ٞ‬س‪ ،‬اسفبق ٔی افش‪ٙ‬س ‪ .‬ثطای ٔظبَ ‪ ،‬اٌط‬
‫قٕب ثر‪ٛ‬ا‪ٞ‬یس فبیّی ضا ثر‪ٛ‬ا٘یس و‪ ٝ‬آٖ فبیُ ‪ٚ‬ػ‪ٛ‬ز ٘ساضز چ‪ٔ ٝ‬ی ق‪ٛ‬ز ؟ ‪ ٚ‬یب ‪ٚ‬لشی و‪ ٝ‬ثُ‪ٛ‬ض سهبزفی آٖ فبیُ ضا زض‬
‫استثٌبء ّب‬ ‫ظٔب٘ی و‪ ٝ‬ثط٘بٔ‪ ٝ‬زض حبَ اػطا ث‪ٛ‬ز‪ ٜ‬اؾز حصف وطز‪ ٜ‬ایس ؟ چ‪ٙ‬یٗ قطایُی ث‪ٛ‬ؾیّ‪ ٝ‬ی‬
‫)‪(exceptions‬ازاض‪ٔ ٜ‬ی ق‪٘ٛ‬س ‪.‬‬

‫اٌط ثط٘بٔ‪ ٝ‬ی قٕب زاضای ثطذی زؾش‪ٛ‬ضار ٘بٔؼشجطثبقس چُ‪ٛ‬ض ؟ زضایٗ حبِز ث‪ٛ‬ؾیّ‪ ٝ‬ی دبیش‪ ٖٛ‬ازاض‪ٔ ٜ‬ی ق‪ٛ‬ز و‪ٝ‬‬
‫زؾشب٘ف ضا ثّ‪ٙ‬س )‪ٔ (raise‬ی و‪ٙ‬س ‪ ٚ‬ث‪ ٝ‬قٕب ٔی ٌ‪ٛ‬یس و‪ ٝ‬یه ذُب )‪ٚ(error‬ػ‪ٛ‬ز زاضز ‪.‬‬

‫خطبّب‬

‫یه زؾش‪ٛ‬ض ؾبز‪ ٜ‬ی ‪ print‬ضا زض ٘ظط ثٍیطیس ‪ .‬اٌط ٔب ث‪ ٝ‬ػبی ‪ print‬اقشجب‪ٞ‬ب ث‪ٛٙ‬یؿیٓ ‪ Print‬چ‪ٔ ٝ‬ی ق‪ٛ‬ز ؟ ث‪ٝ‬‬
‫حطف ثعضي ‪ P‬زض زؾش‪ٛ‬ض ‪print‬زلز و‪ٙ‬یس ‪ .‬زض ایٗ ٔ‪ٛ‬ضز ‪ ،‬دبیش‪ ٖٛ‬یه ذُبی ٘ح‪ٛ‬ی )‪ (syntax error‬ضا‬
‫ثطدب ) )‪ٔraise‬ی و‪ٙ‬س ‪.‬‬

‫'‪>>> Print 'Hello World‬‬


‫‪File "<stdin>", line 1‬‬
‫'‪Print 'Hello World‬‬
‫^‬
‫‪SyntaxError: invalid syntax‬‬

‫'‪>>> print 'Hello World‬‬


‫‪Hello World‬‬

‫زض ایٗ ٔظبَ ‪ٚ‬ايح اؾز و‪ ٝ‬یه ذُبی ٘ح‪ٛ‬ی )‪ (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

‫ ادارُ کزدى استثٌبء ّب‬. 13.1 ‫هثبل‬

#!/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
‫خزٍجی‬

‫‪$ python try_except.py‬‬


‫>‪Enter something --‬‬
‫?‪Why did you do an EOF on me‬‬

‫‪$ python try_except.py‬‬


‫!‪Enter something --> Python is exceptional‬‬
‫‪Done‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض ایٗ ٔظبَ ‪ٔ ،‬ب سٕبٔی زؾش‪ٛ‬ضاسی ضا و‪ ٝ‬أىبٖ ثطذبؾشٗ ذُب زض آٖ ‪ٞ‬ب ‪ٞ‬ؿز ضا زض زاذُ ثالن ‪ try‬لطاض زازیٓ ‪ٚ‬‬
‫ؾذؽ سٕبٔی ذُب‪ٞ‬ب ‪ ٚ‬اؾشظ‪ٙ‬بء ‪ٞ‬ب ضا زض زاذُ ثّ‪ٛ‬ن ‪/‬ػجبضر ِ ‪ except‬ازاض‪ ٜ‬وطزیٓ ‪ .‬ػجبضر ‪ٔ except‬ی س‪ٛ‬ا٘س‬
‫یه ذُب ‪ ٚ‬یب اؾشظ‪ٙ‬بء ٔكرم قس‪ٔ ٜ‬ؼطز ضا ‪ ٚ‬یب یه ِیؿشی دطا٘شعی اظ اؾشظ‪ٙ‬بء ‪ٞ‬ب ‪ ٚ‬ذُب‪ٞ‬ب ضا ازاض‪ ٜ‬و‪ٙ‬س ‪ .‬اٌط‬
‫٘بٔی اظ ذُب ‪ٞ‬ب ‪ ٚ‬یب اؾشظ‪ٙ‬بء ‪ٞ‬ب زض ػّ‪ٛ‬ی ػجبضر ‪ except‬آ‪ٚ‬ضز‪٘ ٜ‬كس‪ ٜ‬ثبقس ‪،‬آٖ ٌب‪ ٜ‬ػجبضر ‪ except‬سٕبْ ذُب‪ٞ‬ب‬
‫‪ ٚ‬اؾشظ‪ٙ‬بء ‪ٞ‬ب ضا ازاض‪ ٜ‬ذ‪ٛ‬ا‪ٞ‬س وطز ‪ .‬حسالُ ث‪ ٝ‬اظی ‪ٞ‬ط ػجبضر ‪ try‬یه ػجبضر ‪ٔ except‬ی ثبیؿز ٔكرم قس‪ٜ‬‬
‫ثبقس ‪.‬‬

‫اٌط و‪ٞ ٝ‬ط ذُب ‪ ٚ‬یب اؾشظ‪ٙ‬بیی ازاض‪٘ ٜ‬كس‪ ٜ‬ثبقس ‪ ،‬آٖ ٌب‪ ٜ‬ازاض‪ ٜ‬و‪ٙٙ‬س‪ ٜ‬دیف فطو دبیش‪ ٖٛ‬نسا ظز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ ٚ‬ثبػض‬
‫ٔی ق‪ٛ‬ز و‪ ٝ‬اؾشظ‪ٙ‬بء ی ثط٘بٔ‪ٔ ٝ‬ش‪ٛ‬لف ق‪ٛ‬ز ‪ ٚ‬دیغبٔی چبح ق‪ٛ‬ز ‪ٕٞ ،‬بٖ َ‪ٛ‬ضی و‪ ٝ‬ایٗ ُّٔت ضا زض ػُٕ ٔكب‪ٞ‬س‪ٜ‬‬
‫وطز‪ ٜ‬ث‪ٛ‬زیٓ ‪.‬‬

‫‪ٕٞ‬چ‪ٙ‬یٗ ٔی س‪ٛ‬ا٘یٓ یه ػجبضر ‪٘ else‬یع ثب ثالن ‪ٔ try..ecxept‬كرم و‪ٙ‬یٓ ‪ .‬ػجبضر ‪ else‬ظٔب٘یى‪ ٝ‬اؾشظ‪ٙ‬بیی‬
‫ض‪ٚ‬ی ٘س‪ٞ‬س ‪ ،‬اػطا ٔی ق‪ٛ‬ز ‪.‬‬

‫ٔب ‪ٕٞ‬چ‪ٙ‬یٗ ٔی س‪ٛ‬ا٘یٓ یه قیء اظ ٘‪ٛ‬ع اؾشظ‪ٙ‬بء ضا ایؼبز و‪ٙ‬یٓ ‪ ،‬اظ ای‪ٙ‬ط‪ ٚ‬و‪ ٝ‬اَالػبر ايبفی سطی زض ذه‪ٛ‬ل‬
‫اؾشظ‪ٙ‬بیی و‪ ٝ‬ض‪ٚ‬ی زاز‪ ٜ‬اؾز ثسؾز آ‪ٚ‬ضیٓ ‪ .‬ایٗ ُّٔت زض ٔظبَ ثؼسی ٘كبٖ زاز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬

‫ثزاًگیختي استثٌبء ّب‬

‫قٕب ٔی س‪ٛ‬ا٘یس ثب اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض ‪ raise‬یه اؾشظ‪ٙ‬بء ضا ثطاٍ٘یعیس ‪ٕٞ(raise) .‬چ‪ٙ‬یٗ ٔی ثبیؿز ثؼس اظ آٖ ٘بْ‬
‫ذُب ‪ ٚ‬یب اؾشظ‪ٙ‬بء ‪ ٚ‬یب قیء اؾشظ‪ٙ‬بیی و‪ ٝ‬دطسبة قس‪ ٜ‬اؾز ضا زض ػّ‪ٛ‬ی اؾشظ‪ٙ‬بء ٔكرم و‪ٙ‬یس ‪ .‬ایٗ ذُب ‪ ٚ‬یب‬

‫‪@PythonForever‬‬
‫ض‬ُٛ‫ یب ث‬ٚ ٓ‫ض ٔؿشمی‬ُٛ‫ ث‬ٝ‫ ٔی ثبیؿز والؾی ثبقس و‬، ‫یس‬ٙ‫( و‬raise) ‫ا٘یس ثطدب‬ٛ‫ قٕب ٔی س‬ٝ‫بیی و‬ٙ‫اؾشظ‬
. ‫ ثبقس‬ٜ‫ٔكشك قس‬Exception ‫ یب والؼ‬ٚ Error ‫ سطسیت اظ والؼ‬ٝ‫غیطٔؿشمیٓ ث‬

‫چگًَِ یک استثٌبء را ثزاًگیشین‬

‫ چگًَگی ثزاًگیختي یک استثٌبء‬.13.2 ‫هثبل‬

#!/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‬‬

‫‪$ python raising.py‬‬


‫‪Enter something --> ab‬‬
‫‪ShortInputException: The input was of length 2, was‬‬
‫‪expecting at least 3‬‬

‫‪$ python raising.py‬‬


‫‪Enter something --> abc‬‬
‫‪No exception was raised.‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض ایٗ ٔظبَ ‪ٔ ،‬ب ‪ٞ‬ط چ‪ٙ‬س و‪ٔ ٝ‬ی س‪ٛ‬ا٘ؿشیٓ اظ ‪ٞ‬طیه اظ ذُب ‪ٞ‬ب ‪ ٚ‬یب اؾشظ‪ٙ‬بء ‪ٞ‬بی دیف فطو دبیش‪ ٖٛ‬اؾشفبز‪ ٜ‬و‪ٙ‬یٓ‬
‫‪ ،‬أب ثطای ٘كبٖ زازٖ ‪ٞ‬سف ٔبٖ ‪ٛ٘ ،‬ع اؾشظ‪ٙ‬بء ذ‪ٛ‬زٔبٖ ضا ایؼبز وطزیٓ ‪ .‬ایٗ ٘‪ٛ‬ع اؾشظ‪ٙ‬بء ػسیس ‪ ،‬والؼ‬
‫‪٘ShortInputException‬بْ زاضز ‪ ،‬و‪ ٝ‬زاضای ز‪ ٚ‬فیّس ‪ٞ‬ؿز ‪ :‬فیّس َ‪ (length) َٛ‬و‪ ََٛ ٝ‬زاز‪ ٜ‬قس‪ ٜ‬ث‪ٝ‬‬
‫‪ٚ‬ض‪ٚ‬زی اؾز ‪ ٚ ،‬فیّس حسالُ )‪ (atleast‬و‪ ٝ‬حسالُ َ‪ِٛ‬ی اؾز و‪ ٝ‬ثط٘بٔ‪ ٝ‬ا٘شظبض زضیبفز آٖ ضا زاضز ‪.‬‬

‫‪ٕٞ‬چ‪ٙ‬یٗ ٔب زض ثالن ‪ ، except‬ث‪ ٝ‬والؼ ذُب ث‪ ٝ‬ن‪ٛ‬ضر یه ٔشغیط اقبض‪ٔ ٜ‬ی و‪ٙ‬یٓ سب ث‪ ٝ‬ذ‪ٛ‬ثی قیء ٔطث‪ ٌٛ‬ث‪ٝ‬‬
‫ذُب ‪ ٚ‬یب اؾششظ‪ٙ‬بء ضا زض ذ‪ٛ‬ز ٍ٘‪ ٝ‬زاضز ‪ .‬ایٗ ُّٔت ضا ٔی س‪ٛ‬اٖ ثب دبضأشط‪ٞ‬ب ‪ ٚ‬آضٌ‪ٔٛ‬بٖ ‪ٞ‬ب زض فطاذ‪ٛ‬ا٘ی یه سبثغ‬
‫ٔمبیؿ‪ٕٛ٘ ٝ‬ز ‪ .‬زض زاذُ ایٗ ثالن ‪ except‬ثره‪ٛ‬ل ‪ٔ ،‬ب اظ فیّس‪ٞ‬بی ‪ atleast ٚ length‬اظ قیء اؾشظ‪ٙ‬بء‬
‫اؾشفبز‪ ٜ‬وطزیٓ سب دیغبْ ٔ‪ٙ‬بؾجی ضا ثطای وبضثط چبح و‪ٙ‬یٓ ‪.‬‬

‫‪Try..Finaly‬‬

‫اٌط قٕب ثر‪ٛ‬ا‪ٞ‬یس فبیّی ضا و‪ٔ ٝ‬ی ذ‪ٛ‬ا٘یس ‪ ،‬چ‪ ٝ‬اؾشظ‪ٙ‬بء ضخ ثس‪ٞ‬س ‪ ٚ‬چ‪٘ ٝ‬س‪ٞ‬س ‪ ،‬زض‪ٞ‬ط حبَ زض دبیبٖ وبض ‪ ،‬فبیُ‬
‫ثؿش‪ ٝ‬ق‪ٛ‬ز چ‪ٔ ٝ‬ی و‪ٙ‬یس؟ ایٗ وبض ثب اؾشفبز‪ ٜ‬اظ ثالن ‪ finaly‬ا٘ؼبْ ٔی ق‪ٛ‬ز ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ٝ‬قٕب ٔی س‪ٛ‬ا٘یس یه‬
‫ػجبضر ‪ except‬ضا ‪ٕٞ‬طا‪ ٜ‬ثب یه ثالن ‪ finally‬ثطای ‪ٕٞ‬بٖ ثالن ‪ٔ try‬ش‪ٙ‬بظطـ ‪ ،‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ .‬اٌط و‪ٔ ٝ‬ی‬
‫ذ‪ٛ‬ا‪ٞ‬یس اظ ‪ٞ‬ط ز‪ ٚ‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ٔی ثبیؿز یىی ضا زض زاذُ زیٍطی لطاض ثس‪ٞ‬یس ‪.‬‬

‫‪@PythonForever‬‬
Finally ‫استفبدُ اس‬

Finally ‫ ثکبرگیزی‬. 13.3 ‫هثبل‬

#!/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‬ثحض زاقشیٓ ‪ٔ .‬الحظ‪ٕٛ٘ ٝ‬زیٓ و‪ٝ‬‬
‫چُ‪ٛ‬ض ٘‪ٛ‬ع اؾشظ‪ٙ‬بء ذ‪ٛ‬زٔبٖ ضا ایؼبز و‪ٙ‬یٓ ‪ ٚ‬چٍ‪ ٝ٘ٛ‬یه اؾشظ‪ٙ‬بء ضا ثطاٍ٘یعیٓ ‪.‬‬

‫زض فهُ ثؼسی ‪ ،‬وشبثرب٘‪ ٝ‬اؾشب٘ساضز دبیش‪ ٖٛ‬ضا ثطضؾی ذ‪ٛ‬ا‪ٞ‬یٓ وطز ‪.‬‬

‫کتبة یک ثبیت اس پبیتَى‪.‬فصل چْبردم ‪.‬کتبثخبًِ استبًذارد پبیتَى‬

‫فْزست هٌذرجبت‬

‫‪ 1‬وشبثرب٘‪ ٝ‬اؾشب٘ساضز دبیش‪ٖٛ‬‬ ‫‪‬‬

‫‪ٔ 2‬ؼطفی‬ ‫‪‬‬

‫‪ٔ 3‬بغ‪sysَٚ‬‬ ‫‪‬‬

‫‪ 4‬وٕی ثیكشط زضثبض‪sysٜ‬‬ ‫‪‬‬

‫‪ٔ 5‬بغ‪osَٚ‬‬ ‫‪‬‬

‫‪ 6‬ذالن‪ٝ‬‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫کتبثخبًِ استبًذارد پبیتَى‬

‫هؼزفی‬

‫وشبثرب٘‪ ٝ‬اؾشب٘ساضز دبیش‪ ٖٛ‬ثب ٘هت دبیش‪ ٖٛ‬زض زؾشطؼ لطاض ٔی ٌیطز ‪ .‬ایٗ وشبثرب٘‪ ٝ‬قبُٔ ذیُ ػظیٕی اظ ٔبغ‪َٚ‬‬
‫‪ٞ‬بی ٔفیس ‪ٞ‬ؿز ‪ .‬ثؿیبض ٔ‪ٞ ٟٓ‬ؿز و‪ ٝ‬قٕب ثب وشبثرب٘‪ ٝ‬اؾشب٘ساضز دبیش‪ ٖٛ‬آق‪ٙ‬ب ثك‪ٛ‬یس چطا و‪ ٝ‬اٌط ثب ٔبغ‪ٞ َٚ‬بی‬
‫ایٗ وشبثرب٘‪ ٝ‬آق‪ٙ‬ب ثبقیس ‪ ،‬ثؿیبضی اظ ٔكىالر قٕب ٔی س‪ٛ‬ا٘س آؾبٖ سط ‪ ٚ‬ؾطیغ سط حُ ق‪ٛ‬ز ‪.‬‬

‫ٔی ذ‪ٛ‬ا‪ٞ‬یٓ ثطذی اظ ایٗ ٔبغ‪ٞ َٚ‬بی وشبثرب٘‪ ٝ‬ضا و‪ ٝ‬اؾشفبز‪ ٜ‬ضایغ سطی زاض٘س س‪ٛ‬يیح ثس‪ٞ‬یٓ ‪ .‬قٕب ٔی س‪ٛ‬ا٘یس‬
‫ػعئیبر وبّٔشطی ثطای سٕبْ ایٗ ٔبغ‪ٞ َٚ‬بی وشبثرب٘‪ ٝ‬اؾشب٘ساضز دبیش‪ ٖٛ‬ضا زض لؿٕز "‪"Library Refrence‬اظ‬
‫ٔؿش‪ٙ‬سار دبیش‪ ٖٛ‬ث‪ ٝ‬زؾز ثیب‪ٚ‬ضیس ‪ .‬ایٗ ضا‪ٕٙٞ‬ب ٘یع ثب ٘هت دبیش‪ ٖٛ‬زض اذشیبض قٕب لطاض ٔی ٌیطز ‪.‬‬

‫هبصٍل ‪sys‬‬

‫ٔبغ‪ sys َٚ‬قبُٔ ػّٕیبر ٔره‪ٛ‬ل ؾیؿشٓ اؾز ‪ .‬ثطای ٔظبَ زض ظیط ذ‪ٛ‬ا‪ٞ‬یٓ زیس و‪ِ ، sys.argv ٝ‬یؿشی‬
‫قبُٔ آضٌ‪ٔٛ‬بٖ ‪ٞ‬بی ذٍ فطٔبٖ ‪ٞ‬ؿز ‪.‬‬

‫آرگَهبى ّبی خط فزهبى‬

‫هثبل ‪ .14.1‬استفبدُ اس ‪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.

$ python cat.py --help


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

@PythonForever
‫‪$ python cat.py --version‬‬
‫‪Version 1.2‬‬

‫‪$ python cat.py --nonsense‬‬


‫‪Unknown option.‬‬

‫‪$ python cat.py poem.txt‬‬


‫‪Programming is fun‬‬
‫‪When the work is done‬‬
‫‪if you wanna make your work also fun:‬‬
‫!‪use Python‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫ایٗ ثط٘بٔ‪ ٝ‬ؾؼی ٔی و‪ٙ‬س و‪ ٝ‬وبض زؾش‪ٛ‬ض ‪ cat‬زض ِی‪ٛٙ‬وؽ‪/‬ی‪٘ٛ‬یىؽ ضا ثطای وبضثطاٖ سمّیس و‪ٙ‬س ‪ .‬قٕب وبفیؿز ٘بْ‬
‫‪ٞ‬بی ثطذی اظ فبیّ‪ٟ‬بی ٔش‪ٙ‬ی ضا زض ػّ‪ٛ‬ی آٖ ٔكرم و‪ٙ‬یس سب ٔحش‪ٛ‬ای آ٘‪ٟ‬ب ضا ثط‪ٚ‬ی ذط‪ٚ‬ػی چبح و‪ٙ‬س ‪.‬‬

‫‪ٚ‬لشی و‪ ٝ‬یه ثط٘بٔ‪ ٝ‬دبیش‪ ٖٛ‬اػطا ٔی ق‪ٛ‬ز ‪ ،‬یؼ‪ٙ‬ی ٘‪ ٝ‬زض ُٔس سؼبّٔی ‪ ،‬حسالُ یه آیشٓ زض ِیؿز ‪ sys.argv‬لطاض‬
‫ٔی ٌیطز و‪٘ ٝ‬بْ ثط٘بٔ‪ ٝ‬ی فؼّی ؾز و‪ ٝ‬زض حبَ اػطاؾز ‪ ٚ‬زض ذب٘‪ sys.argv[0] ٝ‬لطاض ٔی ٌیطز ‪ ،‬چطا و‪ٝ‬‬
‫ِیؿز ‪ٞ‬ب زض دبیش‪ ٖٛ‬اظ ‪ 0‬قط‪ٚ‬ع ٔی ق‪٘ٛ‬س ‪ٔ .‬ب ثمی آضٌ‪ٔٛ‬بٖ ‪ٞ‬ب ی ذٍ فطٔبٖ ث‪ ٝ‬ز٘جبَ ایٗ آیشٓ ٔی آی‪ٙ‬س ‪.‬‬

‫زض ایٗ ٔظبَ ثطای ای‪ٙ‬ى‪ ٝ‬ثط٘بٔ‪ ٝ‬ی ٔب وبضثط دؿ‪ٙ‬س ثبقس ‪ ،‬یىؿطی ٌعی‪ٞ ٝٙ‬بیی )‪(options‬ضا ثطای ثط٘بٔ‪ ٝ‬فطا‪ٓٞ‬‬
‫وطزیٓ سب وبضثط ثب اؾشفبز‪ ٜ‬اظ آٖ ‪ٞ‬ب اَالػبر ثیكشطی زض ٔ‪ٛ‬ضز ثط٘بٔ‪ٔ ٝ‬ب وؿت و‪ٙ‬س ‪ .‬اظ ا‪ِٚ‬یٗ آضٌ‪ٔٛ‬بٖ ثطای ثطضؾی‬
‫ای‪ٙ‬ى‪ ٝ‬آیب ٌعی‪ ٝٙ‬ایی ثطای ثط٘بٔ‪ٔ ٝ‬كرم قس‪ ٜ‬اؾز یب ذیطاؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یٓ ‪ .‬اٌط ٌعی‪ ٝٙ‬ی ‪ --version‬ث‪ ٝ‬وبض‬
‫ضفش‪ ٝ‬ث‪ٛ‬ز ‪ ،‬قٕبض‪ ٜ‬ی ٘ؿر‪ ٝ‬ثط٘بٔ‪ ٝ‬چبح ٔی ق‪ٛ‬ز ‪ ٚ .‬ثُ‪ٛ‬ض ٔكبث‪ٍٙٞ ، ٝ‬بٔیى‪ٌ ٝ‬عی‪ٔ --help ٝٙ‬كرم ٔی ق‪ٛ‬ز ‪،‬‬
‫اَالػبسی وّی اظ ثط٘بٔ‪ ٝ‬زاز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ .‬اظ سبثغ ‪٘ sys.exit‬یع ثطای ذط‪ٚ‬ع اظ ثط٘بٔ‪ ٝ‬زض حبَ اػطا اؾشفبز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬
‫ثطای ػعئیبر ثیكشط )‪ help(sys.exit‬ضا ٔالحظ‪ٕ٘ ٝ‬بئیس ‪.‬‬

‫‪ٍٙٞ‬بٔی و‪ٌ ٝ‬عی‪ ٝٙ‬ایی زض ػّ‪ٛ‬ی اؾٓ ثط٘بٔ‪ٔ ٝ‬كرم ٘كس‪ ٜ‬ثبقس ‪٘ ٚ ،‬بْ فبیُ ‪ٞ‬ب ث‪ ٝ‬ثط٘بٔ‪ ٝ‬دبؼ زاز‪ ٜ‬ق‪ٛ‬ز ‪ ،‬ثط٘بٔ‪ٝ‬‬
‫ث‪ ٝ‬ضاحشی ث‪ٕٞ ٝ‬بٖ سطسیجی و‪ ٝ‬زض ذٍ فطٔبٖ آ‪ٚ‬ضز‪ ٜ‬قس‪ ٜ‬اؾز ‪ٞ ،‬ط ذٍ اظ فبیُ ‪ٞ‬ب ضا زض ذط‪ٚ‬ػی چبح ٔی و‪ٙ‬س ‪.‬‬

‫زضحبقی‪ ٝ‬ثبیس ٌفز و‪٘ ٝ‬بْ ‪ٔ cat‬رشهطی ثطای( ‪ ٓٞ concatenate‬ظ٘ؼیطوطزٖ) ‪ٞ‬ؿز و‪ ٝ‬زض انُ ‪ٕٞ‬بٖ وبضی‬
‫ؾز و‪ ٝ‬ثط٘بٔ‪ ٝ‬ا٘ؼبْ ٔی ز‪ٞ‬س ‪ .‬و‪ٔ ٝ‬ی س‪ٛ‬ا٘س یه فبیُ یب ز‪ ٚ‬فبیُ ‪ ٚ‬یب قٕبضی اظ فبیُ ‪ٞ‬ب ضا ث‪ ٓٞ ٝ‬ثچؿجب٘س‪ /‬ظ٘ؼیط‬
‫و‪ٙ‬س ‪ ٚ‬زض ذط‪ٚ‬ػی چبح و‪ٙ‬س ‪.‬‬

‫‪@PythonForever‬‬
‫کوی ثیشتز درثبرُ ‪sys‬‬

‫زؾش‪ٛ‬ض ‪ sys.version‬ضقش‪ ٝ‬ایی قبُٔ اَالػبسی زض ذه‪ٛ‬ل ٘ؿح‪ ٝ‬دبیش‪٘ٛ‬ی و‪٘ ٝ‬هت وطز‪ ٜ‬ایس ضا ث‪ ٝ‬قٕب ٘كبٖ‬
‫ٔی ز‪ٞ‬س ‪ .‬زؾش‪ٛ‬ض ‪ sys.version_info‬قبُٔ یه چ‪ٙ‬سسبیی اؾز و‪ ٝ‬وبض ثب ٔمبزیط ٘ؿر‪ ٝ‬ی دبیش‪ ٖٛ‬زض ثط٘بٔ‪ ٝ‬ضا‬
‫آؾبٖ سطٔی ؾبظز ‪.‬‬

‫‪[swaroop@localhost code]$ python‬‬


‫‪>>> import sys‬‬
‫‪>>> sys.version‬‬
‫‪'2.3.4 (#1, Oct 26 2004, 16:42:40) \n[GCC 3.4.2‬‬
‫'])‪20041017 (Red Hat 3.4.2-6.fc3‬‬
‫‪>>> sys.version_info‬‬
‫)‪(2, 3, 4, 'final', 0‬‬

‫هبصٍل ‪os‬‬

‫ایٗ ٔبغ‪ َٚ‬ػّٕیبر ٔره‪ٛ‬ل ِ ؾیؿشٓ ػبُٔ ضا اضائ‪ٔ ٝ‬ی ز‪ٞ‬س ‪ .‬ایٗ ٔبغ‪ٔ َٚ‬ره‪ٛ‬نب ‪ٍٙٞ‬بٔی و‪ٔ ٝ‬ی ذ‪ٛ‬ا‪ٞ‬یس‬
‫ثط٘بٔ‪ ٝ‬قٕب ٔؿشمُ اظ ‪platform‬ثبقس ‪ ،‬ثؿیبض ٔ‪ ٟٓ‬اؾز ‪ .‬ثسیٗ ٔؼ‪ٙ‬ی و‪ ، ٝ‬قٕب ضا لبزض ٔی ؾبظز ثط٘بٔ‪ٞ ٝ‬بیی‬
‫ث‪ٛٙ‬یؿیس و‪ ٓٞ ٝ‬ثط‪ٚ‬ی ‪ ٓٞ ٚLinux‬ثط‪ٚ‬ی ‪ Windows‬ثس‪ ٖٚ‬و‪ٛ‬چه سطیٗ ٔكىّی ‪ ٚ‬ثس‪٘ ٖٚ‬یبظ ث‪ ٝ‬سغییطاسی‬
‫وبضو‪ٙ‬س ‪ .‬ثؼ‪ٛٙ‬اٖ ٔظبِی زض ایٗ ٔ‪ٛ‬ضز اؾشفبز‪ ٜ‬اظ ٔشغیط ‪ os.sep‬ث‪ ٝ‬ػبی ػساو‪ٙٙ‬س‪ٔ ٜ‬ؿیط ذبل ‪ٞ‬ط ؾیؿشٓ ػبُٔ‬
‫‪ٞ‬ؿز[ ‪ٔ .‬شطػٓ ‪ :‬ػساو‪ٙٙ‬س‪ٔ ٜ‬ؿیط ‪ ،‬زض ِی‪ٛٙ‬وؽ وبضوشط ‪ ٚ /‬زض ‪ٚ‬ی‪ٙ‬س‪ٚ‬ظ وبضاوشط \ ‪ٞ‬ؿز ] ‪.‬‬

‫ثطذی اظ ثرف ‪ٞ‬بیی اظ ٔبغ‪ os َٚ‬و‪ٔ ٝ‬فیسسط ‪ٞ‬ؿش‪ٙ‬س زض ظیط ف‪ٟ‬طؾز قس‪ ٜ‬اؾز ‪ ،‬اوظط ذ‪ٛ‬ز س‪ٛ‬نیف ‪ٞ‬ؿش‪ٙ‬س ‪.‬‬

‫‪• os.name :‬قبُٔ ضقش‪ ٝ‬ایی ؾز و‪ platform ٝ‬ایی و‪ ٝ‬زض حبَ اؾشفبز‪ ٜ‬اظ آٖ ‪ٞ‬ؿشیس ضا ٔكرم‬ ‫‪‬‬

‫ٔی و‪ٙ‬س ‪ٔ .‬ظُ '‪ 'nt‬ثطای ‪ٚ‬ی‪ٙ‬س‪ٚ‬ظ ‪ 'posix' ٚ‬ثطای وبضثطاٖ ‪Linux/unix .‬‬
‫•سبثغ )(‪ ، os.getcwd‬زایطوش‪ٛ‬ضی ػبضی ضا ثط ٔی ٌطزا٘س ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪ٔ ٝ‬ؿیط زایطوش‪ٛ‬ضی ایی ضا و‪ٝ‬‬ ‫‪‬‬

‫ثط٘بٔ‪ ٝ‬دبیش‪ ٖٛ‬فؼّی زض حبَ وبض ثط‪ٚ‬ی آٖ اؾز ضا ثطٔی ٌطزا٘س ‪.‬‬
‫•س‪ٛ‬اثغ )(‪ os.putenv() ٚ os.getenv‬ث‪ ٝ‬سطسیت ثطای ٌطفشٗ ‪ ٚ‬س‪ٙ‬ظیٓ وطزٖ ٔشغیط‪ٞ‬بی ٔحیُی ث‪ٝ‬‬ ‫‪‬‬

‫وبض ٔی ض‪٘ٚ‬س ‪.‬‬


‫•سبثغ )(‪٘ os.listdir‬بْ سٕبٔی فبیُ ‪ٞ‬ب ‪ ٚ‬زایطوش‪ٛ‬ضی ‪ٞ‬ب ضا زض زایطوش‪ٛ‬ضی ٔكرم قس‪ ، ٜ‬ثطٔی ٌطزا٘س ‪.‬‬ ‫‪‬‬

‫•سبثغ )(‪ os.remove‬ثطای حصف یه فبیُ ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪.‬‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫•سبثغ )(‪ os.system‬ثطای اػطای یه زؾش‪ٛ‬ض سحز ‪cmd/shell‬ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪.‬‬ ‫‪‬‬

‫‪• os.linesep :‬ضقش‪ ٝ‬ایی ضا ٔی ز‪ٞ‬س و‪ ٝ‬حب‪ٚ‬ی دبیبٍ٘ط ذٍ زض ‪platform‬فؼّی ؾز ‪ .‬ثطای ٔظبَ ‪،‬‬ ‫‪‬‬

‫‪ٚ‬ی‪ٙ‬س‪ٚ‬ظ اظ '‪ِ ،'\r\n‬ی‪ٛٙ‬وؽ اظ '‪ٔ ٚ'\n‬ىی‪ٙ‬شبـ اظ '‪'\r‬اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬س ‪.‬‬


‫•سبثغ )(‪٘ os.path.split‬بْ زایطوش‪ٛ‬ضی ‪٘ ٚ‬بْ فبیُ اظ ٔؿیط ٔكرم قس‪ ٜ‬ضا ثه‪ٛ‬ضر ػساٌب٘‪ ٝ‬زض یه‬ ‫‪‬‬

‫چ‪ٙ‬سسبیی ثط ٔی ٌطزا٘س ‪.‬‬

‫)'‪>>> 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‬اظ وشبثرب٘‪ ٝ‬ی اؾشب٘ساضز دبیش‪ ٖٛ‬ضا ٔكب‪ٞ‬س‪ٕٛ٘ ٜ‬زیٓ ‪ .‬قٕب ٔی ثبیؿز‬
‫ٔؿش‪ٙ‬سار اؾشب٘ساضز دبیش‪ ٖٛ‬ضا ثطای ایٗ ٔبغ‪ٞ َٚ‬ب ‪ ٚ‬زیٍط ٔبغ‪ٞ َٚ‬ب ‪ٚ‬اضؾی و‪ٙ‬یس ‪.‬‬

‫زض فهُ ثؼسی ‪ ،‬ػ‪ٙ‬ج‪ٞ ٝ‬بی ٔرشّفی اظ دبیش‪ ٖٛ‬ضا و‪ٌ ٝ‬كز ٔب زض ز٘یبی دبیش‪ ٖٛ‬ضا وبُٔ سط ٔی و‪ٙ‬س ضا د‪ٛ‬قف‬
‫ذ‪ٛ‬ا‪ٞ‬یٓ زاز ‪.‬‬

‫کتبة یک ثبیت اس پبیتَى‪.‬فصل پبًشدّن‪.‬ثبس ّن اس پبیتَى‬

‫فْزست هٌذرجبت‬

‫‪ 1‬ثبظ ‪ ٓٞ‬اظ دبیش‪ٖٛ‬‬ ‫‪‬‬

‫‪ٔ 2‬شس‪ٞ‬بی ذبل‬ ‫‪‬‬

‫‪ 3‬ثالن ‪ٞ‬بی سه زؾش‪ٛ‬ضی‬ ‫‪‬‬

‫‪List Comprehension 4‬‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫‪ 5‬زضیبفز چ‪ٙ‬سسبیی ‪ٞ‬ب ‪ِ ٚ‬یؿز ‪ٞ‬ب زض س‪ٛ‬اثغ‬ ‫‪‬‬

‫‪ 6‬فطْ الٔسا)‪(lambda‬‬ ‫‪‬‬

‫‪ 7‬زؾش‪ٛ‬ضار ‪evalٚ exec‬‬ ‫‪‬‬

‫‪ 8‬زؾش‪ٛ‬ض‪assert‬‬ ‫‪‬‬

‫‪ 9‬سبثغ‪repr‬‬ ‫‪‬‬

‫‪ 10‬ذالن‪ٝ‬‬ ‫‪‬‬

‫ثبس ّن اس پبیتَى‬

‫سب ثسیٗ ػب ‪ٔ ،‬ب ػ‪ٙ‬ج‪ٞ ٝ‬بی ٔرشّفی اظ دبیش‪ ٖٛ‬ضا و‪ ٝ‬قٕب ث‪ ٝ‬وبض ذ‪ٛ‬ا‪ٞ‬یس ٌطفز د‪ٛ‬قف زازیٓ ‪ .‬زضایٗ فهُ ‪ٔ ،‬ب‬
‫ثطذی ٔفب‪ٞ‬یٓ زیٍطی ضا و‪ ، ٝ‬زا٘ف ٔب ضا اظ دبیش‪ ٖٛ‬وبُٔ سط ذ‪ٛ‬ا‪ٞ‬س وطز ‪ ،‬ضا د‪ٛ‬قف ٔی ز‪ٞ‬یٓ ‪.‬‬

‫هتذّبی خبص‬

‫ٔشس‪ٞ‬بی ثره‪ٛ‬نی ‪ٞ‬ؿش‪ٙ‬س و‪ٔ ٝ‬ؼ‪ٙ‬بی ذبنی زض والؼ ‪ٞ‬ب زاض٘س ‪ٔ ،‬ظُ ٔشس‪ٞ‬بی __‪ __del__ ٚ __init‬و‪ٔ ٝ‬ب‬
‫لجال ٔفب‪ٞ‬یٓ آٖ ‪ٞ‬ب ضا ٔالحظ‪ٕٛ٘ ٝ‬زیٓ ‪.‬‬

‫ثُ‪ٛ‬ضوّی ‪ٔ ،‬شس‪ٞ‬بی ذبل ثطای سمّیس ضفشبض ثره‪ٛ‬نی ث‪ ٝ‬وبض ٌطفش‪ٔ ٝ‬ی ق‪٘ٛ‬س ‪.‬ثطای ٔظبَ ‪ ،‬اٌط قٕب ثر‪ٛ‬ا‪ٞ‬یس اظ‬
‫ػٍّٕط ای‪ٙ‬سوؽ ]‪ x[key‬ثطای والؼ سبٖ اؾشفبز‪ ٜ‬و‪ٙ‬یس ( ‪ٕٞ‬بٖ َ‪ٛ‬ضی و‪ ٝ‬ثطای ِیؿز ‪ٞ‬ب ‪ ٚ‬چ‪ٙ‬سسبیی ‪ٞ‬ب اؾشفبز‪ٜ‬‬
‫ٔی و‪ٙ‬یس ) ‪ ،‬س‪ٟٙ‬ب وبفی ؾز و‪ٔ ٝ‬شسی ث‪٘ ٝ‬بْ )(__‪ __getitem‬ضا ث‪ ٝ‬والؼ سبٖ ايبف‪ ٝ‬و‪ٙ‬یس سب ایٗ وبض ا٘ؼبْ‬
‫ق‪ٛ‬ز ‪ .‬اٌط ث‪ ٝ‬ایٗ ٔ‪ٛ‬ي‪ٛ‬ع فىط و‪ٙ‬یس ٔش‪ٛ‬ػ‪ٔ ٝ‬ی ق‪ٛ‬یس و‪ ٝ‬ایٗ ‪ٕٞ‬بٖ وبضی ؾز و‪ ٝ‬و‪ ٝ‬دبیش‪ ٖٛ‬ذ‪ٛ‬زـ ثطای والؼ‬
‫‪list‬ا٘ؼبْ زاز‪ ٜ‬اؾز !‬

‫ثطذی اظ ٔشس‪ٞ‬بی ذبل زض ػس‪ َٚ‬ظیط ِیؿز قس‪ ٜ‬ا٘س ‪ .‬اٌط ٔی ذ‪ٛ‬ا‪ٞ‬یس زضثبض‪ ٜ‬ی سٕبْ ایٗ ٔشس‪ٞ‬بی ثره‪ٛ‬ل‬
‫اَالػبر وؿت و‪ٙ‬یس ‪ ،‬زض ضا‪ٕٙٞ‬بی ٔطػغ دبیش‪ِ ٖٛ‬یؿز ظیبزی اظ آٖ ‪ٞ‬ب زض زؾشطؼ اؾز ‪.‬‬

‫جذٍل ‪ .15.1‬ثزخی اس هتذّبی خبص‬

‫٘بْ ‪ -‬س‪ٛ‬يیحبر‬

‫__‪( ... , init__(self‬ایٗ ٔشس دیف اظ آٖ و‪ ٝ‬یه قیء ثُ‪ٛ‬ض ػسیس ایؼبز ‪ ٚ‬ثطٌطزا٘س‪ ٜ‬ق‪ٛ‬ز ‪،‬‬ ‫‪‬‬

‫فطاذ‪ٛ‬ا٘ی ٔی ق‪ٛ‬ز ‪٘ ( .‬مف ؾبظ٘س‪ ٜ‬والؼ ضا زاضز )‬


‫__‪(del__(self‬دیف اظ سرطیت یه قیء فطاذ‪ٛ‬ا٘ی ٔی ق‪ٛ‬ز‪٘ ( .‬مف ٔرطة والؼ ضا زاضز )‬ ‫‪‬‬

‫‪@PythonForever‬‬
‫__‪ٛٔ(str__(self‬الؼی و‪ ٝ‬اظ زؾش‪ٛ‬ض ‪ ٚ print‬یب )(‪ str‬ثطای یه قیء اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یٓ ‪ ،‬فطاذ‪ٛ‬ا٘ی‬ ‫‪‬‬

‫ٔی ق‪ٛ‬ز ‪.‬‬


‫__‪ٛٔ(lt__(self,other‬الؼی و‪ ٝ‬ػٍّٕط و‪ٛ‬چىشط اظ ) < (ث‪ ٝ‬وبض ثطز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ ،‬فطاذ‪ٛ‬ا٘ی ٔی ق‪ٛ‬ز ‪.‬‬ ‫‪‬‬

‫ث‪َٛ ٝ‬ض ٔكبث‪ٔ ٝ‬شس‪ٞ‬بی ذبنی ثطای ٔبثمی ػٍّٕط‪ٞ‬ب ‪ٚ ٓٞ‬ػ‪ٛ‬ز زاضز (ٔظُ‪ ٚ> ، +‬غیط‪) . ٜ‬‬
‫__‪ٚ(getitem__(self,key‬لشی و‪ ٝ‬ػٍّٕط ای‪ٙ‬سوؽ ]‪ x[key‬ث‪ ٝ‬وبضٌطفش‪ٔ ٝ‬ی ق‪ٛ‬ز ‪ ،‬فطاذ‪ٛ‬ا٘ی ٔی‬ ‫‪‬‬

‫ق‪ٛ‬ز ‪.‬‬
‫__‪ٍٙٞ(len__(self‬بٔیى‪ ٝ‬سبثغ س‪ٛ‬وبض )(‪len‬ثطای اقیبء ز٘جبِ‪ ٝ‬ایی ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪ ،‬فطاذ‪ٛ‬ا٘ی ٔی ق‪ٛ‬ز‪.‬‬ ‫‪‬‬

‫ثالک ّبی تک دستَری‬

‫سب و‪ ،ٖٛٙ‬حشٕب ٔش‪ٛ‬ػ‪ ٝ‬قس‪ ٜ‬ایس و‪ٞ ٝ‬ط ثّ‪ٛ‬وی اظ زؾش‪ٛ‬ضار ‪ ،‬فبنّ‪ ٝ‬اـ ضا ث‪ٛ‬ؾیّ‪ ٝ‬ی ؾُح س‪ٛ‬ضفش‪ ٝ‬ذ‪ٛ‬زـ س‪ٙ‬ظیٓ‬
‫ٔی و‪ٙ‬س ‪ .‬ذت ‪ ،‬ایٗ ُّٔت ثطای ثیكشط ٔ‪ٛ‬الغ زضؾز ‪ٞ‬ؿز ‪ ،‬أب ٘‪ ٝ‬زلیمب نس زضنس ‪ .‬اٌط ثّ‪ٛ‬وی اظزؾش‪ٛ‬ضار س‪ٟٙ‬ب‬
‫قبُٔ یه زؾش‪ٛ‬ض ثبقس ‪ٔ ،‬ی س‪ٛ‬ا٘یس آٖ ضا زض ‪ٕٞ‬بٖ ذٍ ٔكرم و‪ٙ‬یس ‪ٔ .‬ظُ یه زؾش‪ٛ‬ض قطَی یب زؾش‪ٛ‬ض حّم‪ٝ‬‬
‫ایی ‪ٔ .‬ظبَ ظیط ٔی ثبیؿز ایٗ ُّٔت ضا ‪ٚ‬ايح سط ٕ٘بیس ‪.‬‬

‫‪>>> flag = True‬‬


‫'‪>>> if flag: print 'Yes‬‬
‫‪...‬‬
‫‪Yes‬‬

‫‪ٕٞ‬بٖ َ‪ٛ‬ضی و‪ٔ ٝ‬الحظ‪ٔ ٝ‬ی و‪ٙ‬یس ‪ ،‬زض ای‪ٙ‬ؼب یه سه زؾش‪ٛ‬ض ‪ ٝ٘ ٚ‬یه ثّ‪ٛ‬ن ٔؼعا اؾشفبز‪ ٜ‬قس‪ ٜ‬اؾز ‪ٕٞ .‬چ‪ٙ‬یٗ‬
‫ٔی س‪ٛ‬ا٘یس ثطای و‪ٛ‬سب‪ ٜ‬سطقسٖ ثط٘بٔ‪ ٝ‬سبٖ اظ ایٗ حبِز اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ .‬اِجش‪ ٗٔ ٝ‬ث‪ ٝ‬قسر ث‪ ٝ‬قٕب دیك‪ٟٙ‬بز ٔی و‪ٓٙ‬‬
‫و‪٘ ٝ‬جبیس اظ ایٗ ض‪ٚ‬ـ ٔیبٖ ثط اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ٍٔ ،‬ط ثطای ثطضؾی ذُب ‪ ٚ‬غیط‪ . ٜ‬یىی اظ زالیُ انّی آٖ ‪ ٓٞ‬ایٗ‬
‫‪ٞ‬ؿز و‪ ، ٝ‬اٌطاظ س‪ٛ‬ضفشٍی ٔؼٕ‪ َٛ‬اؾشفبز‪ ٜ‬و‪ٙ‬یس ‪ ،‬ذیّی آؾبٖ سطٔی س‪ٛ‬اٖ یه زؾش‪ٛ‬ض زیٍط ضا ث‪ ٝ‬آٖ ايبف‪ٕٛ٘ ٝ‬ز ‪.‬‬

‫س‪ٛ‬ػ‪ ٝ‬زاقش‪ ٝ‬ثبقیس و‪ٍٙٞ ٝ‬بٔی و‪ٔ ٝ‬فؿط دبیش‪ ٖٛ‬زض ُٔس سؼبّٔی ث‪ ٝ‬وبض ٌطفش‪ٔ ٝ‬ی ق‪ٛ‬ز ‪ ،‬ثب سغییط ٔ‪ٙ‬بؾت اػالٖ‬
‫ذٍ فطٔبٖ ‪ ،‬ث‪ ٝ‬قٕب زض ‪ٚ‬اضز وطزٖ زؾش‪ٛ‬ضار وٕه ٔی و‪ٙ‬س ‪ .‬ثطای ٔظبِی زض ایٗ ٔ‪ٛ‬ضز ‪ ،‬ثؼس اظ ای‪ٙ‬ى‪ ٝ‬قٕب وّٕ‪ٝ‬‬
‫وّیسی ‪ if‬ضا ‪ٚ‬اضز وطزیس ‪ٔ ،‬فؿط دبیش‪ ٖٛ‬ثطای ٘كبٖ زازٖ ای‪ٙ‬ى‪ ٝ‬ػّٕ‪ٛٙٞ ٝ‬ظ وبُٔ ٘كس‪ ٜ‬اؾز اػالٖ ذٍ ٕ٘بیف ضا‬
‫ث‪ ... ٝ‬سغییط ٔی ز‪ٞ‬س ‪ .‬زض ایٗ حبِز ‪ٚ ،‬لشی و‪ٔ ٝ‬ب ٔبثمی زؾش‪ٛ‬ضار ضا وبُٔ وطزیٓ ‪ ،‬وّیس ‪ enter‬ضا ثطای سبییس‬
‫ایٗ و‪ ٝ‬زؾش‪ٛ‬ضار ٔب وبُٔ قس‪ ٜ‬اؾز فكبض ٔی ز‪ٞ‬یٓ ‪ .‬ؾذؽ ‪ ،‬دبیش‪ ٖٛ‬سٕبٔی زؾش‪ٛ‬ضار ‪ٚ‬اضز قس‪ ٜ‬ضا اػطا ٔی و‪ٙ‬س‬
‫‪ ٚ‬اػالٖ ذٍ فطٔبٖ لجّی ضا ثط ٔی ٌطزا٘س ‪ ٚ‬ثطای زضیبفز ‪ٚ‬ض‪ٚ‬زی ثؼسی ٔ‪ٙ‬شظط ٔی ٔب٘س ‪.‬‬

‫‪@PythonForever‬‬
‫‪List Comprehension‬‬

‫‪ٞList Comprehension‬ب ثطای ٔكشك وطزٖ یه ِیؿز ػسیس اظ ِیؿز ٔ‪ٛ‬ػ‪ٛ‬ز اؾشفبز‪ٔ ٜ‬ی ق‪٘ٛ‬س ‪ .‬ثطای‬
‫ٔظبَ ‪ ،‬قٕب یه ِیؿشی اظ اػساز زاضیس ‪ٔ ٚ‬ی ذ‪ٛ‬ا‪ٞ‬یس یه ِیؿز ٔكبث‪ ٝ‬ثب آٖ ث‪ ٝ‬زؾز ثیب‪ٚ‬ضیس ‪ ،‬ث‪َٛ ٝ‬ضی و‪ ٝ‬ث‪ٝ‬‬
‫اظای ‪ ٕٝٞ‬ی اػًبی آٖ ِیؿز اٌط ‪ٞ‬ط ػً‪ ٛ‬آٖ اظ ‪ 2‬ثعضٌشط ‪ٞ‬ؿش‪ٙ‬س زض ‪ 2‬يطة قس‪ ٜ‬ثبق‪ٙ‬س ‪ ،‬ثطای چ‪ٙ‬یٗ ٔ‪ٛ‬اضزی‬
‫‪ٙٔList Comprehension‬بؾت ‪ٞ‬ؿز ‪.‬‬

‫استفبدُ اس ‪List Comprehension‬‬

‫هثبل ‪ .15.1‬ثِ کبرگیزی ‪List Comprehension‬‬

‫‪#!/usr/bin/python‬‬
‫‪# Filename: list_comprehension.py‬‬

‫]‪listone = [2, 3, 4‬‬


‫]‪listtwo = [2*i for i in listone if i > 2‬‬
‫‪print listtwo‬‬

‫خزٍجی‬

‫‪$ python list_comprehension.py‬‬


‫]‪[6, 8‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض ای‪ٙ‬ؼب ‪ٔ ،‬ب یه ِیؿز ػسیس ضا ثب ٔكرم وطزٖ ٔحبؾج‪ ٝ‬ایی ( ‪*i) 2‬و‪ ٝ‬ثبیس ثؿش‪ ٝ‬ث‪ ٝ‬قطٌ سؼییٗ قس‪(if i ٜ‬‬
‫)‪> 2‬ا٘ؼبْ ثس‪ٞ‬س ٔكشك ٔی و‪ٙ‬یٓ ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ِ ٝ‬یؿز انّی زؾز ٘ر‪ٛ‬ضز‪ ٜ‬ثبلی ٔی ٔب٘س ‪ .‬ثؿیبضی اظ ا‪ٚ‬لبر ‪،‬‬
‫ٔب اظ حّم‪ ٝ‬ثطای دطزاظـ ‪ٞ‬ط ػ‪ٙ‬هط اظ ِیؿز اؾشفبز‪ٔ ٜ‬ی و‪ٙ‬یٓ ‪ٕٞ ،‬چیٗ ٔ‪ٛ‬اضزی ٔی س‪ٛ‬ا٘س ث‪َ ٝ‬طظ نطیح ‪ ٚ‬فكطز‪ٜ‬‬
‫‪ ٚ‬ثب نطاحز ثیكشطی ث‪ٛ‬ؾیّ‪ ٝ‬ی ‪List Comprehension‬ث‪ ٝ‬ثسؾز آیس ‪.‬‬

‫‪@PythonForever‬‬
‫دریبفت چٌذتبیی ّب ٍ لیست ّب در تَاثغ‬

‫ض‪ٚ‬ـ ‪ٞ‬بی ثره‪ٛ‬نی ثطای زضیبفز دبضٔشط‪ٞ‬ب زض یه سبثغ ثؼ‪ٛٙ‬اٖ ِیؿز ‪ ٚ‬یب زیىك‪ٙ‬طی و‪ ٝ‬ث‪ ٝ‬سطسیت ثب اؾشفبز‪ ٜ‬اظ‬
‫دیك‪٘ٛ‬س‪ٞ‬بی * ‪ ٚ‬یب ** ٔكرم ٔی ق‪٘ٛ‬س ‪ٚ ،‬ػ‪ٛ‬ز زاضز ‪ .‬ایٗ ٔؿئّ‪ ٝ‬ثطای ظٔب٘ی و‪ ٝ‬سؼساز ٔشغیط‪ٞ‬بی آضٌ‪ٔٛ‬بٖ ‪ٞ‬ب‬
‫زض سبثغ ثسؾز ٔی آیس ‪ٔ ،‬فیس ٔی ثبقس ‪.‬‬

‫‪>>> def powersum(power, *args):‬‬


‫‪...‬‬ ‫‪'''Return the sum of each argument raised to‬‬
‫'''‪specified power.‬‬
‫‪...‬‬ ‫‪total = 0‬‬
‫‪...‬‬ ‫‪for i in args:‬‬
‫‪...‬‬ ‫)‪total += pow(i, power‬‬
‫‪...‬‬ ‫‪return total‬‬
‫‪...‬‬
‫)‪>>> powersum(2, 3, 4‬‬
‫‪25‬‬

‫)‪>>> powersum(2, 10‬‬


‫‪100‬‬

‫ث‪ ٝ‬زِیُ اؾشفبز‪ ٜ‬اظ دیك‪٘ٛ‬س * زض ٘بْ ٔشغیط ‪ ، args‬سٕبٔی آضٌ‪ٔٛ‬بٖ ‪ٞ‬بی ايبفی اضؾبِی ث‪ ٝ‬سبیغ زض ایٗ ٔشغیط‬
‫‪ ،args‬ثؼ‪ٛٙ‬اٖ یه ‪ tuple‬شذیط‪ٔ ٜ‬ی ق‪٘ٛ‬س ‪ .‬اٌط ث‪ ٝ‬ػبی آٖ اظ دیك‪٘ٛ‬س ** زض ٘بْ ٔشغیط اؾشفبز‪ٔ ٜ‬ی قس ‪،‬‬
‫دبضأشط‪ٞ‬بی ايبفی ٔی ثبیؿز ثه‪ٛ‬ضر ػفزِ وّیس‪ٔ/‬مساض اظ یه زیىك‪ٙ‬طی ٔ‪ٛ‬ضز ثطضؾی لطاض ٔی ٌطفش‪ٙ‬س ‪.‬‬

‫فزم الهذا )‪(lambda‬‬

‫استفبدُ اس فزم الهذا‬

‫هثبل ‪ .15.2‬ثکبرگیزی فزم الهذا‬

‫‪#!/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‬‬

‫خزٍجی‬

‫‪$ python lambda.py‬‬


‫‪wordword‬‬
‫‪10‬‬

‫ًحَُ ی ػولکزد ایي هثبل‬

‫زض ای‪ٙ‬ؼب ‪ٔ ،‬ب اظ سبثغ ‪ make_repeater‬ثطای ایؼبز یه قیء سبثؼی ػسیس ‪ ٚ‬ثطٌطزا٘سٖ آٖ زض ظٔبٖ اػطا اؾشفبز‪ٜ‬‬
‫وطزیٓ ‪ .‬و‪ ٝ‬زض آٖ زؾش‪ٛ‬ض ‪ lambda‬ثطای ایؼبز قیء سبثؼی ث‪ ٝ‬وبض ٌطفش‪ ٝ‬قس‪ ٜ‬اؾز ‪ .‬الظٔؿز و‪ ٝ‬ثس٘جبَ‬
‫دبضأشط ‪ lambda‬یه سه ػجبضر آ‪ٚ‬ضز‪ ٜ‬ق‪ٛ‬ز ‪ ،‬و‪ ٝ‬ث‪ ٝ‬س‪ٟٙ‬بیی ٘مف ثس٘‪ ٝ‬ی سبثغ ضا زاضز ‪ٔ ٚ‬مساض ایٗ ػجبضر ثب یه‬
‫سبثغ ػسیس ثطٌطزا٘س‪ٔ ٜ‬ی ق‪ٛ‬ز ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ٝ‬حشی یه زؾش‪ٛ‬ض ‪ٕ٘ ٓٞ print‬ی س‪ٛ‬ا٘س زض زاذُ فطْ ‪lambda‬‬
‫لطاض ثٍیطز ‪ ،‬س‪ٟٙ‬ب ٔؼبظ ث‪ ٝ‬اؾشفبز‪ ٜ‬اظػجبضر ‪ٞ‬ؿشیٓ ‪.‬‬

‫دستَرات ‪eval ٍ exec‬‬

‫زؾش‪ٛ‬ض ‪ exec‬ثطای اػطای زؾش‪ٛ‬ضار دبیش‪ ٖٛ‬و‪ ٝ‬زض یه ضقش‪ ٚ ٝ‬یب یه فبیُ شذیط‪ ٜ‬قس‪ ٜ‬ا٘س ‪ ،‬اؾشفبز‪ٔ ٜ‬ی ق‪ٛ‬ز ‪.‬‬
‫ثطای ٔظبَ ‪ٔ ،‬ب ٔی س‪ٛ‬ا٘یٓ یه ضقش‪ ٝ‬قبُٔ وس‪ٞ‬بی دبیش‪ ٖٛ‬ضا زض ظٔبٖ اػطا ایؼبز و‪ٙ‬یٓ ‪ ٚ‬ؾذؽ ایٗ زؾش‪ٛ‬ضار ضا ثب‬
‫اؾشفبز‪ ٜ‬اظ زؾش‪ٛ‬ض ‪ exec‬اػطا و‪ٙ‬یس ‪ .‬یه ٔظبَ ؾبز‪ ٜ‬زض ظیط آٔس‪ ٜ‬اؾز ‪:‬‬

‫‪>>>exec 'print "Hello World"' Hello World‬‬

‫زؾش‪ٛ‬ض ‪ eval‬ثطای اضظیبثی )‪ (evaluate‬اػشجبض ػجبضار دبیش‪ ٖٛ‬و‪ ٝ‬زض یه ضقش‪ ٝ‬شذیط‪ ٜ‬قس‪ ٜ‬ا٘س ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪.‬‬
‫یه ٔظبَ ؾبز‪ ٜ‬زض ظیط ٘كبٖ زاز‪ ٜ‬قس‪ ٜ‬اؾز ‪.‬‬

‫‪>>> eval('2*3') 6‬‬

‫‪@PythonForever‬‬
‫دستَر ‪assert‬‬

‫ػجبضر ‪assert‬ثطای اشػبٖ ث‪ ٝ‬زضؾشی یه چیع ث‪ ٝ‬وبض ٔی ض‪ٚ‬ز ‪ .‬ثطای ٔظبَ ‪ ،‬اٌط قٕب وبٔال ُٕٔئٗ ‪ٞ‬ؿشیس و‪ٝ‬‬
‫ٔی ثبیؿز حسالُ یه ػ‪ٙ‬هط زض ِیؿشی و‪ ٝ‬قٕب زض حبَ اؾشفبز‪ ٜ‬اظ آٖ ‪ٞ‬ؿشیس ‪ٚ‬ػ‪ٛ‬ز زاقش‪ ٝ‬ثبقس ‪ٔ ٚ‬ی ذ‪ٛ‬ا‪ٞ‬یس‬
‫)‪ (raise‬ق‪ٛ‬ز ‪ ،‬ثطای یه چ‪ٙ‬یٗ‬ ‫ایٗ ٔؿئّ‪ ٝ‬ضا چه و‪ٙ‬یس ثُ‪ٛ‬ضی و‪ ٝ‬اٌط آٖ زضؾز ٘جبقس ذُبیی ثطذبؾش‪ٝ‬‬
‫ٔ‪ٛ‬اضزی زؾش‪ٛ‬ض ‪ٙٔ assert‬بؾت اؾز ‪ٍٙٞ .‬بٔیى‪ ٝ‬زؾش‪ٛ‬ض ‪٘ assert‬مى ق‪ٛ‬ز ‪ ،‬یه ‪AssertionError‬ثطدب‬
‫)‪ٔ(raise‬ی ق‪ٛ‬ز ‪.‬‬

‫]'‪>>> mylist = ['item‬‬


‫)‪>>> assert len(mylist‬‬ ‫‪>= 1‬‬
‫)(‪>>> mylist.pop‬‬
‫'‪'item‬‬
‫)‪>>> assert len(mylist‬‬ ‫‪>= 1‬‬
‫‪Traceback (most recent‬‬ ‫‪call last):‬‬
‫‪File "<stdin>", line‬‬ ‫? ‪1, in‬‬
‫‪AssertionError‬‬

‫تبثغ ‪repr‬‬

‫سبثغ ‪ repr‬ثطای ثسؾز آ‪ٚ‬ضزٖ ٕ٘بیف ٔشؼبضف یه ضقش‪ ٝ‬اؾشفبز‪ٔ ٜ‬ی ق‪ٛ‬ز( ‪ٕٞ .‬چ‪ٙ‬یٗ ػالٔز `` )‪(Backtick‬‬
‫‪ ،‬و‪ ٝ‬سجسیُ )‪ ٚ (conversion‬یب ٘مُ ل‪ٔ َٛ‬ؼى‪ٛ‬ؼ )‪٘(reverse quotes‬بٔیس‪ٔ ٜ‬ی ق‪ٛ‬ز ٘یع ‪ٕٞ‬یٗ وبض ضا ا٘ؼبْ‬
‫ٔی ز‪ٞ‬س ) ‪.‬‬

‫س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬یس و‪ ٝ‬ثطای اوظط ا‪ٚ‬لبر زاضیٓ ‪: eval(repr(object)) == object‬‬

‫][ = ‪>>> i‬‬


‫)'‪>>> i.append('item‬‬
‫`‪>>> `i‬‬
‫"]'‪"['item‬‬
‫)‪>>> repr(i‬‬
‫"]'‪"['item‬‬

‫‪@PythonForever‬‬
‫ثُ‪ٛ‬ض وّی ‪ ،‬سبثغ ‪ repr‬یب ػفز ػالٔز ‪ backtick‬ثطای ثسؾز آ‪ٚ‬ضزٖ یه ٕ٘بیف لبثُ چبح اظ قیء ثسؾز ٔی‬
‫آیس ‪ .‬قٕب ٔی س‪ٛ‬ا٘یس آ٘چ‪ ٝ‬و‪ ٝ‬اقیبء قٕب ثطای سبثغ ‪repr‬ثط ٔی ٌطزا٘‪ٙ‬س ضا ثب سؼطیف ٔشس __‪ __repr‬زض والؼ‬
‫سبٖ و‪ٙ‬شطَ و‪ٙ‬یس ‪.‬‬

‫خالصِ‬

‫ٔب ثطذی زیٍط اظ ‪ٚ‬یػٌی ‪ٞ‬بی دبیش‪ ٖٛ‬ضا زض ایٗ فهُ ‪ُٕٔ ٚ‬ئ‪ٙ‬بً ٘‪ ٝ‬سٕبْ آٖ ضا د‪ٛ‬قف زازیٓ ‪ .‬ث‪ٞ ٝ‬ط حبَ ‪ ،‬زض ایٗ‬
‫ٔطحّ‪ ، ٝ‬ثیكشط آ٘چ‪ ٝ‬و‪ ٝ‬اوظط ا‪ٚ‬لبر ثب آٖ زض ثط٘بٔ‪ٞ ٝ‬بی سبٖ ض‪ ٚ‬ث‪ ٝ‬ض‪ٔ ٚ‬ی ق‪ٛ‬یس ضا د‪ٛ‬قف زازیٓ ‪ .‬و‪ ٝ‬ثطای قط‪ٚ‬ع‬
‫ثط٘بٔ‪ٞ ٝ‬بیی و‪ ٝ‬لهس ٘‪ٛ‬قشٗ آٖ ضا زاضیس ‪ٙٔ ،‬بؾت اؾز ‪.‬‬

‫زض فهُ ثؼسی ‪ٔ ،‬ب زضثبض‪٘ ٜ‬ح‪ ٜٛ‬ی اوشكبف ثیكشطزض دبیش‪ ٖٛ‬ثحض ذ‪ٛ‬ا‪ٞ‬یٓ وطز ‪.‬‬

‫کتبة یک ثبیت اس پبیتَى‪.‬فصل شبًشدّن‪.‬کبر ثؼذی چیست ؟‬

‫فْزست هٌذرجبت‬

‫‪ 1‬وبض ثؼسی چیؿز ؟‬ ‫‪‬‬

‫‪٘ 2‬طْ افعاض‪ٞ‬بی ٌطافیىی‬ ‫‪‬‬

‫‪ 3‬ذالن‪ ٝ‬ایی اظ اثعاض‪ٞ‬بی ‪GUI‬‬ ‫‪‬‬

‫‪ 4‬فهُ ‪ٞ‬بی آسی‬ ‫‪‬‬

‫‪ 5‬و‪ٙ‬ىبقی ثیكشط‬ ‫‪‬‬

‫‪ 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‬‬
‫• ثطای ا٘شربة ‪ٞ‬بی ثیكشط زض ایٗ ظٔی‪ ، ٝٙ‬ث‪ ٝ‬نفح‪ ٝ‬ی ‪ٚ‬یىی ثط٘بٔ‪ٛ٘ ٝ‬یؿی ‪ٚ‬اؾٍ ٌطافیىی زض‬ ‫‪‬‬

‫‪python.org‬ث‪ ٝ‬آزضؼ ظیط ٔطػغ و‪ٙ‬یس ‪.‬‬

‫خالصِ ایی اس اثشارّبی ‪GUI‬‬

‫ٔشبؾفب٘‪ ، ٝ‬یه اثعاض ‪ ٕٝٞ 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#‬اؾز ‪ٔ ٚ‬ی س‪ٛ‬ا٘س‬ ‫‪‬‬

‫ثط‪ٚ‬ی ‪ٞplatform‬بی ‪ .NET/Mono/DotGNU‬اػطا ثك‪ٛ‬ز ‪ .‬ثسیٗ ٔؼ‪ٙ‬ی و‪ ٝ‬قٕب ٔی س‪ٛ‬ا٘یس ثط٘بٔ‪ٝ‬‬


‫‪ٞ‬بیی زض دبیش‪ ٖٛ‬ث‪ٛٙ‬یؿیس و‪ ٝ‬اظ وشبثرب٘‪ٞ ٝ‬بی ‪ ٚ .NET‬زیٍط وشبثرب٘‪ٞ ٝ‬بی اضائ‪ ٝ‬قس‪ ٜ‬ثب ایٗ ؾ‪ٝ‬‬
‫‪platform‬ث‪ ٝ‬زضؾشی اؾشفبز‪ ٜ‬و‪ٙ‬س ‪ٛٙٞ ! IronPython‬ظ یه ٘طْ افعاض ‪ٞ pre-alpha‬ؿز ‪ ٚ‬او‪ٖٛٙ‬‬
‫س‪ٟٙ‬ب ثطای آظٔبیف ٔ‪ٙ‬بؾت اؾز ‪ . Jim Hugunin‬وؿی و‪ IronPython ٝ‬ضا ٘‪ٛ‬قش‪ ٝ‬اؾز زض حبَ‬
‫ّٔحك قسٖ ث‪ٞ MicroSoft ٝ‬ؿز ‪ ٚ‬لطاض ‪ٞ‬ؿز ثط‪ٚ‬ی ایؼبز یه ٘ؿر‪ ٝ‬ی وبُٔ ‪ ٚ‬اؾش‪ٛ‬اض آٖ زض آی‪ٙ‬س‪ٜ‬‬
‫وبض و‪ٙ‬س ‪.‬‬

‫‪• Lython‬ث‪ ٝ‬آزضؼ [‪] 19‬و‪ ٝ‬یه ‪Lisp‬ا‪ِٚ‬ی‪ ٝ‬ثطای ظثبٖ دبیش‪ ٖٛ‬اؾز ‪ .‬و‪ ٝ‬قجی‪ ٝ‬ث‪ٔ Lisp ٝ‬ؼٕ‪ِٛ‬ی‬ ‫‪‬‬

‫ؾز ‪ ٚ‬ثُ‪ٛ‬ض ٔؿشمیٓ ثبیز وس‪ٞ‬بی دبیش‪ ٖٛ‬ضا وبٔذبیُ ٔی و‪ٙ‬س ‪ ،‬ثسیٗ ٔؼ‪ٙ‬ی و‪ ٝ‬لبثّیز سجبزَ‬
‫)‪(interoperability‬ثب وس‪ٞ‬بی ٔؼٕ‪ َٛ‬دبیش‪ ٖٛ‬ضا زاضز ‪.‬‬

‫•ٔ‪ٙ‬بثغ انّی ثؿیبضی ثطای دبیش‪ٞ ٖٛ‬ؿز ‪ .‬یىی اظ آ٘‪ٟ‬ب ِی‪ٙ‬ه ‪ٞ‬بی ض‪ٚ‬ظا٘‪ ٝ‬دبیش‪ٞ ٖٛ‬ؿز ! ث‪ ٝ‬آزضؼ [‪] 20‬‬ ‫‪‬‬

‫و‪ٔ ٝ‬ی س‪ٛ‬ا٘س اَالػبر قٕب ضا ثب آذطیٗ ‪ٚ‬لبیغ دبیش‪ ٖٛ‬ث‪ ٝ‬ض‪ٚ‬ظ و‪ٙ‬س ‪ٕٞ .‬چ‪ٙ‬یٗ ‪Vaults of Parnassus‬‬
‫ث‪ ٝ‬آزضؼ [‪ ONLamp.com Python DevCenter ٚ ،] 21‬ث‪ ٝ‬ازضؼ [‪ٚ ،] 22‬‬
‫‪dirtSimple.org‬ث‪ ٝ‬آزضؼ [‪٘ ٚ ،] 23‬ىبر دبیش‪ ٖٛ‬ث‪ ٝ‬آزضؼ [‪ ٚ] 24‬ثؿیبض ثؿیبض ٔ‪ٙ‬بثؼی اظ ایٗ لجیُ‬
‫ٔ‪ٛ‬ػ‪ٛ‬زؾز ‪.‬‬

‫‪@PythonForever‬‬
‫خالصِ‬

‫او‪ ٖٛٙ‬ث‪ ٝ‬دبیبٖ ایٗ وشبة ضؾیسیٓ ‪ ،‬أب ‪ٕٞ‬بٖ َ‪ٛ‬ضی و‪ٌ ٝ‬فش‪ ٝ‬قس ‪ ،‬ایٗ آغبظ یه دبیبٖ اؾز ‪ ! .‬او‪ ٖٛٙ‬قٕب یه‬
‫وبضثطٔكشبق دبیش‪ٞ ٖٛ‬ؿشیس ‪ ٚ‬قه ٘ساضیس و‪ ٝ‬ثطای حُ ثؿیبضی اظ ٔؿبئُ ثب دبیش‪ ٖٛ‬آٔبز‪ٞ ٜ‬ؿشیس ‪ .‬قٕب ٔی س‪ٛ‬ا٘یس‬
‫قط‪ٚ‬ع و‪ٙ‬یس ث‪ ٝ‬اس‪ٔٛ‬بر وطزٖ وبٔذی‪ٛ‬سطسبٖ سب ‪ٞ‬ط ٌ‪ ٝ٘ٛ‬اظ وبض‪ٞ‬بی غیطلبثُ سه‪ٛ‬ض ضا ا٘ؼبْ ثس‪ٞ‬س ‪ ،‬یب ثبظی ‪ٞ‬بی زِر‪ٛ‬ا‪ٜ‬‬
‫ذ‪ٛ‬زسبٖ ضا ث‪ٛٙ‬یؿیس ‪ ٚ‬ذیّی ذیّی ثیكشط‪ ،‬ذت دؽ قط‪ٚ‬ع و‪ٙ‬یس !‬

‫‪@PythonForever‬‬

You might also like