در این مطلب، ویدئو آموزش پایتون برای مبتدیان 48 – بسته شدن پایتون + توابع تو در تو با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,060 –> 00:00:02,399
سلام بچه ها به ویدیوی بعدی
2
00:00:02,399 –> 00:00:04,560
آموزش پایتون برای مبتدیان در این
3
00:00:04,560 –> 00:00:06,210
ویدیو خوش آمدید، من به شما نشان خواهم داد که چگونه از
4
00:00:06,210 –> 00:00:10,050
توابع و توابع بسته شده در پایتون استفاده کنید،
5
00:00:10,050 –> 00:00:12,210
بنابراین بیایید
6
00:00:12,210 –> 00:00:14,700
شروع کنیم تا با توابع تو در تو شروع کنیم،
7
00:00:14,700 –> 00:00:18,449
بنابراین در پایتون می توانیم تعریف کنیم
8
00:00:18,449 –> 00:00:21,390
تابع تودرتو به این معنی است که ما می توانیم
9
00:00:21,390 –> 00:00:24,840
یک تابع را در داخل یک تابع تعریف کنیم، بنابراین
10
00:00:24,840 –> 00:00:27,210
اجازه دهید این مثال را به شما بزنم و در این
11
00:00:27,210 –> 00:00:29,789
مثال این تابع که یک
12
00:00:29,789 –> 00:00:33,420
تابع خارجی است مقداری متن یا پیام را به
13
00:00:33,420 –> 00:00:37,230
عنوان آرگومان می گیرد و من یک تابع دیگر
14
00:00:37,230 –> 00:00:40,860
را در داخل تابع خارجی تعریف کرده ام و من
15
00:00:40,860 –> 00:00:43,980
آن را به عنوان تابع داخلی نامگذاری کردم که
16
00:00:43,980 –> 00:00:46,980
مقدار متنی را
17
00:00:46,980 –> 00:00:50,340
که در تابع خارجی ارسال کرده ایم چاپ می کند و ما
18
00:00:50,340 –> 00:00:53,219
فقط تابع داخلی را در محدوده تابع خارجی فراخوانی می کنیم
19
00:00:53,219 –> 00:00:56,000
بنابراین این تابع به
20
00:00:56,000 –> 00:00:59,730
صورت محلی در داخل تابع خارجی اعلام می شود
21
00:00:59,730 –> 00:01:02,520
و ما فقط این را فراخوانی می کنیم.
22
00:01:02,520 –> 00:01:05,069
تابع درونی درون این
23
00:01:05,069 –> 00:01:07,799
تابع بیرونی اکنون به عبارت دیگر می
24
00:01:07,799 –> 00:01:10,460
توان گفت که این تابع بیرونی یک
25
00:01:10,460 –> 00:01:13,229
تابع محصور کننده است و این
26
00:01:13,229 –> 00:01:18,030
تابع درونی تابع محلی این است.
27
00:01:18,030 –> 00:01:20,549
تابع خارجی و حالا وقتی این
28
00:01:20,549 –> 00:01:22,590
تابع خارجی را فراخوانی میکنم و اجازه میدهم کد
29
00:01:22,590 –> 00:01:25,830
را اجرا کنم، فقط مقداری
30
00:01:25,830 –> 00:01:28,860
را که به عنوان آرگومان ارسال کردهایم چاپ میکند، بنابراین
31
00:01:28,860 –> 00:01:31,619
این آرگومان متنی را ارسال کردهایم که
32
00:01:31,619 –> 00:01:34,470
یک بار دیگر به دستور چاپ
33
00:01:34,470 –> 00:01:36,600
تابع داخلی منتقل میشود و از آنجایی که ما
34
00:01:36,600 –> 00:01:38,670
این تابع درونی را در داخل این
35
00:01:38,670 –> 00:01:41,430
تابع احاطه کننده فراخوانی می کنیم، مقدار را
36
00:01:41,430 –> 00:01:44,310
با استفاده از این دستور چاپ می کند، بنابراین وقتی
37
00:01:44,310 –> 00:01:47,579
یک تابع را در تابع دیگری اعلام می کنید،
38
00:01:47,579 –> 00:01:51,630
توابع تودرتو نامیده می شود،
39
00:01:51,630 –> 00:01:53,610
اجازه دهید یک مثال دیگر از تابع تودرتو به شما ارائه دهم
40
00:01:53,610 –> 00:01:56,850
و من این را تعریف کرده ام.
41
00:01:56,850 –> 00:02:00,540
تابع pop که تابع بیرونی ما
42
00:02:00,540 –> 00:02:04,290
یا تابع محصور کننده است و در اینجا
43
00:02:04,290 –> 00:02:08,128
تابعی به نام get last item
44
00:02:08,128 –> 00:02:11,370
که تابع داخلی ما یا تابع محلی
45
00:02:11,370 –> 00:02:13,890
است برای تابع pop تعریف کرده ام
46
00:02:13,890 –> 00:02:15,600
حالا این تابع puffs لیست را
47
00:02:15,600 –> 00:02:18,330
به عنوان آرگومان می گیرد و ما یک محلی تعریف کرده ایم.
48
00:02:18,330 –> 00:02:21,180
تابع داخل این تابع pop
49
00:02:21,180 –> 00:02:23,400
و آخرین مورد این تابع محلی دریافت
50
00:02:23,400 –> 00:02:26,190
می کند این است که هر زمان لیستی را به
51
00:02:26,190 –> 00:02:29,040
عنوان آرگومان به این تابع محلی ارسال می کنید،
52
00:02:29,040 –> 00:02:31,980
آخرین
53
00:02:31,980 –> 00:02:35,520
عنصر لیست را پیدا می کنیم و آخرین مقدار
54
00:02:35,520 –> 00:02:39,330
این لیست را برمی گردانیم، بنابراین در اینجا این آخرین
55
00:02:39,330 –> 00:02:42,090
نمایه لیست است و سپس
56
00:02:42,090 –> 00:02:44,760
آخرین مورد از لیست را
57
00:02:44,760 –> 00:02:46,890
که به عنوان آرگومان ارسال شده است برمی گرداند.
58
00:02:46,890 –> 00:02:48,690
بدانید که میتوانید
59
00:02:48,690 –> 00:02:51,480
تابعی به نام remove در لیستهای خود را فراخوانی کنید
60
00:02:51,480 –> 00:02:55,890
که برای حذف برخی از موارد
61
00:02:55,890 –> 00:02:58,260
از لیست استفاده میشود، بنابراین من فقط
62
00:02:58,260 –> 00:03:00,630
تابع remove را در لیست فراخوانی میکنم و به عنوان
63
00:03:00,630 –> 00:03:03,150
آرگومان لیست، تابعی را ارسال میکنم
64
00:03:03,150 –> 00:03:06,540
که متوجه میشود آخرین عنصر
65
00:03:06,540 –> 00:03:09,420
لیست بنابراین این آخرین عنصر لیست را به ما می دهد
66
00:03:09,420 –> 00:03:11,940
و این آخرین
67
00:03:11,940 –> 00:03:15,000
عنصر از لیست حذف می شود
68
00:03:15,000 –> 00:03:17,459
و در نهایت من به سادگی
69
00:03:17,459 –> 00:03:20,040
لیستی را که به عنوان آرگومان به
70
00:03:20,040 –> 00:03:22,350
تابع pop ارسال می شود برمی گردانم. بگویید
71
00:03:22,350 –> 00:03:23,970
این لیستی است که روی آن کار می
72
00:03:23,970 –> 00:03:26,519
کنیم و پنج عنصر دارد و ما در حال
73
00:03:26,519 –> 00:03:29,549
فراخوانی تابع pop در این لیست بارها
74
00:03:29,549 –> 00:03:32,610
و بارها هستیم، بنابراین اجازه دهید من کد را اجرا کنم
75
00:03:32,610 –> 00:03:34,290
و ببینیم چه اتفاقی می افتد
76
00:03:34,290 –> 00:03:36,600
تا بتوانید ببینید چه زمانی اولین پاپ فراخوانی
77
00:03:36,600 –> 00:03:38,670
می شود. آخرین e را حذف می کنیم عنصری
78
00:03:38,670 –> 00:03:41,120
که 6 از لیست است و سپس
79
00:03:41,120 –> 00:03:44,070
هر زمان که پاپ دوم فراخوانی
80
00:03:44,070 –> 00:03:47,040
شود، 4 را حذف می کند و هر زمان که
81
00:03:47,040 –> 00:03:49,620
متد سوم پاپ فراخوانی شود
82
00:03:49,620 –> 00:03:52,560
، 3 و غیره را حذف می کند، بنابراین به این صورت است که
83
00:03:52,560 –> 00:03:55,110
اکنون می توانید از توابع تو در تو در پایتون استفاده کنید.
84
00:03:55,110 –> 00:03:59,160
بیایید در مورد بسته شدن صحبت کنیم، بنابراین
85
00:03:59,160 –> 00:04:01,560
من از همان مثال تابع تو در
86
00:04:01,560 –> 00:04:03,660
تو که قبلاً به شما نشان دادم استفاده میکنم،
87
00:04:03,660 –> 00:04:06,870
بنابراین این تابع تودرتو در حال
88
00:04:06,870 –> 00:04:09,060
حاضر برای تبدیل این تابع تودرتو
89
00:04:09,060 –> 00:04:12,360
به یک بسته است، آنچه باید در اینجا انجام دهیم این
90
00:04:12,360 –> 00:04:15,859
است که تابع داخلی را
91
00:04:15,859 –> 00:04:20,430
بدون پرانتز برگردانید، بنابراین چیزی که
92
00:04:20,430 –> 00:04:23,610
در اینجا باید به آن توجه داشت این است که ما نیازی به برگرداندن
93
00:04:23,610 –> 00:04:26,880
این تابع داخلی با پرانتز
94
00:04:26,880 –> 00:04:27,540
نداریم، باید
95
00:04:27,540 –> 00:04:30,230
این تابع داخلی را بدون
96
00:04:30,230 –> 00:04:32,880
پرانتز برگردانیم و این سادهترین
97
00:04:32,880 –> 00:04:36,780
مثال بسته شدن است، بنابراین
98
00:04:36,780 –> 00:04:39,690
closure بنابراین یک closure تابعی است که
99
00:04:39,690 –> 00:04:43,380
مقدار بازگشتی آن به مقدار یک
100
00:04:43,380 –> 00:04:46,020
یا چند متغیر که خارج از تابع اعلان شده اند بستگی دارد،
101
00:04:46,020 –> 00:04:49,020
بنابراین در این مثال
102
00:04:49,020 –> 00:04:52,950
این متغیر متنی خارج
103
00:04:52,950 –> 00:04:56,790
از تابع داخلی و v اعلان شده است. مقدار این
104
00:04:56,790 –> 00:05:00,180
تابع داخلی به این متغیر متنی بستگی دارد
105
00:05:00,180 –> 00:05:03,810
که خارج از این
106
00:05:03,810 –> 00:05:06,600
تابع داخلی اعلام شده است و باعث می شود که یک
107
00:05:06,600 –> 00:05:09,300
بسته و بسته دارای خاصیت خاصی
108
00:05:09,300 –> 00:05:12,090
باشد که این
109
00:05:12,090 –> 00:05:15,480
شیء تابع بسته مقدار را در محدوده محصور به خاطر می آورد
110
00:05:15,480 –> 00:05:18,650
حتی اگر
111
00:05:18,650 –> 00:05:21,870
در حافظه وجود نداشته باشد. بنابراین من آن را به شما توضیح
112
00:05:21,870 –> 00:05:24,600
خواهم داد، اما اجازه دهید به شما نشان دهم چگونه
113
00:05:24,600 –> 00:05:28,050
از این تابع خارجی استفاده کنید که اکنون از
114
00:05:28,050 –> 00:05:30,300
بسته شدن استفاده می کند، بنابراین من متغیر a را اعلام می کنم به
115
00:05:30,300 –> 00:05:33,150
این معنی که این
116
00:05:33,150 –> 00:05:35,040
تابع بیرونی تابع داخلی را برمی گرداند
117
00:05:35,040 –> 00:05:38,220
که به این معنی است که اکنون
118
00:05:38,220 –> 00:05:41,100
تابع داخلی، بنابراین ما می توانیم از این a به
119
00:05:41,100 –> 00:05:44,130
عنوان تابع استفاده کنیم، بنابراین برای استفاده از این
120
00:05:44,130 –> 00:05:47,160
تابع a به عنوان تابع، می توانیم فقط با
121
00:05:47,160 –> 00:05:50,130
استفاده از پرانتز آن را a صدا کنیم زیرا این
122
00:05:50,130 –> 00:05:52,920
تابع هیچ آرگومان نمی گیرد، بنابراین
123
00:05:52,920 –> 00:05:55,320
ما هیچ آرگومانی را در اینجا ارسال نمی
124
00:05:55,320 –> 00:05:57,420
کنیم، اما فقط آن را به عنوان یک تابع فراخوانی کنید
125
00:05:57,420 –> 00:05:59,580
زیرا این تابع خارجی فقط
126
00:05:59,580 –> 00:06:02,670
تابع داخلی را برمی گرداند، بنابراین بیایید
127
00:06:02,670 –> 00:06:04,590
کد را اجرا کنیم و
128
00:06:04,590 –> 00:06:06,960
ببینیم وقتی این کد را اجرا می کنیم چه اتفاقی می افتد تا بتوانید ببینید که
129
00:06:06,960 –> 00:06:09,540
hello w چاپ می شود hich با استفاده از این
130
00:06:09,540 –> 00:06:12,780
دستور چاپ چاپ می شود هر زمان که این
131
00:06:12,780 –> 00:06:16,410
تابع را صدا کنیم، بنابراین اگر من فقط این را
132
00:06:16,410 –> 00:06:18,900
تابع بدون روش چاپ صدا
133
00:06:18,900 –> 00:06:21,570
کنم، توخالی را نیز چاپ می کند زیرا
134
00:06:21,570 –> 00:06:25,590
در اینجا ما فقط از چاپ برای
135
00:06:25,590 –> 00:06:28,980
چاپ متن استفاده می کنیم که با استفاده از
136
00:06:28,980 –> 00:06:32,250
بیرونی ارسال می شود. تابع در حال حاضر همانطور که گفتم closure
137
00:06:32,250 –> 00:06:34,590
یک شی تابع است که
138
00:06:34,590 –> 00:06:38,130
مقدار را در محدوده محصور به خاطر می آورد حتی اگر
139
00:06:38,130 –> 00:06:41,339
در حافظه وجود نداشته باشد،
140
00:06:41,339 –> 00:06:43,800
بنابراین محدوده محصور کننده ما تابع خارجی
141
00:06:43,800 –> 00:06:46,499
است، بنابراین حتی اگر تابع خارجی
142
00:06:46,499 –> 00:06:50,219
را پس از اعلام عبارت حذف کنیم
143
00:06:50,219 –> 00:06:53,519
و اگر a حاوی این
144
00:06