Professional Documents
Culture Documents
انفصم انزابع :انذانت انمجهىنت /المذا 16 .............................. Anonymous /Lambda Function
انفصم انخامض :انمتغيزاث انعانميت وانمحهيت وانغيز محهيت 19 ..... Global &Local & Nonlocal variables
انفصم انظادص :انكهمت انمحجىسة عانمي 23 .............. ................................ Global Keyword
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 2
ميحرلا نمحرلا هللا بسم
انطزيق إنى انبزمجت بهغت انبايثىن
The Way to Python programming
ف٘ ٟزٖ اٌغضء ،عززؼشف ػٍ ٝاٌذٚاي أ ٚاٌٛظبئف ِٚ ،ب ٘ ٟاٌذاٌخ ِٚ ،ب ٘ ٛثٕبء اٌغٍّخ ٌٍذٚاي ، syntax
ؼب و١ف١خ ئٔشبء داٌخ ف. Python ٟ ٚاٌّىٔٛبد ٚ ، componentsأٔٛاع اٌذٚاي ،وّب عززؼٍُ أ ٠ا
رغبػذ اٌذٚاي ف ٟرمغ ُ١ثشٔبِغٕب ئٌ ٝأعضاء أطةرش أ ٚرمغةّخ ئٌةٚ ٝؽةذاد ِٚ modularةغ ّٔة ٛثشٔبِغٕةب
ثشىً أوجش ٚأوجش ،فاْ اٌذٚاي رغؼٍٗ أوضش رٕظّ١ب ا ٚأوضش لبثٍ١خ ٌإلداسح ٚاٌزؾىُ .
""""""docstring
)statement(s
return
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 3
: docstring عٍغٍخ اٌزٛص١ك ٝ٘ٚاخزظبس ٌغٍّخ documentation string
رغزخذَ ٘زٖ اٌغٍغٍخ ٌٛطف ػًّ اٌذاٌخ أ ٚاٌٛظ١فخ ٝ٘ٚ ،لّ١خ اخز١بس٠خ .
: statement عٍّخ أ ٚعًّ ثب٠ض ٝ٘ٚ ْٛػجبسح ػٓ عٍّخ ٚاؽذ أ ٚأوضش ِٓ عٍّخ ٚاٌز ٟرشىً عغُ
اٌذاٌخ ٠ٚ ،زُ رٕف١ز٘ب ف ٟوً ِشح ٠زُ اعزذػبء اٌذاٌخ ٠ٚ ،غت أْ رؾز٘ ٞٛزٖ اٌ ُغًّ statementsػٍٝ
ٔفظ ِغز ٜٛاٌّغبفخ اٌجبدئخ (ػبدح ا ِ 4غبفبد).
: return ئسعبع
رغزخذَ ٘زٖ اٌىٍّخ إلسعبع لّ١خ ِٓ اٌذاٌخ ٝ٘ٚ ،وٍّخ اخز١بس٠خ .
لّٕب ثزؼش٠ف داٌخ ػٓ ؽش٠ك اٌىٍّخ ٚ ، defلّٕب ثبػطبئٙب اعُ ٘ٚ greetزٖ اٌذاٌخ رأخز ِؼبًِ ، name
ٚثبٌزبٌ ٟػٓ رّش٠ش أ ٞلّ١خ ٔظ١خ داخً اٌذاٌخ عٛف ٠أخز ٘زٖ اٌمّ١خ ٠ٚم َٛثطبثؼزٙب .
رغّ ٝاٌغٍغٍخ األ ٌٝٚثؼذ سأط اٌذاٌخ ثبعُ ٟ٘ٚ docstringاخزظبس ٌغٍّخ عٍغٍخ اٌزٛص١ك
٠ٚ ، documentation stringزُ اعزخذاِٙب ٌفزشح ٚع١ضح ٌششػ ػًّ اٌذاٌخ .الؽع وً إٌض
اٌّٛعٛد ث ٛ٘ """ """ ٓ١ػجبسح ػٓ ٚطف ٌٍذاٌخ ٚششػ ٌٙب ٌزغ ً١ٙف ُٙاألوٛاد .
ػٍ ٝاٌشغُ ِٓ أْ اٌزٛص١ك اخز١بس ، ٞئال أٔٗ ٠ؼذ ِّبسعخ ثشِغخ ع١ذح ؽ١ش ٠زوشن ثبألوٛاد .
ػٕذ رّش٠ش لّ١خ nameعٛف ٠زُ اعزخذاِٙب ف ٟعٍّخ اٌطجبػخ وّب ِ٘ ٛىزٛة داخً عغُ اٌذاٌخ .
فىشح ػًّ اٌذٚاي ٘ٔ ٝفغٙب فىشح ػًّ رؼش٠ف اٌّزر١شاد ٔ ٝ٘ٚ ،فغٙب فىشح ػًّ اٌفئبد ، classes
ألْ وً شئ داخً ٌرخ اٌجب٠ض ْٛػجبسح ػٓ وبئٓ ،فىّب ٔم َٛثزؼش٠ف ِزر١ش صُ اعزذػبئٗ ثؼذ رٌه ،فإٔب
أ٠ؼب ا ثؼذ رؼش٠ف اٌذاٌخ ٔم َٛثبعزذػبئٙب (ثٕبد ٞػٍٙ١ب ٠ؼٕ.)ٝ
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 4
و١ف١خ اعزذػبء اٌذاٌخ call a function
ثّغشد رؾذ٠ذ اٌذاٌخ ثبعزخذاَ ّ٠ ، defىٕٕب رغّ١زٙب ِٓ خلي داٌخ آخش ٜأ ٚثشٔبِظ آخش أ ٚؽزِٓ ٝ
شبشخ أٚاِش اٌجب٠ض ْٛأِٛ ٚعٗ اٌجب٠ضٚ Python prompt ْٛالعزذػبء داٌخ ٔ ،م َٛثجغبؽخ ثىزبثخ اعُ
اٌذاٌخ ِغ ِؼبِلد اٌزّش٠ش إٌّبعجخ وب٢ر: ٟ
)'>>> greet('Paul
الحظ أن عند استدعاء الدالة فالبد أن نمرر لها اسم ،فأي قيمة ستكتبها بين القوسين ) ( فهذه سوف
تستخدم داخل جسم الدالة فعندما مررنا كلمة Paulتم طباعتها .
output
!Hello, Paul. Good morning
ف ٟاٌّضبي اٌغبثك ٌ ،ذٕ٠ب عٍغٍخ docstringأعفً سأط اٌٛظ١فخ ِجبششحٔ .غزخذَ ثشىً ػبَ ػلِبد
االلزجبط اٌضلص١خ ثؾ١ش ّ٠ىٓ أْ رّزذ عٍغٍخ docstringئٌ ٝأعطش ِزؼذدح.
٘ زٖ اٌغٍغٍخ ِزبؽخ ٌٕب وظفخ ٌٍذاٌخ ّ٠ٚ attribute of the functionىٓ اعزذػبء ٘زٖ docstringػٓ
ؽش٠ك وٍّخ __. __doc
)__>>> print(greet.__doc
output
This function greets to
the person passed in as
a parameter
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 5
ّ٠ ىٓ أْ رؾز٘ ٞٛزٖ اٌؼجبسح ػٍ ٝرؼج١ةش ٠ expressionةزُ رمّ١١ةٗ صةُ ئسعةبع لّ١ةخ ٘ةزا اٌزؼج١ةش ٚ ،ئرا ٌةُ
٠ىٓ ٕ٘بن رؼج١ش ف ٟاٌؼجبسح أ ٚئرا وبٔذ ػجبسح ٔ returnفغٙب غ١ش ِٛعٛدح داخً داٌخ ،فةاْ اٌذاٌةخ عةزؼ١ذ
اٌىبئٓ . None
))">>> print(greet("May
!Hello, May. Good morning
None
الؽع أْ ٛ٘ Noneاٌمّ١خ اٌز ٟرُ ئسعبػٙب ثؼذ ؽجبػخ االعُ ِجبششح ٚال ٠زُ اعزخذاَ عٍّخ . return
))print(absolute_value(2
))print(absolute_value(-4
output
2
4
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 6
ٔ : Scope and Lifetime of variablesطبق اٌّزر١شاد ٚػّش٘ب .
ٔ : Scope of variables طبق اٌّزر١ش أِ ٚذ ٜاٌّزر١ش
ٔطبق اٌّزر١ش ٘ ٛعضء اٌجشٔبِظ ؽ١ش ٠زُ اٌزؼشف ػٍ ٝاٌّزر١ش ،ال ّ٠ىٓ سؤ٠خ اٌّؼٍّبد Parameters
ٚاٌّزر١شاد variablesاٌز ٟرُ رؾذ٠ذ٘ب داخً داٌخ ِٓ خبسط اٌذاٌخ ٚثبٌزبٌ ٟفاْ ٘زٖ ٚ Parameters
٠ variablesىٌّٙ ْٛب ٔطبق ِؾٍ. local scope ٟ
x = 20
)(my_func
)print("Value outside function:",x
output
Value inside function: 10
Value outside function: 20
ٔ لؽع أْ لّ١خ xرغب 02 ٞٚف ٟاٌجذا٠خ ،ػٍ ٝاٌةشغُ ِةٓ أْ اٌذاٌةخ () my_funcلةذ غ١ةشد لّ١ةخ x
ئٌ ، 02 ٝئال أٔٙب ٌُ رإصش ػٍ ٝاٌمّ١خ خبسط اٌذاٌخ ٘ٚزا اٌغجت ألْ اٌّزر١ش xداخً اٌذاٌخ ِزر١ش ِؾٍٟ
local variableثبٌٕغجخ ٌٍذاٌخ ِ ٛ٘ٚزر١ش ِخزٍف ػٓ اٌّزر١ش اٌّٛعٛد خبسط اٌذاٌخ ػٍة ٝاٌةشغُ ِةٓ
أّٔٙب ٠ؾّلْ ٔفظ األعّبء ،ئال أّٔٙب ِزر١شِ ٓ٠خزٍفٌّٙ ٓ١ب ٔطبلبد ِ scopesخزٍفخ .
ٔ ِٓ بؽ١خ أخشّ٠ ، ٜىٓ سؤ٠خ اٌّزر١شاد اٌّٛعٛدح خبسط اٌذاٌخ ِٓ داخةً اٌذاٌةخ ()ٚ my_funcرٌةه
ألْ اٌّزر١ش اٌّٛعٛد خبسط اٌذاٌخ ٌذٔ ٗ٠طبق ػبٌّٚ global scope ٟثبٌزةبٌّ٠ ٟىٕٕةب لةشاءح ٘ةزٖ اٌمةُ١
ِٓ داخً اٌذاٌخ ٌٚىٓ ال ّ٠ىٕٕب رر١١ش٘ب (وزبثزٙب)ٌٚ .ى ٟرم َٛثزؼذ ً٠لّ١خ اٌّزر١ةشاد اٌّٛعةٛدح خةبسط
اٌذاٌخ ٠غت اإلػلْ ػٕٙب وّزر١شاد ػبٌّ١خ ثبعزخذاَ اٌىٍّخ األعبع١خ . global
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 2
: Types of Functionsأٔٛاع اٌذٚاي
ف ٟاألعبط ّ٠ ،ىٕٕب رمغ ُ١اٌذٚاي ئٌ ٝإٌٛػ ٓ١اٌزبٌ:ٓ١١
: Built-in functions دٚاي ِذِغخ أِ ٚؼّٕخ
ٝ٘ٚدٚاي ِجٕ١خ ِٚضؾذدح ِغجمب ُ داخً ٌرخ ثب٠ضٕ٘ٚ ، ْٛبن اٌّئبد ِٓ اٌذٚاي اٌ ُّؾؾذح ِغجمب ا ِٛٚعٛدح
داخً ٌرخ اٌجب٠ضِ ْٛضً داٌخ اٌطجبػخ )(ٚ printداٌخ االدخبي )(ٚ inputغ١ش٘ب ...
def add_numbers(x,y):
sum = x + y
return sum
num1 = 5
num2 = 6
output
Enter a number: 2.4
Enter another number: 6.5
The sum is 8.9
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 8
ُمعامالث انذوال: انذرص انثاوي
(Python Functions Arguments)
ذ٠خ رؾذ١ف١ف رزؼٍُ وٛ ٘زٖ اٌذسط عٟفٚ ، arguments عبئؾٌٛشا ِٓ ا١ِزر
ا ذ داٌخ رأخز ػذداا٠ّىٕه رؾذ٠
. arbitrary arguments ٚ keyword ٚ default ًخ ِض١غ١اي ثبعزخذاَ اٌىٍّبد اٌشئٚ٘زٖ اٌذ
output
Hello Monica, Good morning!
ٔظشا ا ألٕٔبٚ ، msg ٟٔؾ اٌضب١عٌٛاٚ name يٚؾ األ١عٌٛ ا2 Arguments ْ ٘زٖ اٌذاٌخ رأخز ِؼبِل
. ذ١ز اٌذاٌخ ثشىً ع١زُ رٕف٠ٚ ؾذس خطأ٠ ش ِؼبِلْ فأٗ ال٠لّٕب ثزّشٚ ٕب ٘زٖ اٌذاٌخ١اعزذػ
: ٟر٢ؾذس خطأ وب٠ ٗٔاؽذ فاٚ Argument ش٠الؽع ػٕذ رّش
>>> greet("Monica") # only one argument
TypeError: greet() missing 1 required positional argument: 'msg'
: ٟر٢ؾذس خطأ وب٠ ٗٔ فاArgument ٞش أ٠الؽع ػٕذ ػذَ رّش
>>> greet() # no arguments
TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'
The Way To Python 3 … Functions…. الطريق إلى برمجة بلغة البايثون..… Author , Eng/ Mahmoud 9
٠ زُ ٚطف صلصخ أشىبي ِخزٍفخ ِٓ ٘زا إٌٛع وب٢ر: ٟ
أٚالا ِ : Default Arguments :ؼبِلد رؾز ٞٛػٍ ٝل ُ١افزشاػ١خ
ّ٠ىٕٕب اعزخذاَ لّ١خ افزشاػ١خ Defaultداخً ِؼبِلد اٌذاٌخ ثبعزخذاَ ػبًِ اإلعٕبد (=) .
)"greet("Kate
)"?greet("Bruce", "How do you do
output
!Hello Kate, Good morning
?Hello Bruce, How do you do
اٌم ُ١االفزشاػ١خ ٝ٘: default valuesلة٠ ُ١ةزُ اعةزخذاِٙب داخةً ٚعة١طبد اٌذاٌةخ ٠ٚ ،ةزُ اعةزخذاِٙب فةٟ
ؽبٌخ ػذَ ادخبي اٌّغزخذَ لّ١خ غ١ش٘ب ٚ ،ئرا ٌةُ ٠ةذخً اٌّغةزخذَ لّ١ةخ غ١ش٘ةب فغةٛف ٠ةزُ اعةزخذاَ اٌمّ١ةخ
االفزشاػ١خ اٌز ٟرُ رؾذ٠ذ٘ب ِغجمب ا .
ف ٟاٌّضبي اٌغبثك ٔلؽع أْ اٌذاٌخ )( greetرؾز ٞٛػٍٚ ٝع١ط 2 Arguments ٓ١وب٢ر: ٟ
ِ : name parameter ؼبِةةً أٚ ٚعةة١ؾ ٘ٚ nameةةزا Argumentال ٠ؾزةة ٞٛػٍةة ٝلّ١ةةخ افزشاػةة١خ
ٌزٌه ٘زا اٌٛع١ؾ لّ١خ ِطٍٛثخ ثشىً ئٌضاِ mandatory ٟأصٕبء اعزذػبء اٌذاٌخ .
: msg parameter اٌٛع١ؾ ٘ٚ msgزا ٠ Argumentؾز ٞٛػٍة ٝلّ١ةخ افزشاػة١خ default value
لّ١زٙةب "!ٌ "Good morningةزٌه ٘ةزا اٌٛعة١ؾ غ١ةش ئٌضاِة ٟفٙة ٛلّ١ةخ اخز١بس٠ةخ optional value
أصٕبء اعزذػبء اٌذاٌخ ٚ ،ئرا رُ رٛف١ش لّ١خ ،فغ١زُ اعزجذاٌٙب overwriteثبٌمّ١خ االفزشاػ١خ.
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 11
ْٛى٠ ٌْىٓ ثّغشد أٚ . خ١ُ افزشاػ١ب لٌٙ ٟ اٌزArguments ِٓ ػذدْٞ داخً اٌذاٌخ أٛى٠ ّْىٓ أ٠
ٍٝدح ػٛعٌّٛ اarguments غ١ّ عٞٛغت أْ رؾز١ فdefault argument ٟٕب ِؼبًِ افزشاػ٠ٌذ
non-default خ١ش افزشاػ١ّىٓ ٌٍّؼبِلد اٌر٠ أٔٗ الٟٕؼ٠ ٘زاٚ ، خ١ُ افزشاػ١ لٍٝؼب ػ
ا٠ٓ أ١ّ١ٌا
اٌذاٌخٟ فّضلا ػٕذِب ٔغزذػ، default arguments خ١ أْ رزجغ اٌّؼبِلد االفزشاػarguments
: ٟر٢ٓ ِؼبِلد اٌذاٌخ وب١ً ث٠َ ثبٌزجذٛٔمٚ
خ١غ١ وٍّبد سئٍٝ ػٞٛ ِؼبِلد رؾز: Keyword Arguments : ب ا١ٔ صب
arguments اٌّؼبِلدٌُٟ ئ١ض ٘زٖ اٌم١زُ رخظ٠ ، values ُ١ داٌخ ِغ ثؼغ اٌمٟػٕذِب ٔغزذػ
ض١رخظٚ اٌذاٌخٟ ػٕذِب ٔغزذػ، greet() اٌذاٌخٟ ف، ً اٌّضبي١ عجٍٝػ. position بٙػؼٌّٛ ؽجمب ا
:ٟر٢ب وبٌٙ ُ١ثؼغ اٌم
greet("Bruce", "How do you do?")
How do you do ّخ١ٓ اٌم١١زُ رؼ٠ ًثبٌّضٚ name يٚ " ٌٍّؼبًِ األBruce" ّخ١ٓ اٌم١١زُ رؼ١فغ
.msg ٟٔ اٌّؼبًِ اٌضبٌٝئ
، Keyword Arguments خ١غ١اي ثبعزخذاَ ِؼبِلد اٌىٍّبد اٌشئٚ ثبعزذػبء اٌذPython رغّؼ
: ٟر٢ػغ) اٌّؼبِلد وبِٛ( ت١ش رشر١١ّىٓ رر٠ ، مخ٠زٖ اٌطشٙاي ثٚ اٌذّٟػٕذِب ٔغٚ
# 2 keyword arguments
greet(name = "Bruce",msg = "How do you do?")
The Way To Python 3 … Functions…. الطريق إلى برمجة بلغة البايثون..… Author , Eng/ Mahmoud 11
خ١غ١ ثؼذ ِؼبِلد اٌىٍّبد اٌشئpositional argument خ١ػؼِٛ د ِؼبِلدٛعٚ ٞإد١ ع
: ٌٟ اٌزبٛ إٌؾٍٝس أخطبء ِضً اعزذػبء اٌذاٌخ ػٚ ؽذٌٝ ئkeyword arguments
output
SyntaxError: non-keyword arg after keyword arg
خ١ائٛ ِؼبِلد ػشٚخ أ١ ِؼبِلد رؼغف: Arbitrary Arguments : صبٌضب ا
ٌزٌه، داٌخٌٝش٘ب ئ٠زُ رّش١ عٟ اٌزArguments ال ٔؼشف ِغجماب ػذد اٌّؼبِلد، ْب١ ثؼغ األؽٟف
ٟائٛالف ِٓ خلي اعزذػبءاد داٌخ ِغ ػذد ػشٌّٛع ِٓ إٌٛ اٌزؼبًِ ِغ ٘زا اPython ؼ ٌٕب ٌرخ١رز
ًِك اعزخذاَ ػلِخ إٌغّخ (*) لجً اعُ اٌّؼب٠فخ ػٓ ؽش١ظٌٛف ا٠ رؼشٟزُ رٌه ف٠ٚ ، ِٓ اٌّؼبِلد
ٌٟ الؽع اٌّضبي اٌزب. ع ِٓ اٌّؼبِلدٌٕٛ ٘زا اٌٌٝإلشبسح ئ
def greet(*names):
"""This function greets all
the person in the names tuple."""
output
Hello Monica
Hello Luke
Hello Steve
Hello John
٘زٖ اٌّؼبِلدwrapped ف١ٍزُ رر٠ . ِٓ اٌّؼبِلدٟائٛ الؽع ٌمذ لّٕب ثبعزذػبء اٌذاٌخ ِغ ػذد ػش
غ اٌّؼبِلد١ّ داخً اٌذاٌخ العزؼبدح عfor ٔغزخذَ ؽٍمخٚ ، اٌذاٌخٌٝش٘ب ئ٠ لجً رّشtuple خ١ٕداٌخ ث
.ِٜشح أخش
The Way To Python 3 … Functions…. الطريق إلى برمجة بلغة البايثون..… Author , Eng/ Mahmoud 12
انذرص انثانث :انتكزاريت
)(Recursion
ف٘ ٟزا اٌذسط ،عززؼٍُ و١ف١خ ئٔشبء داٌخ رىشاس٠خ ( recursive functionداٌخ رغزذػٔ ٟفغٙب).
: factorial اٌّؼشٚة ٘ ٛؽبطً ػشة عّ١غ األػذاد اٌظؾ١ؾخ ِٓ 0ئٌ٘ ٝزا اٌشلُ ،ػٍ ٝعجً١
اٌّضبي ِ ،ؼشٚة ُ٠( 6شبس ئٌ ٗ١ثبٌشِض !: ٛ٘ ) 6
ِ ضبي ػٍ ٝداٌخ رىشاس٠خ ٌٍؾظٛي ػٍِ ٝؼشٚة factorialػذد طؾ١ؼ.
def factorial(x):
""""""This is a recursive function to find the factorial of an integer
if x == 1:
return 1
else:
))return (x * factorial(x-1
num = 3
))print("The factorial of", num, "is", factorial(num
output
The factorial of 3 is 6
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 13
ف ٟاٌّضبي اٌغبثك ،اٌذاٌخ )( ٝ٘ factorialداٌخ رىشاس٠خ رغذػٔ ٟفغٙب.
ػٕذِب ٔغذػ٘ ٟزٖ اٌذاٌخ ّٔٚشس ٌٙب ػذداا طؾ ١اؾب ِٛعجاب ،فأٙب عزغزذػٔ ٟفغٙب ثشىً ِزىشس ػٓ
ؽش٠ك رمٍ ً١اٌشلُ اٌز ٞرُ رّش٠شٖ ؽز ٟرظً ئٌ ٝاٌمّ١خ . 1
ٚ وً داٌخ رؼشة اٌشلُ ثّؼشٚة اٌشلُ اٌّٛعٛد أعفٍٗ ؽز ٝرظً ئٌ ٝاٌمّ١خ ّ٠ .1ىٓ ششػ ٘زٖ
اعزذػبء اٌذاٌخ recursive callف ٟاٌخطٛاد اٌزبٌ١خ.
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 14
def recursor():
recursor()
recursor()
output
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "<string>", line 2, in a
File "<string>", line 2, in a
File "<string>", line 2, in a
[Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
The Way To Python 3 … Functions…. الطريق إلى برمجة بلغة البايثون..… Author , Eng/ Mahmoud 15
انذرص انزابع :انذانت انمجهىنت /المذا
)(Anonymous /Lambda Function
ؼب ثبعُ داٌخ الِذا
ف٘ ٟزا اٌذسط ،عززؼشف ػٍ ٝاٌذاٌخ اٌّغٌٛٙخ ٚ ، Anonymousاٌّؼشٚفخ أ ٠ا
ٚ Lambdaعٛف رزؼٍُ ِب ٘ٚ ، ٟو١ف١خ رشو١جٙب ٚو١ف١خ اعزخذاِٙب ِغ أِضٍخ.
ّ٠ىةةٓ أْ رؾزةة ٞٛدٚاي Lambdaػٍةة ٝأ ٞػةةذد ِةةٓ اٌٛعةة١طبد ٌٚ argumentsىةةٓ رؾزةة ٞٛػٍةة ٝرؼج١ةةش
ٚ expressionاؽةةذ فمةةؾ ٠ ،ةةزُ رم١ةة ُ١اٌزؼج١ةةش ٚئػبدرةةّٗ٠ .ىةةٓ اعةةزخذاَ دٚاي Lambdaؽ١ضّةةب وبٔةةذ وبئٕةةبد
اٌذٚاي ِ function objectsطٍٛثخ.
))print(double(5
output
10
فةةة ٟاٌجشٔةةةبِظ اٌغةةةبثك ٠ةةةزُ اعةةةزخذاَ داٌةةةخ ٕ٘ٚ، lambdaةةةب ٘ xةةة ٟػجةةةبسح ػةةةٓ اٌّؼبِةةةً أ ٚاٌٛعةةة١ؾ
ٚ argumentاٌمّ١خ ٟ٘ x * 2اٌزؼج١ش اٌز٠ ٞزُ رمٚ ّٗ١١ئػبدرٗ.
٘ زٖ اٌذاٌخ ٌ١ظ ٌٙب اعُ ٚ ،رم َٛثاسعبع وبئٓ اٌذاٌخ اٌز ٞرُ رؼ١ٌ ٕٗ١١م َٛثّؼبػفخ اٌ ُّؼشف.
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 16
٘ : Anymouse Function Syntax زٖ داٌخ الِذا
double = lambda x: x * 2
٘ : Normal Function Syntax زٖ داٌخ ػبد٠خ ٝ٘ٚرمش٠جب ا ٔفظ اٌذاٌخ اٌغبثمخ
def double(x):
return x * 2
ٔغزخذَ دٚاي lambdaػٕةذِب ٔؾزةبط ئٌة ٝداٌةخ غ١ةش ِؼشٚفةخ ٌفزةشح لظة١شح ِةٓ اٌةضِٓ.ففةٌ ٟرةخ اٌجةب٠ض، ْٛ
ٔغزخذِٙب ػّ ٛاِب وٛع١طخ أ ٚوّؼبًِ ٌذاٌخ راد رشر١ت أػٍ٘ٚ( higher-order function ٝة ٝداٌةخ رأخةز
دٚاي أخش ٜوٛعبئؾ .)arguments
رُغزخذَ ٚظبئف Lambdaعٕجاب ئٌ ٝعٕت ِغ اٌذٚاي اٌّؼّٕخ ِضً داٌخ )(ٚ filterداٌخ )( mapئٌخ.
ِ ضبي 0ػٍ ٝداٌخ ِ lambdaغ داٌخ )(ٌ filterفٍزشح األسلبَ اٌضٚع١خ فمؾ ِٓ اٌمبئّخ list
# Program to filter out only the even items from a list
]my_list = [1, 5, 4, 6, 8, 11, 3, 12
)print(new_list
output
][4, 6, 8, 12
٠ زُ اعزذػبء اٌذاٌخ ِغ عّ١غ اٌؼٕبطش اٌّٛعٛدح ف ٟاٌمبئّخ ٠ٚ my_listزُ ئسعبع لبئّخ عذ٠ذح new_list
رؾز ٞٛػٍ ٝاٌؼٕبطش اٌز ٟرؾمك اٌششؽ ٚرشعغ Trueػٓ ؽش٠ك رم ُ١١اٌذاٌخ ٌٙ lambdaب .
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 12
ِ ضبي 0ػٍ ٝداٌخ ِ lambdaغ داٌخ )(ٌّ mapؼبػفخ وً األسلبَ اٌّٛعٛدح داخً اٌمبئّخ list
)print(new_list
output
][2, 10, 8, 12, 16, 22, 6, 24
٠ زُ اعزذػبء اٌذاٌخ ِغ عّ١غ اٌؼٕبطش اٌّٛعٛدح ف ٟاٌمبئّخ ٠ٚ my_listزُ ئسعبع لبئّخ عذ٠ذح new_list
رؾز ٞٛػٍ ٝاٌؼٕبطش اٌز ٟرؾمك اٌششؽ ٚرشعغ Trueػٓ ؽش٠ك رم ُ١١اٌذاٌخ ٌٙ lambdaب .
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 18
انذرص انخامض :انمتغيزاث انعانميت وانمحهيت وانغيز محهيت
)(Global &Local & Nonlocal variables
ف٘ ٟزا اٌذسط عززؼشف ػٍِ ٝزر١شاد ثب٠ض ْٛوبٌّزر١شاد اٌؼبٌّ١خ ٚ Global varaibleاٌّزر١شاد
اٌّؾٍ١خ ٚ local varaiblesاٌّزر١شاد غ١ش اٌّؾٍ١خ ٚ Nonlocal variablesعٕزؼشف ػٍ ٝأِبوٓ
اعزخذاِٙب .رؼشفٕب عبثمب ا ف ٟاٌغضء األٚي ػٓ ٔطبق اٌّزر١شاد . scope of variables
"x = "global
def foo():
)print("x inside:", x
)(foo
)print("x outside:", x
output
x inside: global
x outside: global
أخ١ةشا ،
ا ف ٟاٌّضبي اٌغبثك أٔشأٔب ِزر١شػبٌّ ٟاعّٗ ٚ xؽذدٔب داٌخ ()ٌ fooطجبػةخ اٌّزر١ةش اٌؼةبٌّ x ٟصةُ
ٔغزذػ ٟاٌذاٌخ )( fooؽ١ش عزطجغ لّ١خ ِ . xبرا ٌ ٛوٕذ رش٠ذ رر١١ش لّ١خ xداخً داٌخ ؟
"x = "global
def foo():
x = x * 2
)print(x
)(foo
output
UnboundLocalError: local variable 'x' referenced before assignment
ُ٠ ظٙةةةش اإلخةةةشاط خطةةةأ ا ألْ Pythonرؼبِةةةً xوّزر١ةةةش ِؾٍةةةٌٚ ٟةةةُ ٠ةةةزُ رؼش٠ةةةف xأ ٠ا
ؼةةةب داخةةةً ().foo
ٌٚزؼش٠ف اٌّزر١ش وّزر١ش ػةبٌّٔ ٟغةزخذَ اٌىٍّةخ األعبعة١خ اٌؼبٌّ١ةخ .globalعةٕزؼشف ػٍٙ١ةب ثشةىً أوجةش
ف ٟاٌذسط اٌمبدَ .
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 19
: local Variables اٌّزر١شاد اٌّؾٍ١خ
اٌّزر١شاد اٌّؾٍ١خ ٝ٘ local Variablesاٌّزر١شاد اٌز٠ ٟةزُ اإلػةلْ ػٕٙةب داخةً اٌذاٌةخ أ ٚفة ٟإٌطةبق
اٌّؾٍ٘ ، local scope ٟزا ٠ؼٕ ٟأٔٗ ال ّ٠ىٓ اٌٛطٛي ئٌ ٝاٌّزر١ش اٌّؾٍ ٟئال ِٓ داخً اٌذاٌخ فمؾ.
ِ ضبي ػٍ ٝاٌٛطٛي ئٌ ٝاٌّزر١ش اٌّؾٍ ِٓ local scope ٟخبسط : scope
def foo():
"y = "local
)(foo
)print(y
output
NameError: name 'y' is not defined
ُ٠ ظٙةةش اإلخةةشاط خطةةأ ا ألْ Pythonألٕٔةةب ٔؾةةبٚي اٌٛطةةٛي ئٌةةِ ٝزر١ةةش ِؾٍةة y ٟفةةٔ ٟطةةبق ػةةبٌّ ٟثّٕ١ةةب
اٌّزر١ش اٌّؾٍ٠ ٟؼًّ فمؾ داخً )( fooأ ٚإٌطبق اٌّؾٍ.ٟ
def foo():
"y = "local
)print(y
)(foo
output
local
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 21
ِ ضبي 0ػٍ ٝئٔشبء اعزخذاَ اٌّزر١شاد اٌؼبِخ ٚاٌّؾٍ١خ فٔ ٟفظ اٌىٛد :
" x = "global
def foo():
global x
"y = "local
x = x * 2
)print(x
)print(y
)(foo
output
global global
local
ف ٟاٌىٛد اٌغةبثك ٔ ،ؼٍةٓ أْ ِ xزر١ةش ػةبَ y ٚوّزر١ةش ِؾٍة ٟداخةً اٌذاٌةخ )( ، fooصةُ ٔغةزخذَ ػبِةً
اٌؼشة * ٌزؼذ ً٠اٌّزر١ش اٌؼبَ ٔٚ xطجغ وً ِٓ .y ٚ x
ثؼذ اعزذػبء )( ، fooرظجؼ لّ١ةخ xػبٌّ١ةخ ألٕٔةب اعةزخذِٕب ٌ x * 2طجبػةخ ِةشر ٓ١ػبٌّ١اةب ، global
ٚثؼذ رٌه ٔ ،طجغ لّ١خ اٌّزر١ش اٌّؾٍ y ٟأِ ٞؾٍ.ٟ
ِ ضبي 0ػٍ ٝئٔشبء اعزخذاَ اٌّزر١شاد اٌؼبِخ ٚاٌّؾٍ١خ ثٕفظ االعُ :
x = 5
def foo():
x = 10
)print("local x:", x
)(foo
)print("global x:", x
output
local x: 10
global x: 5
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 21
ف ٟاٌىٛد اٌغةبثك ،اعةزخذِٕب ٔفةظ االعةُ ٌ xىةً ِةٓ اٌّزر١ةش اٌؼةبٌّٚ ٟاٌّزر١ةش اٌّؾٍةٔ .ٟؾظةً ػٍةٝ
ٔز١غخ ِخزٍفخ ػٕذِب ٔطجغ ٔفظ اٌّزر١ش ألْ اٌّزر١ش ُِؼٍَٓ ف ٟوةل إٌطةبل ، ٓ١أ ٞإٌطةبق اٌّؾٍةٌٍ ٟذاٌةخ
)(ٚ fooداخً إٌطبق اٌؼبٍِ ٟخبسط اٌذاٌخ )(. foo
ػٕذِب ٔطجغ اٌّزر١ش اٌّٛعٛد داخً )( fooفأٗ ٠خةشط ٘ٚ local x: 10ةزا ِةب ٠غةّ ٝثبٌٕطةبق اٌّؾٍةٟ
ٌٍّزر١ش.
ٚ ثبٌّضً ،ػٕذِب ٔطجغ اٌّزر١ش اٌّٛعٛد خةبسط )( ، fooفأةٗ ٠خةشط ٘ٚ ، global x: 10ةزا ِةب ٠غةّٝ
ثبٌٕطبق اٌؼبَ ٌٍّزر١ش.
ِ ضبي و١ف١خ أشبء ِزر١ش غ١ش ِؾٍ: nonlocal variable ٟ
def outer():
"x = "local
def inner():
nonlocal x
"x = "nonlocal
)print("inner:", x
)(inner
)print("outer:", x
)(outer
output
inner: nonlocal
outer: nonlocal
ف ٟاٌىٛد اٌغبثك ،رٛعةذ داٌةخ داخٍ١ةخ ِزذاخٍةخ اعةّٙب )(ٔ ، innerغةزخذَ اٌىٍّةخ اٌشئ١غة١خ nonlocal
إلٔشبء ِزر١ش غ١ش ِؾٍ٠ .ٟزُ رؼش٠ف اٌذاٌخ اٌذاخٍ١خ )( innerفٔ ٟطبق داٌخ أخش ٜخبسع١خ )(.outer
ِ لؽظخ :ئرا لّٕب ثزر١١ش لّ١خ اٌّزر١ش اٌر١ش ِؾٍ ، ٟفغزظٙش اٌزر١١شاد ف ٟاٌّزر١ش اٌّؾٍ.ٟ
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 22
انذرص انظادص :انكهمت انزئيظيت عانمي global
((Global Keyword
ف٘ ٟزا اٌذسط عززؼشف ػٍ ٝاٌىٍّخ اٌشئ١غ١خ ٚ ، globalاٌّزر١ش اٌؼبَ ِٚ global variableز ٝرغزخذَ
اٌىٍّبد اٌشئ١غ١خ . global
ِزر١شا خبسط داٌخ ،فأٗ ٠ىِ ْٛزر١ش ػبَ globalافزشاػ١اب ١ٌٚ ، defaultظ ػٍ١ه
ا ػٕذِب ٔؾذد
اعزخذاَ اٌىٍّبد اٌشئ١غ١خ . global
ٔ غزخذَ ٌ global Keywordمشاءح ٚوزبثخ ِزر١ش ػبَ global variableداخً داٌخ.
ِ ضبي ٌٍٛ 0طٛي ئٌ ٝاٌّزر١ش اٌؼبٌّ ِٓ ٟداخً داٌخ :
def add():
)print(c
)(add
output
1
ِٚ غ رٌه ،لذ ٠ىٌ ْٛذٕ٠ب ثؼغ اٌغٕ١بس٘ٛ٠بد اٌزٔ ٟؾزبط فٙ١ب ئٌ ٝرؼذ ً٠اٌّزر١ش اٌؼبَ ِٓ داخً داٌخ.
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 23
ِ ضبي 0رؼذ ً٠اٌّزر١ش اٌؼبَ ِٓ داخً اٌذاٌخ :
def add():
c = c + 2 # increment c by 2
)print(c
)(add
output
UnboundLocalError: local variable 'c' referenced before assignment
الؽةةع ػٕةةذ رؼةةذ ً٠لّ١ةةخ اٌّزر١ةةش اٌؼةةبَ ِةةٓ داخةةً اٌذاٌةةخ عةة١ؾذس خطةةأ ٘ةةزا ألٔةةٗ ّ٠ىٕٕةةب فمةةؾ اٌٛطةةٛي ئٌةةٝ
اٌّزر١ش اٌؼبَ ٌٚىٓ ال ّ٠ىٕٕب رؼذ ِٓ ٍٗ٠داخً اٌٛظ١فخ ٚاٌؾً ٌٙزا ٘ ٛاعزخذاَ اٌىٍّخ األعبع١خ . global
def add():
global c
c = c + 2 # increment by 2
)print("Inside add():", c
)(add
)print("In main:", c
output
Inside add(): 2
In main: 2
ف ٟاٌجشٔبِظ اٌغبثك ٔ ،ؾذد اٌّزر١ش cوىٍّخ أعبع١خ ػبٌّ١خ داخً اٌذاٌخ ().add
أخ١ةشا ،
ا صُ ٔم َٛثض٠ةبدح اٌّزر١ةش cثّمةذاس ، 0أ .c = c + 2 ٞثؼةذ رٌةه ٔ ،غةزذػ ٟاٌذاٌةخ () ، addصةُ
ٔم َٛثطجبػخ اٌّزر١ش اٌؼبَ .c
ئٌ١ه و١ف ّ٠ىٕٕب ِشبسوخ اٌّزر١شاد اٌؼبٌّ١خ ػجش ٚؽذاد ث١ض. Python modules ْٛ
config.a = 10
"config.b = "alphabet
)print(config.a
)print(config.b
ف ٟاٌّضبي اٌغبثك أٔشأٔب صلصةخ ٍِفةبد filesأ ٚأٔشةأٔب صلصةخ اٌٛؽةذاد ٘ modulesةُ ٚ config.py :
.main.py ٚ update.py
فٍِ ٟف ٠ config.pyزُ رخض ٓ٠اٌّزر١شاد اٌؼبِخ ٌـ ٚ .b ٚ aفٍِ ٟةف ٔ ، update.pyمة َٛثبعةز١شاد
ٚؽذح ٚ config.pyرؼذ ً٠لٚ .b ٚ a ُ١ثبٌّضً ،فةٍِ ٟةف ٔ ، main.pyغةزٛسد وةلا ِةٓ config.py
ٍِٚف ، .update.pyصُ أخ١شا ا ٔم َٛثطجبػخ ٚاخزجبس ل ُ١اٌّزر١شاد اٌؼبٌّ١خ عٛاء رُ رر١١ش٘ب أَ ال.
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 25
: Global in Nested Functions اٌىٍّخ اٌشئ١غ١خ globalداخً اٌذٚاي اٌّزذاخٍخ
ئٌ١ه و١ف١خ اعزخذاَ ِزر١ش ػبَ global variableف ٟداٌخ ِزذاخٍخ . Nested Function
def foo():
x = 20
def bar():
global x
x = 25
)(foo
)print("x in main: ", x
output
Before calling bar: 20
Calling bar now
After calling bar: 20
x in main: 25
ف ٟاٌجشٔبِظ اٌغبثك ،أػٍٕب ػٓ ِزر١ةش ػةبَ global variableداخةً داٌةخ ِزذاخٍةخ )(ٚ ، barثةذاخً
داٌخ () ،fooال رإصش xػٍ ٝاٌىٍّخ األعبع١خ اٌؼبٌّ١خ . global keyword
لجً ٚثؼذ اعزذػبء اٌذاٌةخ () ٠ barأخةز اٌّزر١ةش xلّ١ةخ اٌّزر١ةش اٌّؾٍة ٟأٚ ، x = 20 ٞخةبسط اٌذاٌةخ
() fooعةة١أخز اٌّزر١ةةش xاٌمّ١ةةخ اٌّؾةةذدح فةة ٟداٌةةخ () barأ٠ ٞبخةةز لّ١ةةخ ٘ . x = 25ةةزا ٘ةة ٛألٕٔةةب
اعزخذِٕب اٌىٍّخ األعبع١خ globalف x ٟإلٔشبء ِزر١ش ػبَ داخً داٌخ () ( barإٌطبق اٌّؾٍ.) ٟ
ئرا أعشٕ٠ب أ ٞرر١١شاد داخً داٌخ () ، barفغزظٙش اٌزر١١شاد خبسط إٌطبق اٌّؾٍ ٟأ.foo)( ٞ
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 26
انذرص انظابع :انىحذاث
( ( Modules
ؼب
ف٘ ٟزا اٌذسط عززؼٍُ ئٔشبء ٚاعز١شاد ٚؽذاد ِخظظخ custom modulesف ٟاٌجب٠ضٚ ، ْٛعزغذ أ ٠ا
رمٕ١بد ِخزٍفخ العز١شاد ٚاعزخذاَ ٚؽذاد ِخظظخ ِٚؼّٕخ built-in modulesداخً ٌرخ .Python
ُ٠طٍك ػٍ ٝاٌٍّف اٌز٠ ٞؾز ٞٛػٍ ٝوٛد ثٍرخ Pythonاعةُ ٚؽةذح ّٔط١ةخ ، Moduleػٍة ٝعةج ً١اٌّضةبي
example.pyع١ى ْٛاعُ اٌٛؽذح Moduleاٌخبص ثٙب ٘. example ٛ
ٔؾٓ ٔغزخذَ اٌٛؽذاد ٌ Modulesزمغ ُ١اٌجشاِظ اٌىج١شح ئٌٍِ ٝفبد طر١شح ِٕظّةخ ّ٠ىةٓ ئداسرٙةب ػةلٚح
ػٍ ٝرٌه ،رٛفش اٌٛؽذاد Modulesئِىبٔ١خ ئػبدح اعزخذاَ اٌزؼٍّ١بد اٌجشِغ١خ.
ّ٠ىٕٕب رؾذ٠ذ اٌذٚاي األوضش اعزخذا اِب ف ٟاٌٛؽذح إٌّط١خ ٚ Modulesاعز١شاد٘ب ،ثذالا ِةٓ ٔغةخ رؼش٠فبرٙةب
definitionsف ٟثشاِظ ِخزٍفخ.
ِ ضبي 0ئٔشبء ٚؽذح ّٔط١خ ثبعُ example.pyرؾز ٞٛػٍ٘ ٝزٖ اٌىٛد :
result = a + b
return result
ٕ٘ ةةةب لّٕةةةب ثزؼش٠ةةةف داٌةةةخ () addداخةةةً ٚؽةةةذح moduleرغةةةّٚ example ٝرأخةةةز اٌذاٌةةةخ سلّةةةٚ ٓ١رؼ١ةةةذ
ِغّٛػّٙب .
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 22
٘ زا ال ٠غزٛسد أعّبء اٌذٚاي اٌّؼشفخ ف ٟاٌّضبي ِجبششح ف ٟعذٚي اٌشِٛص اٌؾةبٌ . ٟأٙةب فمةؾ رغةزٛسد اعةُ
اٌٛؽذح إٌّط١خ ٕ٘بن . example module
ثبعزخذاَ اعُ اٌٛؽذح ّ٠ ، module nameىٕٕب اٌٛطٛي ئٌ ٝاٌذاٌخ ثبعزخذاَ ِؼبِةً اٌةذخٛي إٌمطةخ ( ) .
أِ ٚب ٠غّ dot . operator ٝفّضل :
)>>> example.add(4,5.5
9.5
ٌرةخ اٌجةب٠ضٌ ْٛةذٙ٠ب اٌىض١ةش ِةٓ اٌٛؽةذاد اٌم١بعة١خ ّ٠ٚ standard modulesىٕةه اٌزؾمةك ِةٓ اٌمبئّةخ اٌىبٍِةخ
ٌٛؽةةذاد Pythonاٌم١بعةة١خ ٚؽةةبالد اعةةزخذاِٙب ٘ modindexةةزٖ اٌٍّفةةبد ِٛعةةٛدح فةة ٟدٌ١ةةً Libداخةةً
اٌّٛلغ ؽ١ش لّذ ثزضج١ذ .Python
ّ٠ىةةٓ اعةةز١شاد اٌٛؽةةذاد اٌم١بعةة١خ Standard modulesثةةٕفظ اٌطش٠مةةخ اٌزةةٔ ٟغةةزٛسد ثٙةةب اٌٛؽةةذاد اٌزةةٟ
٠ؾذد٘ب اٌّغزخذَ .user-defined modules
ٕ٘بن ؽشق ِخزٍفخ العز١شاد اٌٛؽذاد modulesعٕزؼشف ػٍٙ١ب ف ٟاألعضاء ا٢ر١خ :
import math
)print("The value of pi is", math.pi
output
The value of pi is 3.141592653589793
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 28
الؽةع أٔةٗ رةُ ئػةبدح رغةّ١خ ٚؽةذح mathثبعةُ عذ٠ةذ ٘ة m ٛفٙةزا ٠ةٛفش فة ٟاٌٛلةذ ٚاٌغٙةذ ٚ ،ثبٌزةبٌ ٟػٕةةذ
اعزخذاَ رٍه اٌطش٠مخ فاْ ٝ٘ math.mاٌظؾ١ؾخ أِب math.piرى ْٛغ١ش طؾ١ؾخ داخً . scope
ِ ضبي العزذػبء لّ١خ ِ piجبششح ثذ ْٚاعزذػبء اٌـ moduleوٍٗ :
# import only pi from math module
output
The value of pi is 3.141592653589793
فِ ٟضً ٘زٖ اٌؾبٌخ ال ٔغزخذَ ( ٌٍ ) .ؾظٛي ػٍ ٝاٌزؼش٠فبد اٌّٛعٛدح داخً اٌٛؽذح .
لّ١خ piرغّ ٝخبط١خ أ ٚعّخ . attribute
ّ٠ىٓ اعز١شاد وً األعّبء اٌّٛعٛدح داخً اٌـ moduleػٓ ؽش٠ك سِض إٌغّخ ( * ) وب٢ر: ٟ
# import all names from the standard module math
ٕ٘ ب ،لّٕب ثبعز١شاد عّ١غ اٌزؼش٠فبد ِٓ ٚؽذح ٠ٚ ، mathزؼّٓ ٘زا عّ١غ األعّبء اٌّشئ١خ فةٔ ٟطبلٕةب
ثبعزضٕبء رٍةه اٌزة ٟرجةذأ ) _ ( فٙة ٝرؼش٠فةبد خبطةخ ٌٚ private definitionsىةٓ اعةز١شاد وةً شةٟء
ثؼلِخ إٌغّخ (*) ٌ١ظ ِّبسعخ ثشِغخ ع١ذح ألْ ٘زا ّ٠ىٓ أْ ٠ةإد ٞئٌة ٝرؼش٠فةبد ِىةشسح ٌٍ ُّؼةشف.
وّب أٔٗ ٠ؼ١ك ٠ٚظؼت لشاءح اٌىٛد اٌخبص ثٕب.
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 29
ْٛض٠ؽذح ثبٚ ِغبس ثؾش: Python Module Search Path
ؽةذحٚ ٓالا ػةٚ أInterpreter جؾةش٠ .ٓ ػةذح أِةبوٟ رجؾةش فةPython فةاْ ٌرةخ، module شاد١أصٕبء اعز
ٟ فةPython رجؾةش ٌرةخ، )built-in module ٝس ػٍةٛةزُ اٌؼضة٠ ُ صةُ (ئرا ٌةbuilt-in module ِذِغةخ
: ت١زا اٌزشرٙزُ اٌجؾش ث٠ ٌٟثبٌزبٚ ، sys.path ٟ اٌُّؾذدح فlist of directories لبئّخ األدٌخ
ًٌٟ اٌؾب١ٌ اٌذ
The current directory.
)ًئخ ِغ لبئّخ ِٓ اٌذالئ١ش اٌج١ْ (ِزرٛض٠ ِغبس اٌجب
PYTHONPATH (an environment variable with a list of directories).
ذ١ اٌزضجٍٝ اٌّؼزّذ ػًٟ االفزشاػ١ٌ اٌذ
The installation-dependent default directory.
>>> sys.path
['',
'C:\\Python33\\Lib\\idlelib',
'C:\\Windows\\system32\\python33.zip',
'C:\\Python33\\DLLs',
'C:\\Python33\\lib',
'C:\\Python33',
'C:\\Python33\\lib\\site-packages']
The Way To Python 3 … Functions…. الطريق إلى برمجة بلغة البايثون..… Author , Eng/ Mahmoud 31
الؽع ِب ٠ؾذس ػٕذ اعزذػبء my_moduleأوضش ِٓ ِشح :
>>> import my_module
This code got executed
>>> import my_module
>>> import my_module
ّ٠ ىٕٕب أْ ٔش ٜأٔٗ رُ رٕف١ز اٌىٛد اٌخبص ثٕب ِشح ٚاؽذح فمؾ٘ .زا ٠ؼٕ ٟأٔٗ رةُ اعةز١شاد اٌٛؽةذح اٌخبطةخ
ثٕب ِشح ٚاؽذح فمؾ.
ئرا رر١شد اٌٛؽذح إٌّط١خ اٌخبطخ ثٕب أصٕةبء دٚسح اٌجشٔةبِظ ،فغة١زؼ ٓ١ػٍٕ١ةب ئػةبدح رؾٍّٙ١ةب ، reload
ٚئؽذ ٜؽشق اٌم١بَ ثزٌه ٘ة ٟئػةبدح رشةر ً١اٌّزةشعُ اٌفةٛسٌ interpreter ٞىةٓ ٘ةزا ال ٠غةبػذ وض١ةشا.
ٌزٌه رٛفش Pythonؽش٠مخ أوضةش فبػٍ١ةخ ٌٍم١ةبَ ثةزٌهّ٠ .ىٕٕةب اعةزخذاَ اٌذاٌةخ )(٘ٚ ، reloadةزٖ اٌذاٌةخ
ِٛعٛدح داخً ٚؽذح . imp
لّٕب ُِغجمب ا ثؼًّ داٌخ () addداخً ٠ moduleغّٚ example ٝرأخز اٌذاٌخ سلّٚ ٓ١رؼ١ذ ِغّٛػّٙب .
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 31
ّ٠ ىٕٕب سؤ٠خ لبئّخ األعّبء اٌّظٕفخ داخً ٚؽذح اٌـ ٚ exampleأ٠ؼب ا ِؼ ُٙاٌذاٌخ . add
عّ١غ األعّبء األخش ٜاٌز ٟرجذأ ثششؽخ عفٍ١خ ( _ ) رغّ ٝطفبد أ ٚعّبد ٌرةخ اٌجةب٠ض ْٛاالفزشاػة١خ
ٚاٌّشرجطخ ثبٌٛؽذح (غ١ش ِؾذدح ِٓ لجً اٌّغزخذَ .)not user-defined
ّ٠ىٓ اٌؼضٛس ػٍ ٝعّ١غ األعّبء اٌّؾذدح فِ ٟغبؽخ االعُ namespaceاٌؾبٌ١ةخ ٌةذٕ٠ب ثبعةزخذاَ اٌذاٌةخ ()dir
ثذ ْٚأٚ ٞع١طبد . arguments
>>> a = 1
">>> b = "hello
>>> import math
)(>>> dir
]'['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 32
انذرص انثامه :انحشمت
((Package
ف٘ ٟزا اٌذسط عززؼٍُ و١ف١خ رمغ ُ١لبػذح األوٛاد اٌجشِغ١خ اٌخبطخ ثه ئٌٚ ٝؽذاد ٔ modulesظ١فةخ ٚفؼبٌةخ
ؼب عةززؼٍُ و١ف١ةخ اعةز١شاد ٚ importاعةزخذاَ اٌؾةضَ
ثبعزخذاَ ؽضَ ٌرخ اٌجب٠ضٚ ، Python packages ْٛأ ٠ا
packagesاٌخبطخ أ ٚاٌؾضَ اٌخبسع١خ third party packagesداخً اٌجشٔبِظ اٌخبص ثه.
ٔظشا ٌزضا٠ذ ؽغُ ثشٔبِظ اٌزطج١ك ٌذٕ٠ب ِةغ ٚعةٛد اٌىض١ةش ِةٓ اٌٛؽةذاد ، modulesفإٔةب ٔؼةغ اٌٛؽةذاد
ا
اٌّّبصٍخ فة ٟؽضِةخ ٚاؽةذح ٚٚؽةذاد ِخزٍفةخ فة ٟؽةضَ ِخزٍفةخ ألْ ٘ةزا ٠غؼةً اٌّشةشٚع أ ٚاٌجشٔةبِظ عةًٙ
اإلداسح ٚٚاػؼ ِٓ إٌبؽ١خ اٌّفب٘١ّ١خ.
ٔظشا ألْ اٌذٌّ٠ directory ً١ىٓ أْ ٠ؾز ٞٛػٍ ٝأدٌخ فشػ١ةخ ٍِٚ subdirectoriesفةبد files
ٚثبٌّضً ا
،فأٗ ّ٠ىٓ أْ رؾز ٞٛاٌؾضِخ packageػٍ ٝؽضَ فشػ١خ ٚٚ sub-packagesؽذاد .modules
٠غت أْ ٠ؾز ٞٛاٌذٌّ٠ directory ً١ىٓ ػٍٍِ ٝف ٠غٌّٚ __init__.py ٝى ٟرؼزجةشٖ Pythonؽضِةخ.
ّ٠ىٓ رشن ٘زا اٌٍّةف فبس ا
غةب ٌٚىٕٕةب ثشةىً ػةبَ ٔؼةغ وةٛد اإلػةذاد ٚاٌز١ٙئةخ ٌ initialization codeزٍةه
اٌؾضِخ ف٘ ٟزا اٌٍّف.
الؽع ٘زا اٌّضبي ٌٕفزشع إٔٔب ٔطةٛس ٌؼجةخ ّ٠ gameىةٓ أْ ٠ىة ْٛاٌزٕظة ُ١اٌّؾزّةً ٌٍؾةضَ ٚاٌٛؽةذاد وّةب
ِ٘ٛ ٛػؼ ف ٟاٌشىً أدٔبٖ.
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 33
: Importing module from a package اعز١شاد ٚؽذح ِٓ moduleؽضِخ package
ّ٠ىٕٕب اعز١شاد ٚؽذاد ِٓ modulesاٌؾضَ ثبعزخذاَ ػبًِ اٌزشر ً١إٌمطخ ().
ػٍ ٝعج ً١اٌّضبي ،ئرا أسدٔب اعز١شاد ٚؽذح startف ٟاٌّضبي اٌغبثك فّ١ىٓ اٌم١بَ ثزٌه ػٍ ٝإٌؾ ٛاٌزبٌ: ٟ
import Game.Level.start
ئرا وبٔذ ٘زٖ اٌٛؽذح moduleرؾز ٞٛػٍ ٝداٌخ رغّ select_difficulty() ٝف١غت أْ ٔغزخذَ االعُ
اٌىبًِ ٌإلشبسح ئٌٙ١ب.
)Game.Level.start.select_difficulty(2
ئرا ثذد ٘زٖ اٌغٍّخ اٌغبثمخ ؽٍ٠ٛخ فّ١ىٕٕب اعز١شاد moduleثذ ْٚثبدئخ اٌؾضِخ package prefixػٍٝ
إٌؾ ٛاٌزبٌ: ٟ
from Game.Level import start
ٕ٘بن ؽش٠مخ أخش ٜالعز١شاد اٌذاٌخ اٌّطٍٛثخ فمؾ (أ class ٚأٚ ِٓ ) variable ٚؽذح ّٔط١خ داخً
اٌؾضِخ ٟ٘ٚوّب : ٍٟ٠
from Game.Level.start import select_difficulty
ػٍ ٝاٌشغُ ِٓ أْ اٌطش٠مخ األخ١شح أع ًٙئال أٔٗ ال ٕ٠ظؼ ثبعزخذاَ ٘زٖ اٌطش٠مخ ألٔٗ ٠إد ٞاعزخذاَ
ِؼشفِ ٓ١زشبث.ٓ١ٙ
ِغبؽخ االعُ اٌىبٍِخ ئٌ ٝرغٕت االٌزجبط ِٕٚغ اططذاَ اعّّ ٓ١
أصٕبء اعز١شاد اٌؾضَ رجؾش Pythonف ٟلبئّخ األدٌخ اٌّؾذدح ف ، sys.path ٟثٕفظ ؽش٠ك اٌجؾش
ٌّغبس اٌٛؽذح إٌّط١خ.
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 34
انخاتمت
ئٌٕ٘ ٝب ٔى ْٛلذ أزٕ١ٙب ِٓ اٌغضء اٌضبٌةش ٘ٚةِ ٛةب اخةزض ثذاسعةخ اٌةذٚاي داخةً ٌرةخ اٌجةب٠ضٚ ْٛاٌّؼةشٚف
ثبعُ ٚ ، Python Functionsف ٟاٌذسٚط اٌمبدِخ عٛف ٔزؼشف ػٍ ٝأٔٛاع اٌج١بٔبد داخً ٌرخ اٌجب٠ضْٛ
ٚاٌّؼشٚفخ ثبعُ .Python Datatypes
ِةةةةةةٓ ثةةةةةةبة األِبٔةةةةةةخ اٌؼٍّ١ةةةةةةخ فٙةةةةةةزا اٌىزةةةةةةةبة ٘ةةةةةة ٛؽظةةةةةةٍ١خ ٚرغّ١ؼةةةةةةخ ِؼٍِٛةةةةةةبد ِةةةةةةٓ ِٛلةةةةةةةغ
ٚ ، /https://www.programiz.comرُ عشد وً دسٚط ٘زٖ اٌغٍغٍخ ثٕفظ رغٍغةً ٘ةزا اٌّٛلةغ .وّةب
االعزؼبٔخ ثّٛلغ . https://www.w3schools.com
٘ةةةزا اٌىزةةةبة ٘ةةة ٛطةةةذلخ عبس٠ةةةخ ػةةةٓ ٔفغةةةٚ ٟأ٘ةةةً ث١زةةةٚ ٟأؽجةةةبثٚ ، ٟأعةةةأي أْ ٠زمجةةةً ٘ةةةزا اٌؼّةةةً
٠ٚغٍؼةةةةٗ خبٌظةةةةب ا ٌٛعٙةةةةٗ اٌىةةةةشٚ . ُ٠وّةةةةب ٚػةةةةؼزٗ ثةةةة ٓ١أ٠ةةةةذوُ ٌزٕةةةةبٌٛا ِٕةةةةٗ ػٍّةةةةب ا ٌٚةةةة ٛوةةةةبْ ٠غةةةة١شا ا ،
فّ١ىةةةٕىُ أ٠ؼةةةب ا ٔشةةةشٖ ػٍةةة ٝأِٛ ٞلةةةغ ٚرؼةةةذِ ً٠ؾزةةةٛاٖ ثّةةةب ٠خةةةذَ إٌةةةبط ٚااللزجةةةبط ِٕةةةٗ أ٠ؼةةةب ا وّةةةب
رشبء ْٚثذ ْٚاعزئزاْ.
٠ ِٓٚشغت فٔ ٟغخخ ٘ ِٓ Wordزا اٌىزبة فّ١ىٕٗ أْ ٠شاعٍٕ ٝػٍ ٝاإل١ّ٠لد .
سؽةةةُ سعةةةلا أ٘ةةةذٌ ٜةةة ٟػ١ةةةٛث ، ٟأسعةةةِ ٛةةةٓ وةةةً شةةةخض ٠مةةةشأ ٘ةةةزا اٌىزةةةبة ئرا ٚلةةةف ػٕةةةذ خطةةةأ
ػٍّةةة ٝأ ٚخطةةةأ ئِلئةةة ٟأِ ٚؼٍِٛةةةخ لةةةذ ٠غةةةبء فّٙٙةةةب أْ ٠شاعةةةٍٕ ٟػٍةةة ٝاإلّ٠ةةة١لد ا٢ر١ةةةخ ٌىةةة ٝألةةةَٛ
ثاطلؽٗ ف ٟاٌطجؼبد ا٢خش ، ٜوّب أسع ٛأال رٕغٔٛب ِٓ طبٌؼ دػٛارىُ .
E-mail : mmasoliman19962020@gmail.com
E-FaceBook : Mahmoud Soliman
Youtube : https://www.youtube.com/channel/UCfZvWjnYnfxI55v4LNhBekA
نتحميم جميع انكتب انخاصت بىا يمكه متابعت قىاتي عهى انتيهيجزاو مه خالل هذا انزابط :
Telegram Channel : https://t.me/joinchat/-aC4Ps0pna5lY2M0
نتحميم جميع انكتب انخاصت بىا يمكه متابعت صفحتي عهى انفيض بىك مه خالل هذا انزابط :
Public Page: Help-me-page
Mahmoud Soliman
The Way To Python 3 … Functions…. ..… Author , Eng/ Mahmoudالطريق إلى برمجة بلغة البايثون 35
The Way To Python 3 … Functions…. الطريق إلى برمجة بلغة البايثون..… Author , Eng/ Mahmoud 36