در این مطلب، ویدئو آموزش پایتون: تکرار کننده ها و تکرار شونده ها – چه هستند و چگونه کار می کنند؟ با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:23:08
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:01,350
سلام، همه چیز در این ویدیو چطور پیش میرود،
2
00:00:01,350 –> 00:00:03,480
من میخواستم به تکرار
3
00:00:03,480 –> 00:00:05,310
و تکرارکنندهها بپردازم، اکنون
4
00:00:05,310 –> 00:00:07,109
سردرگمی زیادی در مورد این اصطلاحات و
5
00:00:07,109 –> 00:00:08,580
معنای آنها وجود دارد و من قطعاً
6
00:00:08,580 –> 00:00:10,080
این سردرگمی را درک میکنم، زیرا درک
7
00:00:10,080 –> 00:00:11,519
آن نیز مدتی
8
00:00:11,519 –> 00:00:14,730
طول کشید. یک لیست به عنوان مثال، بنابراین
9
00:00:14,730 –> 00:00:17,220
یک لیست قابل تکرار است اما
10
00:00:17,220 –> 00:00:18,930
تکرار کننده نیست، بنابراین ممکن است کمی
11
00:00:18,930 –> 00:00:20,580
گیج کننده به نظر برسد، اما امیدواریم پس از تماشای
12
00:00:20,580 –> 00:00:21,990
این ویدیو دقیقاً متوجه شوید
13
00:00:21,990 –> 00:00:23,820
که این عبارات به چه معنا هستند و چگونه
14
00:00:23,820 –> 00:00:25,890
تعیین کنید که چه زمانی چیزی تکرارپذیر است و
15
00:00:25,890 –> 00:00:27,930
چه زمانی چیزی قابل تکرار است. یک تکرار کننده و ما
16
00:00:27,930 –> 00:00:28,949
همچنین می خواهیم یاد بگیریم که چگونه
17
00:00:28,949 –> 00:00:30,929
یک شی بسازیم که هم
18
00:00:30,929 –> 00:00:33,360
تکرار شونده و هم تکرار شونده باشد، اکنون این
19
00:00:33,360 –> 00:00:35,219
ویدیو فقط در مورد درک این
20
00:00:35,219 –> 00:00:36,600
تعاریف نیست، بلکه در مورد
21
00:00:36,600 –> 00:00:38,879
درک مفاهیم تکرار کننده نیز است
22
00:00:38,879 –> 00:00:41,160
تا بتوانیم کد بهتری بنویسیم. بنابراین
23
00:00:41,160 –> 00:00:42,960
درک این مفاهیم زیربنایی
24
00:00:42,960 –> 00:00:44,550
به شما کمک می کند کدی بنویسید که
25
00:00:44,550 –> 00:00:46,559
کارآمدتر باشد و همچنین به شما کمک می کند تا
26
00:00:46,559 –> 00:00:48,390
راه حل هایی برای مشکلات خاصی را در یک برنامه ببینید.
27
00:00:48,390 –> 00:00:49,770
راهی که ممکن است قبلاً به آن فکر نکرده باشید،
28
00:00:49,770 –> 00:00:51,870
پس با این گفته بیایید ادامه
29
00:00:51,870 –> 00:00:53,940
دهیم و شروع کنیم، بنابراین برای شروع، اجازه دهید
30
00:00:53,940 –> 00:00:56,010
ابتدا در مورد فواصل زمانی صحبت کنیم،
31
00:00:56,010 –> 00:00:58,500
اگر چیزی در سطح بالاتر به خوبی قابل تکرار باشد، به
32
00:00:58,500 –> 00:01:00,539
سادگی به این معنی است که
33
00:01:00,539 –> 00:01:02,520
چیزی است که میتوان آن را حلقه کرد،
34
00:01:02,520 –> 00:01:05,159
به عنوان مثال، یک لیست تکرارپذیر است، زیرا
35
00:01:05,159 –> 00:01:07,920
اکنون میتوانیم فهرستی را حلقه
36
00:01:07,920 –> 00:01:09,510
37
00:01:09,510 –> 00:01:11,130
بزنیم.
38
00:01:11,130 –> 00:01:12,990
39
00:01:12,990 –> 00:01:15,150
بیایید ببینیم این چگونه به نظر می
40
00:01:15,150 –> 00:01:17,100
رسد بنابراین من می خواهم یک
41
00:01:17,100 –> 00:01:19,710
لیست ساده و با چند آیتم ایجاد کنم و سپس
42
00:01:19,710 –> 00:01:22,680
روی آن حلقه بزنم تا بگویم اعداد برابر است و
43
00:01:22,680 –> 00:01:24,030
ما فقط آن را برابر یک دو
44
00:01:24,030 –> 00:01:27,180
سه قرار می دهیم و حالا بیایید روی این حلقه بزنید، بنابراین در
45
00:01:27,180 –> 00:01:29,460
خط بعدی در اینجا من برای numb در
46
00:01:29,460 –> 00:01:30,689
nums
47
00:01:30,689 –> 00:01:33,659
می گویم و سپس فقط عدد را چاپ می کنیم،
48
00:01:33,659 –> 00:01:35,549
بنابراین اگر آن را اجرا کنم، می توانید ببینید که
49
00:01:35,549 –> 00:01:37,170
از طریق حلقه حلقه می زند و مقادیر
50
00:01:37,170 –> 00:01:39,180
یک دو سه اکنون حلقه را دریافت می کنیم. تنها
51
00:01:39,180 –> 00:01:41,070
چیزهایی نیستند که میتوانیم به آنها حلقه بزنیم، میتوانیم
52
00:01:41,070 –> 00:01:44,780
از دیکشنریهای تاپلی حلقه بزنیم es strings
53
00:01:44,780 –> 00:01:46,950
ژنراتور فایلها و انواع اشیاء مختلف،
54
00:01:46,950 –> 00:01:49,439
بنابراین در پسزمینه چه اتفاقی میافتد،
55
00:01:49,439 –> 00:01:51,600
چگونه میتوانیم تشخیص دهیم که آیا
56
00:01:51,600 –> 00:01:53,700
چیزی میتواند حلقه شود یا نه، یا
57
00:01:53,700 –> 00:01:55,860
راه دیگری برای پرسیدن این سوال این است که چگونه میتوانیم بفهمیم
58
00:01:55,860 –> 00:01:58,020
که چیزی تکرارپذیر است اگر
59
00:01:58,020 –> 00:02:00,450
چیزی تکرار شود. پس
60
00:02:00,450 –> 00:02:02,939
باید یک متد خاص به نام آنترخار دوتایی داشته باشد،
61
00:02:02,939 –> 00:02:04,259
62
00:02:04,259 –> 00:02:06,450
پس اجازه دهید این را بنویسم که زیرخط دوتایی است.
63
00:02:06,450 –> 00:02:08,729
64
00:02:08,729 –> 00:02:10,649
65
00:02:10,649 –> 00:02:12,300
66
00:02:12,300 –> 00:02:13,410
67
00:02:13,410 –> 00:02:15,420
متدهای dunder یا متدهای خاص یا متدهای جادویی نامیده می شوند،
68
00:02:15,420 –> 00:02:18,300
بنابراین
69
00:02:18,300 –> 00:02:20,940
بیایید ببینیم آیا لیست ما دارای این متد dunder
70
00:02:20,940 –> 00:02:23,280
inter است یا خیر، بنابراین برای بررسی روش ها
71
00:02:23,280 –> 00:02:25,380
و ویژگی های موجود برای یک شی خاص،
72
00:02:25,380 –> 00:02:27,780
می توانیم به سادگی آن
73
00:02:27,780 –> 00:02:30,390
را به تابع dir داخلی منتقل کرده و آن را چاپ کنیم.
74
00:02:30,390 –> 00:02:34,080
بنابراین من میخواهم فعلاً حلقه for خود را نظر بدهم
75
00:02:34,080 –> 00:02:36,900
و دقیقاً در زیر آن،
76
00:02:36,900 –> 00:02:40,950
فهرست اعداد ما را چاپ کرده و ارسال میکنم،
77
00:02:40,950 –> 00:02:43,230
بسیار خوب، بنابراین این مقدار چیزهای خوبی را
78
00:02:43,230 –> 00:02:44,370
در اینجا برمیگرداند، اجازه دهید من درست کنم این کمی
79
00:02:44,370 –> 00:02:46,770
بزرگتر است، بنابراین اکنون میتوانیم همه اینها را ببینیم،
80
00:02:46,770 –> 00:02:48,630
این روشها و ویژگیهای زیادی را برمیگرداند،
81
00:02:48,630 –> 00:02:50,490
اما اگر به اینجا نگاه
82
00:02:50,490 –> 00:02:51,720
کنیم، میتوانیم ببینیم که یکی از این
83
00:02:51,720 –> 00:02:54,240
روشها دو خط آنتر است، بنابراین
84
00:02:54,240 –> 00:02:55,950
فهرست ما اساساً آن متد dunder itter را دارد.
85
00:02:55,950 –> 00:02:58,080
86
00:02:58,080 –> 00:03:00,630
اگر چیزی آن متد را داشته باشد،
87
00:03:00,630 –> 00:03:02,040
میتوان آن را حلقه کرد، بنابراین کاری که حلقه for در پسزمینه انجام میدهد این
88
00:03:02,040 –> 00:03:04,500
است که آن را err در
89
00:03:04,500 –> 00:03:06,960
شی ما میخواند و تکرارکنندهای را برمیگرداند که
90
00:03:06,960 –> 00:03:09,480
میتوانیم روی آن حلقه بزنیم، به همین دلیل است که ما یک
91
00:03:09,480 –> 00:03:11,940
لیست را تکرارپذیر صدا میزنیم تا ما را به ارمغان بیاورد. به
92
00:03:11,940 –> 00:03:14,730
تکرار کننده ها، بنابراین من گفتم که یک لیست
93
00:03:14,730 –> 00:03:17,700
قابل تکرار است، اما تکرار کننده نیست، اما اگر
94
00:03:17,700 –> 00:03:20,070
متد dunder itter را در لیست خود اجرا
95
00:03:20,070 –> 00:03:22,709
کنیم، یک تکرار کننده برمی گرداند، بنابراین
96
00:03:22,709 –> 00:03:25,200
آنچه چیزی را به عنوان یک تکرار کننده تبدیل می کند، بنابراین یک
97
00:03:25,200 –> 00:03:27,959
تکرار کننده، یک شی با حالت است به طوری
98
00:03:27,959 –> 00:03:30,150
که آن را تکرار می کند. به یاد می آورد که در حین تکرار کجاست،
99
00:03:30,150 –> 00:03:32,340
اکنون می دانم که همه این اصطلاحات
100
00:03:32,340 –> 00:03:34,200
ممکن است با هم اجرا شوند، اما
101
00:03:34,200 –> 00:03:35,850
فکر می کنم وقتی نمونه هایی را می بینیم همه اینها منطقی خواهد بود،
102
00:03:35,850 –> 00:03:38,220
بنابراین مانند آنچه گفتم
103
00:03:38,220 –> 00:03:40,530
تکرار کننده حالتی دارد که می
104
00:03:40,530 –> 00:03:42,380
داند کجاست. ng iteration و
105
00:03:42,380 –> 00:03:45,090
تکرار کننده ها همچنین می دانند که چگونه
106
00:03:45,090 –> 00:03:47,220
مقدار بعدی خود را بدست آورند، آنها مقدار بعدی خود را
107
00:03:47,220 –> 00:03:50,310
با روش dunder next دریافت می کنند، بنابراین اگر من به
108
00:03:50,310 –> 00:03:52,890
روش های لیست خود در اینجا نگاه کنم، خواهید
109
00:03:52,890 –> 00:03:55,770
دید که هیچ روش dunder next
110
00:03:55,770 –> 00:03:58,980
در لیست ما وجود ندارد، بنابراین لیست ما اینطور نیست.
111
00:03:58,980 –> 00:04:01,470
حالتی ندارد و نمی داند چگونه مقدار بعدی خود را بدست آورد،
112
00:04:01,470 –> 00:04:03,930
113
00:04:03,930 –> 00:04:06,239
بنابراین تکرار کننده نیست، به عنوان مثال اگر سعی
114
00:04:06,239 –> 00:04:08,459
کنم مقدار بعدی لیست خود را چاپ کنم، بنابراین اگر به
115
00:04:08,459 –> 00:04:11,790
اینجا بروم و فقط بگویم print next nums
116
00:04:11,790 –> 00:04:14,220
را اجرا کنید و سپس این به ما یک خطا می دهد
117
00:04:14,220 –> 00:04:15,630
و می بینیم که خطایی که
118
00:04:15,630 –> 00:04:18,690
دریافت می کنیم می گوید شیء لیست خطا تایپ
119
00:04:18,690 –> 00:04:21,269
کنید تکرار کننده نیست و اتفاقاً وقتی
120
00:04:21,269 –> 00:04:23,340
یک شی را به تابع بعدی مانند
121
00:04:23,340 –> 00:04:25,740
آن در پس زمینه ارسال می کنم در واقع در
122
00:04:25,740 –> 00:04:27,350
حال تلاش است. برای اجرای متد dunder next
123
00:04:27,350 –> 00:04:29,960
روی آن شی و دیدیم که
124
00:04:29,960 –> 00:04:32,030
لیست ما متد dunder next ندارد
125
00:04:32,030 –> 00:04:33,740
، به همین دلیل است که به ما می گوید
126
00:04:33,740 –> 00:04:35,810
که شی لیست ما تکرار کننده
127
00:04:35,810 –> 00:04:37,850
نیست و خطا می دهد،
128
00:04:37,850 –> 00:04:39,800
اما من گفتم که وقتی
129
00:04:39,800 –> 00:04:42,230
متد dunder itter خود را اجرا می کنیم، یک
130
00:04:42,230 –> 00:04:44,630
تکرار کننده برمی گرداند برای ما، پس بیایید آن را امتحان کنیم،
131
00:04:44,630 –> 00:04:47,000
بنابراین بیایید به صورت دستی آن روش داخلی را
132
00:04:47,000 –> 00:04:49,100
در لیست خود اجرا کنیم و ببینیم تکرار کننده برگشتی چگونه به
133
00:04:49,100 –> 00:04:52,850
نظر می رسد، بنابراین بالای حلقه for
134
00:04:52,850 –> 00:04:54,740
در اینجا من فقط می خواهم بگویم i
135
00:04:54,740 –> 00:04:58,280
underscore nums اوه i underscore
136
00:04:58,280 –> 00:05:01,760
nums برابر است با numbs dot double خط زیر
137
00:05:01,760 –> 00:05:04,400
بسیار خوب است، بنابراین اکنون ما یک تکرار
138
00:05:04,400 –> 00:05:06,560
کننده از لیست nums خود داریم، اکنون این همان چیزی است که
139
00:05:06,560 –> 00:05:08,300
حلقه for برای ما در پس زمینه دریافت می کند،
140
00:05:08,300 –> 00:05:10,850
بنابراین بیایید آن را چاپ کنیم و همچنین اجازه دهید
141
00:05:10,850 –> 00:05:13,640
این را به تابع dir منتقل کنیم و ببینیم
142
00:05:13,640 –> 00:05:14,840
چه روش ها و ویژگی هایی
143
00:05:14,840 –> 00:05:18,050
در دسترس هستند. تکرارکننده بنابراین در بالا اینجا
144
00:05:18,050 –> 00:05:20,870
من فقط این را برش میدهم و دقیقاً
145
00:05:20,870 –> 00:05:23,380
در زیر اینجا
146
00:05:23,380 –> 00:05:27,710
dir of I numbs را چاپ میکنم و همچنین میخواهم
147
00:05:27,710 –> 00:05:30,710
این را به تنهایی
148
00:05:30,710 –> 00:05:33,230
چاپ کنم، بنابراین بیایید فقط I nums را چاپ کنیم
149
00:05:33,230 –> 00:05:35,630
و آن را ذخیره کنید و به خوبی اجرا کنید، بنابراین ما
150
00:05:35,630 –> 00:05:37,730
مقداری خروجی در اینجا دریافت کردیم، اما قبل از
151
00:05:37,730 –> 00:05:39,200
اینکه به این موضوع بپردازیم، اجازه دهید یک چیز را در اینجا
152
00:05:39,200 –> 00:05:42,290
خیلی سریع تغییر دهم، بنابراین اجرای مستقیم متدهای dunder خود مانند این کمی زشت است،
153
00:05:42,290 –> 00:05:44,690
بنابراین برای
154
00:05:44,690 –> 00:05:46,280
اکثر اینها توابعی وجود دارد که
155
00:05:46,280 –> 00:05:48,620
فراخوانی می کنند اینها در پس زمینه برای شما
156
00:05:48,620 –> 00:05:50,180
درست همانطور که گفتم تابع
157
00:05:50,180 –> 00:05:52,790
بعدی متد dunder next را فراخوانی میکند،
158
00:05:52,790 –> 00:05:54,920
تابع داخلی متد dunder داخلی را
159
00:05:54,920 –> 00:05:56,990
در پسزمینه فراخوانی میکند، بنابراین به جای انجام این کار
160
00:05:56,990 –> 00:05:59,480
مانند آنچه در اینجا داریم، میتوانیم
161
00:05:59,480 –> 00:06:03,920
فقط آن را er of nums بگوییم و این یکسان خواهد بود.
162
00:06:03,920 –> 00:06:06,620
بنابراین، اگر این را دوباره اجرا کنیم،
163
00:06:06,620 –> 00:06:07,580
میتوانیم ببینیم که همچنان همان
164
00:06:07,580 –> 00:06:09,320
خروجی را دریافت میکنیم، اما مجبور نیستیم روش dunder زشت را اجرا کنیم،
165
00:06:09,320 –> 00:06:11,930
بنابراین اکنون اجازه دهید
166
00:06:11,930 –> 00:06:13,850
به این موضوع بپردازیم تا بتوانیم ببینیم که وقتی
167
00:06:13,850 –> 00:06:17,090
آن را چاپ میکنیم تکرارکننده ما به
168
00:06:17,090 –> 00:06:19,400
ما میگوید که این یک لیست تکرارکننده است
169
00:06:19,400 –> 00:06:22,280
و روشهای dunder زیادی
170
00:06:22,280 –> 00:06:24,380
در اینجا برگردانده شدهاند، اما دو موردی که
171
00:06:24,380 –> 00:06:26,930
میخواهیم روی آنها تمرکز کنیم، dunder it ER و dunder
172
00:06:26,930 –> 00:06:28,760
بعدی هستند، بنابراین میتوانیم اینجا ببینیم که ما
173
00:06:28,760 –> 00:06:31,760
متد dunder it er را در اینجا داریم و این نیز
174
00:06:31,760 –> 00:06:34,490
دارد. روش بعدی dunder نیز اکنون
175
00:06:34,490 –> 00:06:35,840
ممکن است فکر کنید کمی عجیب است که
176
00:06:35,840 –> 00:06:38,360
این تکرار کننده یک متد dunder itter دارد
177
00:06:38,360 –> 00:06:40,760
زیرا این همان چیزی است که ما در لیست خود اجرا کردیم
178
00:06:40,760 –> 00:06:43,190
تا تکرار کننده ای را که
179
00:06:43,190 –> 00:06:46,100
اکنون داریم به دست آوریم اما باید یک متد dunder
180
00:06:46,100 –> 00:06:48,500
inter داشته باشد زیرا تکرار کننده ها نیز
181
00:06:48,500 –> 00:06:51,290
تکرارپذیر هستند b با این تفاوت که این
182
00:06:51,290 –> 00:06:53,960
متد دو خط زیر خط itter
183
00:06:53,960 –> 00:06:56,660
همان شی را برمیگرداند، بنابراین فقط خودش را برمیگرداند
184
00:06:56,660 –> 00:06:58,610
و ما نمونهای از آن را در عرض
185
00:06:58,610 –> 00:07:01,010
یک دقیقه میبینیم، بسیار خوب، بنابراین اگر به یاد بیاوریم که من
186
00:07:01,010 –> 00:07:03,830
در لیست اصلی خود چه زمانی را اجرا کردم،
187
00:07:03,830 –> 00:07:05,750
یک خطا نشان داد و گفت که لیست
188
00:07:05,750 –> 00:07:07,970
ما تکرار کننده نیست و به این دلیل
189
00:07:07,970 –> 00:07:10,130
است که متد dunder next را ندارد اما
190
00:07:10,130 –> 00:07:12,530
تکرار کننده ما که به تازگی به اینجا
191
00:07:12,530 –> 00:07:14,780
برگشتیم دارای یک متد dunder next است بنابراین
192
00:07:14,780 –> 00:07:16,400
باید بتوانیم مقدار بعدی را از این بدست آوریم.
193
00:07:16,400 –> 00:07:18,920
این
194
00:07:18,920 –> 00:07:21,650
عبارات چاپی را در اینجا نظر دهید و در زیر آن اجازه دهید
195
00:07:21,650 –> 00:07:24,140
من چاپ کنم فقط بعداً چاپ می شود
196
00:07:24,140 –> 00:07:27,200
و ما می خواهیم شماره بعدی زیر خط i را چاپ
197
00:07:27,200 –> 00:07:29,270
198
00:07:29,270 –> 00:07:31,100
کنیم، بنابراین اگر آن را اجرا کنیم، می توانیم ببینیم که
199
00:07:31,100 –> 00:07:33,200
مقدار بعدی لیست ما را چاپ می کند.
200
00:07:33,200 –> 00:07:35,120
که در این مرحله فقط اولین
201
00:07:35,120 –> 00:07:37,670
مورد در لیست اصلی است، اکنون به یاد داشته باشید که من
202
00:07:37,670 –> 00:07:39,980
گفتم که یک تکرار کننده یک شی با
203
00:07:39,980 –> 00:07:42,620
یک حالت است به طوری که در حین تکرار مکان آن را به خاطر می آورد،
204
00:07:42,620 –> 00:07:45,170
بنابراین اگر
205
00:07:45,170 –> 00:07:47,270
دوباره روی این مورد اجرا کنیم، باید به خاطر بیاورد که
206
00:07:47,270 –> 00:07:49,670
کجا مانده است. خاموش و پرینت t مقدار بعدی است، پس
207
00:07:49,670 –> 00:07:51,770
بیایید ادامه دهیم و آن را امتحان کنیم، بنابراین من می خواهم
208
00:07:51,770 –> 00:07:53,720
این را چند بار کپی و جایگذاری
209
00:07:53,720 –> 00:07:55,820
کنم تا اکنون سه دستور چاپ در اینجا داشته باشیم
210
00:07:55,820 –> 00:07:58,790
و اجازه دهید این را اجرا کنم تا بتوانیم ببینیم
211
00:07:58,790 –> 00:08:00,500
که هر بار مقدار بعدی را چاپ کردیم.
212
00:08:00,500 –> 00:08:02,810
به یاد آورد که از کجا متوقف شد و
213
00:08:02,810 –> 00:08:05,150
روش بعدی به مقدار بعدی در تکرارگر اشاره کرد
214
00:08:05,150 –> 00:08:07,760
بسیار خوب، بنابراین در حال حاضر ما
215
00:08:07,760 –> 00:08:09,890
همه موارد را در لیست اصلی خود چاپ کرده ایم،
216
00:08:09,890 –> 00:08:12,590
لیست اصلی فقط دارای یک دو
217
00:08:12,590 –> 00:08:14,930
و سه است، بنابراین اگر یکی را چاپ کنیم چه اتفاقی می افتد
218
00:08:14,930 –> 00:08:17,390
زمان بیشتر است، بنابراین اجازه دهید
219
00:08:17,390 –> 00:08:19,790
یکی دیگر را در اینجا بچسبانم و ذخیره کنم و
220
00:08:19,790 –> 00:08:21,560
اجراش کنیم تا ببینیم زمانی
221
00:08:21,560 –> 00:08:23,990
که آن یک بار دیگر را اجرا کردیم، با یک خطا مواجه شدیم، بنابراین
222
00:08:23,990 –> 00:08:27,020
یک استثنای توقف تکراری در حال حاضر وجود دارد
223
00:08:27,020 –> 00:08:29,600
که انتظار می رود، بنابراین اگر ما تمام شدیم
224
00:08:29,600 –> 00:08:31,580
مقادیر، سپس یک استثنای توقف تکرار
225
00:08:31,580 –> 00:08:33,950
ایجاد میکند، اما این همان چیزی است که تکرارکنندهها
226
00:08:33,950 –> 00:08:36,260
باید انجام دهند، وقتی که استثنای توقف تکرار را میزنیم، به
227
00:08:36,260 –> 00:08:38,210
این معنی است که
228
00:08:38,210 –> 00:08:40,460
تکرارکننده تمام شده است و
229
00:08:40,460 –> 00:08:42,770
مقادیر بیشتری ندارد، بنابراین میتوانیم وقتی
230
00:08:42,770 –> 00:08:44,690
آنها را به صورت دستی اجرا میکنیم، آن را ببینیم. اما وقتی
231
00:08:44,690 –> 00:08:47,030
یک نرمال اجرا می کنیم برای حلقه میداند که چگونه
232
00:08:47,030 –> 00:08:49,070
استثنای توقف تکرار را مدیریت
233
00:08:49,070 –> 00:08:51,110
کند و آن را به ما نشان نمیدهد، بنابراین در
234
00:08:51,110 –> 00:08:53,450
پسزمینه یک حلقه for اساساً
235
00:08:53,450 –> 00:08:54,470
چیزی شبیه به این انجام میدهد
236
00:08:54,470 –> 00:08:56,420
، ابتدا یک تکرارکننده از شی اصلی ما دریافت میکند،
237
00:08:56,420 –> 00:08:59,060
مانند آنچه در اینجا در خط چهار انجام دادهایم.
238
00:08:59,060 –> 00:09:01,550
و سپس
239
00:09:01,550 –> 00:09:03,560
مقادیر بعدی را دریافت می کند تا زمانی که به یک استثنای توقف تکرار برخورد کند،
240
00:09:03,560 –> 00:09:06,230
بنابراین اساساً
241
00:09:06,230 –> 00:09:08,720
چیزی شبیه به این است، بنابراین اجازه دهید
242
00:09:08,720 –> 00:09:10,670
همه اینها را در اینجا حذف کنم، اساساً
243
00:09:10,670 –> 00:09:13,370
چیزی شبیه while true انجام می دهد و سپس
244
00:09:13,370 –> 00:09:17,690
در داخل اینجا سعی کنید مورد بعدی را دریافت کنید تا
245
00:09:17,690 –> 00:09:20,840
ما بگوییم آیتم برابر است اعداد بعدی را زیر خط
246
00:09:20,840 –> 00:09:24,020
بکشیم و سپس فعلاً فقط آن مورد را چاپ می
247
00:09:24,020 –> 00:09:28,730
کنیم، همچنین باید یک
248
00:09:28,730 –> 00:09:30,980
استثنا را بررسی کنیم، بنابراین می گوییم تکرار توقف را قبول کن
249
00:09:30,980 –> 00:09:33,920
و اگر تکرار توقف دریافت
250
00:09:33,920 –> 00:09:36,140
کنیم، به سادگی از حالت خارج می شویم.
251
00:09:36,140 –> 00:09:38,150
حلقه while حالا اگر این کد را اجرا کنم،
252
00:09:38,150 –> 00:09:40,970
می بینیم که
253
00:09:40,970 –> 00:09:43,250
وقتی حلقه for ساده خود را اجرا کردیم، اساساً همان نتیجه قبلی را گرفتیم،
254
00:09:43,250 –> 00:09:45,170
یکی دیگر
255
00:09:45,170 –> 00:09:46,910
از ویژگی های تکرار کننده ها که
256
00:09:46,910 –> 00:09:48,590
باید ذکر می کردم این است که آنها فقط می توانند
257
00:09:48,590 –> 00:09:50,750
به جلو بروند، بنابراین
258
00:09:50,750 –> 00:09:53,510
259
00:09:53,510 –> 00:09:55,700
260
00:09:55,700 –> 00:09:57,620
اگر نیاز به شروع از ابتدا
261
00:09:57,620 –> 00:09:59,180
دارید، فقط می توانید با فراخوانی بعدی به جلو بروید، سپس می توانید به سادگی یک
262
00:09:59,180 –> 00:10:01,670
شی تکرار کننده جدید از ابتدا ایجاد کنید و آن را از اول
263
00:10:01,670 –> 00:10:04,040
شروع کنید، خوب، پس چرا هر یک از این کارها انجام می شود.
264
00:10:04,040 –> 00:10:05,720
واقعاً مهم است، بنابراین
265
00:10:05,720 –> 00:10:08,120
مثالهای عملی برای دانستن این خوب
266
00:10:08,120 –> 00:10:09,980
چیست، یک مثال این است که ما میتوانیم این
267
00:10:09,980 –> 00:10:12,290
متدها را به کلاسهای خود اضافه کنیم و آنها را نیز تکرارپذیر کنیم،
268
00:10:12,290 –> 00:10:14,780
بنابراین بیایید یک مثال ببینیم،
269
00:10:14,780 –> 00:10:17,660
بنابراین بیایید کلاسی ایجاد کنیم که اساساً
270
00:10:17,660 –> 00:10:20,000
مانند محدوده داخلی رفتار میکند. تابع،
271
00:10:20,000 –> 00:10:22,760
بنابراین من فقط
272
00:10:22,760 –> 00:10:26,150
همه چیز را در اینجا بازنویسی می کنم و
273
00:10:26,150 –> 00:10:27,860
خروجی را می بندم و اکنون یک کلاس ایجاد می کنیم
274
00:10:27,860 –> 00:10:29,900
که اساساً مانند
275
00:10:29,900 –> 00:10:31,910
تابع محدوده داخلی عمل می کند، بنابراین من می
276
00:10:31,910 –> 00:10:36,560
گویم که محدوده من خوب است، بنابراین در این نکته را
277
00:10:36,560 –> 00:10:37,850
باید متذکر شوم که ما با ایجاد کلاس ها
278
00:10:37,850 –> 00:10:40,010
وارد مفاهیم شی گرا خواهیم شد
279
00:10:40,010 –> 00:10:42,350
و من یک سری
280
00:10:42,350 –> 00:10:43,790
در مورد برنامه نویسی شی گرا و
281
00:10:43,790 –> 00:10:46,130
پایتون دارم اگر هرکدام از شما علاقه مند هستید اکنون
282
00:10:46,130 –> 00:10:47,870
در آن سری موارد زیادی را پوشش می دهم. متر
283
00:10:47,870 –> 00:10:49,790
قرار نیست در اینجا به جزئیات در مورد
284
00:10:49,790 –> 00:10:52,460
روش anit و
285
00:10:52,460 –> 00:10:54,530
ویژگی های نمونه و مواردی از این دست بپردازیم، بنابراین اگر
286
00:10:54,530 –> 00:10:56,210
این قسمت به هر نحوی برای شما گیج کننده است،
287
00:10:56,210 –> 00:10:58,430
می توانید آن سریال را تماشا کنید تا
288
00:10:58,430 –> 00:10:59,870
درک بهتری از آنچه در اینجا انجام می دهیم دریافت
289
00:10:59,870 –> 00:11:01,760
کنید. بنابراین اگر میخواهیم
290
00:11:01,760 –> 00:11:03,620
کلاس محدوده خودمان را بسازیم که
291
00:11:03,620 –> 00:11:06,140
مانند محدوده داخلی عمل میکند، به یک نقطه شروع و یک نقطه پایان نیاز داریم که به روش داخلی
292
00:11:06,140 –> 00:11:08,600
و نقطهای از آن
293
00:11:08,600 –> 00:11:11,150
استفاده کنیم، بنابراین من میگویم که
294
00:11:11,150 –> 00:11:14,780
زیر خط را دو برابر کنید و ببافیم، بنابراین ابتدا میخواهیم
295
00:11:14,780 –> 00:11:16,760
عبور در self که نمونه خواهد بود
296
00:11:16,760 –> 00:11:19,220
و سپس شروع و سپس در به طوری که
297
00:11:19,220 –> 00:11:21,050
ما یک نقطه شروع و یک نقطه پایان داشته باشیم و
298
00:11:21,050 –> 00:11:24,230
در روش anit می گویم مقدار self dot
299
00:11:24,230 –> 00:11:29,090
برابر با شروع است و self dot
300
00:11:29,090 –> 00:11:33,290
end برابر با پایان خوب است، پس اکنون
301
00:11:33,290 –> 00:11:35,270
میخواهیم این کلاس را تکرارپذیر کنیم، اکنون
302
00:11:35,270 –> 00:11:36,980
به یاد داشته باشید که چیزی
303
00:11:36,980 –> 00:11:39,560
تکرارپذیر باشد و باید متد dunder itter داشته باشد،
304
00