در این مطلب، ویدئو مولدهای پایتون توضیح داده شد با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:28:36
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:02,860 –> 00:00:05,970
[موسیقی]
2
00:00:08,480 –> 00:00:10,160
سلام به همه و به یک ویدیوی دیگر از یوتیوب خوش آمدید،
3
00:00:10,160 –> 00:00:11,360
4
00:00:11,360 –> 00:00:12,880
بنابراین در ویدیوی امروز من در
5
00:00:12,880 –> 00:00:14,559
مورد ژنراتورها در
6
00:00:14,559 –> 00:00:17,119
پایتون بحث خواهم کرد، اکنون ژنراتورها بسیار
7
00:00:17,119 –> 00:00:19,119
به تکرارکننده ها مرتبط هستند و به عنوان یک
8
00:00:19,119 –> 00:00:21,279
ویژگی پیشرفته تر یا سطح متخصص در
9
00:00:21,279 –> 00:00:23,279
زبان برنامه نویسی پایتون در نظر گرفته می شوند
10
00:00:23,279 –> 00:00:24,960
که می گوید: اگرچه آنها خیلی
11
00:00:24,960 –> 00:00:26,640
پیچیده نیستند در واقع فکر می کنم می توانم
12
00:00:26,640 –> 00:00:28,160
توضیح مناسبی به شما بدهم که
13
00:00:28,160 –> 00:00:29,840
اکثر شما بدون توجه به
14
00:00:29,840 –> 00:00:31,679
دانش پایتون می توانید آن را به خوبی درک کنید و
15
00:00:31,679 –> 00:00:32,159
گفت:
16
00:00:32,159 –> 00:00:34,000
بیایید قبل از شروع کار، پس از یک کلمه سریع از حامی ما، به داخل ویدیو
17
00:00:34,000 –> 00:00:35,680
18
00:00:35,680 –> 00:00:37,360
بپردازیم. لازم است از
19
00:00:37,360 –> 00:00:39,520
مشاور سلام برای حمایت مالی از این ویدیو تشکر کنیم.
20
00:00:39,520 –> 00:00:41,680
21
00:00:41,680 –> 00:00:44,000
برنامه شتابدهنده جستجوی شغل مشاور عالی ترکیبی از فناوری قدرت هوش مصنوعی
22
00:00:44,000 –> 00:00:45,920
و مربیگری حرفه ای از
23
00:00:45,920 –> 00:00:48,079
شرکت های فناوری برتر است تا به فارغ التحصیلان جدید
24
00:00:48,079 –> 00:00:49,280
و متخصصان جوان
25
00:00:49,280 –> 00:00:51,280
کمک کند تا مصاحبه های بیشتری داشته باشند و
26
00:00:51,280 –> 00:00:53,440
آنها را سریعاً برای رسیدن به مشاغل رویایی خود در فناوری
27
00:00:53,440 –> 00:00:56,239
در کشور دنبال کنند. به طور متوسط شش هفته مشاور عا
28
00:00:56,239 –> 00:00:58,239
ی هیچ هزینه ثبت نام اولیه ای ندارد و بر
29
00:00:58,239 –> 00:01:00,320
امه آنها کاملا رایگان است تا زمانی
30
00:01:00,320 –> 00:01:01,440
که شغلی
31
00:01:01,440 –> 00:01:03,039
پیدا کنید، کاندیداهای پذیرفته شده در رابطه با رزومه خود در
32
00:01:03,039 –> 00:01:05,760
شبکه های لینکدین کمک می گیرند و
33
00:01:05,760 –> 00:01:07,840
مشاور بسیار بالاتر نیز از یک
34
00:01:07,840 –> 00:01:09,840
ابزار اختصاصی استفاده می کند که
35
00:01:09,840 –> 00:01:11,040
شبکه های حرفه ای را از طرف
36
00:01:11,040 –> 00:01:13,360
نامزدهای خود انجام می دهد.
37
00:01:13,360 –> 00:01:15,520
38
00:01:15,520 –> 00:01:16,560
39
00:01:16,560 –> 00:01:18,560
40
00:01:18,560 –> 00:01:20,000
مصاحبه های بیشتر به طور متوسط
41
00:01:20,000 –> 00:01:21,840
ف زمان کمتری برای جستجوی مشاغل در وب، پی
42
00:01:21,840 –> 00:01:24,400
نهادهای شغلی متعدد در می
43
00:01:24,400 –> 00:01:26,080
ن داوطلبان مشاور عالی رایج است و ا
44
00:01:26,080 –> 00:01:28,479
ن برنامه دارای نرخ موفقیت 100 است که
45
00:01:28,479 –> 00:01:29,600
ی
46
00:01:29,600 –> 00:01:31,439
وانید درخواست خود را به صورت رایگان از
47
00:01:31,439 –> 00:01:33,360
ریق وب سایت مشاور عالی ارسال کنید یا در
48
00:01:33,360 –> 00:01:35,200
ک جلسه اطلاعاتی آتی شرکت کن
49
00:01:35,200 –> 00:01:35,520
50
00:01:35,520 –> 00:01:37,600
د. بیشتر بیاموزید مشاور سلام
51
00:01:37,600 –> 00:01:38,880
از لینکی که در توضیحات
52
00:01:38,880 –> 00:01:40,880
امروز درج شده است، خوب است، پس بیایید جلو برویم و
53
00:01:40,880 –> 00:01:42,079
در ویدیو
54
00:01:42,079 –> 00:01:43,759
فرو برویم اولین کاری که باید انجام دهم قبل از اینکه
55
00:01:43,759 –> 00:01:45,360
بتوانیم واقعاً در مورد ژنراتورها صحبت کنیم
56
00:01:45,360 –> 00:01:47,680
این است که تکرار کننده
57
00:01:47,680 –> 00:01:48,000
چیست
58
00:01:48,000 –> 00:01:49,920
و با آن صحبت کنم. شما در مورد نحوه کار تکرار کننده ها
59
00:01:49,920 –> 00:01:52,960
در پایتون در حال حاضر واقعا تکرار کننده یک
60
00:01:52,960 –> 00:01:54,960
شی است که به شما امکان می دهد حلقه بزنید از طریق
61
00:01:54,960 –> 00:01:57,360
دنبالهای از اعداد یا دنبالهای از
62
00:01:57,360 –> 00:01:59,360
دادهها، دنبالهای از چیزی
63
00:01:59,360 –> 00:02:01,439
بدون نیاز به ذخیره همه
64
00:02:01,439 –> 00:02:03,119
موارد مختلف در آن دنباله
65
00:02:03,119 –> 00:02:04,960
در حافظه، بنابراین من به نوعی
66
00:02:04,960 –> 00:02:06,719
مثالی از منظورم در یک ثانیه به شما میدهم،
67
00:02:06,719 –> 00:02:09,280
اما یک مولد واقعاً کار میکند. فقط یک
68
00:02:09,280 –> 00:02:11,200
شکل جدید از نحوی است که در
69
00:02:11,200 –> 00:02:12,640
نسخه 3 پایتون معرفی شد
70
00:02:12,640 –> 00:02:14,239
که به شما امکان میدهد
71
00:02:14,239 –> 00:02:15,680
بدون نیاز به گذراندن یک
72
00:02:15,680 –> 00:02:16,560
73
00:02:16,560 –> 00:02:19,040
فرآیند خستهکنندهتر و ظریفتر یک تکرارکننده ایجاد کنید، بنابراین ژنراتورها
74
00:02:19,040 –> 00:02:20,800
و تکرارکنندهها تقریباً همان
75
00:02:20,800 –> 00:02:21,280
چیزی هستند که
76
00:02:21,280 –> 00:02:23,599
مولدها فقط از یک نحو جدید استفاده میکنند. و ایجاد آنها
77
00:02:23,599 –> 00:02:25,520
بسیار ساده تر از
78
00:02:25,520 –> 00:02:26,879
تکرار کننده های استاندارد شماست
79
00:02:26,879 –> 00:02:28,480
که در یک ثانیه در اینجا خواهیم دید، بنابراین می
80
00:02:28,480 –> 00:02:29,840
خواهم با توضیح تکرار کننده ها
81
00:02:29,840 –> 00:02:31,280
شروع کنم که عمیقاً آنها را بررسی می کنند
82
00:02:31,280 –> 00:02:32,800
و سپس در نیمه بعدی ویدیو
83
00:02:32,800 –> 00:02:35,040
به آنها خواهیم پرداخت. ژنراتورها و
84
00:02:35,040 –> 00:02:36,959
نحوه استفاده از نحو جدید برای ایجاد
85
00:02:36,959 –> 00:02:38,480
تکرارگرهای زیباتر در اصل
86
00:02:38,480 –> 00:02:40,000
بسیار خوب است، بنابراین اجازه دهید با معرفی
87
00:02:40,000 –> 00:02:41,840
یک مشکل در اینجا شروع کنم
88
00:02:41,840 –> 00:02:43,920
، فرض کنید
89
00:02:43,920 –> 00:02:45,599
محدوده تابع را نداشتیم و
90
00:02:45,599 –> 00:02:47,840
wh نداشتیم. حلقه ile خوب است نه حلقه while و نه
91
00:02:47,840 –> 00:02:48,879
تابع محدوده
92
00:02:48,879 –> 00:02:50,160
و ما میخواستیم بدون استفاده از تابع range بدون استفاده از حلقه while و بدون اینکه چیزی به دست بیاوریم، از طریق
93
00:02:50,160 –> 00:02:52,239
اعداد یک تا ده راست یک دو سه
94
00:02:52,239 –> 00:02:53,920
چهار پنج شش هفت هشت نه ده
95
00:02:53,920 –> 00:02:55,519
خوب حلقه بزنیم.
96
00:02:55,519 –> 00:02:56,879
97
00:02:56,879 –> 00:02:58,319
فوق العاده
98
00:02:58,319 –> 00:02:59,120
خلاقانه فقط با
99
00:02:59,120 –> 00:03:00,800
فکر کردن به این موضوع، کاری که
100
00:03:00,800 –> 00:03:02,239
احتمالاً انجام خواهیم داد این است که ممکن است
101
00:03:02,239 –> 00:03:03,360
لیستی درست ایجاد کنیم
102
00:03:03,360 –> 00:03:05,360
و سپس در این لیست می توانیم
103
00:03:05,360 –> 00:03:07,200
اعداد خود را 7 و
104
00:03:07,200 –> 00:03:10,720
8 9 و 10 ذخیره کنیم. بسیار خوب
105
00:03:10,720 –> 00:03:12,080
و سپس کاری که می توانم انجام دهم این است که می توانم فقط
106
00:03:12,080 –> 00:03:13,440
حلقه بزنم از طریق این لیست درست میتوانم بگویم
107
00:03:13,440 –> 00:03:13,920
4
108
00:03:13,920 –> 00:03:16,800
عنصر در x و سپس میتوانم
109
00:03:16,800 –> 00:03:17,440
110
00:03:17,440 –> 00:03:19,599
عنصر را چاپ کنم و به سادگی این عنصر
111
00:03:19,599 –> 00:03:20,480
112
00:03:20,480 –> 00:03:21,760
113
00:03:21,760 –> 00:03:23,680
از طریق اعداد 1 تا 10 حلقه میشود.
114
00:03:23,680 –> 00:03:25,680
اکنون مشکل این است که من
115
00:03:25,680 –> 00:03:28,319
این 10 عدد را اینجا در یک لیست در حافظه ذخیره می کنم
116
00:03:28,319 –> 00:03:30,959
و برای اینکه بتوانم از طریق آنها حلقه بزنم،
117
00:03:30,959 –> 00:03:31,599
118
00:03:31,599 –> 00:03:33,920
باید همه آنها را در یک ساختار داده ذخیره
119
00:03:33,920 –> 00:03:35,680
کنم که خیلی کارآمد نیست
120
00:03:35,680 –> 00:03:37,440
و با 10 عدد این خوب است، اما می
121
00:03:37,440 –> 00:03:39,360
توانید تصور کنید من اگر میخواستم
122
00:03:39,360 –> 00:03:41,360
100000 عدد، یک میلیون عدد، یک
123
00:03:41,360 –> 00:03:43,040
میلیارد عدد را حلقه بزنم، واقعاً معنی ندارد که
124
00:03:43,040 –> 00:03:44,720
125
00:03:44,720 –> 00:03:46,879
کل دنباله اعداد را در حافظه ذخیره کنم،
126
00:03:46,879 –> 00:03:48,239
مخصوصاً اگر تمام کاری که میخواهم انجام دهم
127
00:03:48,239 –> 00:03:49,920
پردازش یک به یک آنها باشد. زمان و من
128
00:03:49,920 –> 00:03:51,840
نیازی به دانستن همه اینها
129
00:03:51,840 –> 00:03:53,439
نیستم وقتی اعداد را مرور می کنم، بنابراین
130
00:03:53,439 –> 00:03:55,120
منطقی نیست که آن را
131
00:03:55,120 –> 00:03:57,200
در یک لیست ذخیره کنم و به همین دلیل است که ما
132
00:03:57,200 –> 00:03:58,879
از چیزی مانند تابع محدوده
133
00:03:58,879 –> 00:03:59,599
درست استفاده می کنیم. بنابراین من میگویم
134
00:03:59,599 –> 00:04:02,239
4، حدس میزنم در این مورد عنصر را نخواهم گفت
135
00:04:02,239 –> 00:04:03,439
، میتوانم بگویم i
136
00:04:03,439 –> 00:04:06,879
برای i در محدوده و سپس کاری
137
00:04:06,879 –> 00:04:07,680
شبیه 1
138
00:04:07,680 –> 00:04:11,439
تا 11 انجام میدهم و سپس عنصر را
139
00:04:11,439 –> 00:04:13,760
در اینجا چاپ میکنم، همان چیزی را دریافت میکنم متأسفم
140
00:04:13,760 –> 00:04:14,640
که میخواهم print i
141
00:04:14,640 –> 00:04:16,959
not element در اینجا من دقیقاً همان
142
00:04:16,959 –> 00:04:18,320
نتایج را در
143
00:04:18,320 –> 00:04:19,279
بازه 1 تا 11
144
00:04:19,279 –> 00:04:21,440
به دست میآورم، به جز زمانی که از تابع range
145
00:04:21,440 –> 00:04:23,680
در اینجا استفاده میکنم، در واقع نیازی به ذخیره
146
00:04:23,680 –> 00:04:24,320
همه اعداد
147
00:04:24,320 –> 00:04:27,280
1 تا 10 در یک ساختار داده ندارم و بنابراین
148
00:04:27,280 –> 00:04:28,000
اگر من باید
149
00:04:28,000 –> 00:04:29,840
به اندازه این ساختار داده
150
00:04:29,840 –> 00:04:31,759
در مقابل اندازه تابع محدوده
151
00:04:31,759 –> 00:04:33,360
که باید نگاه کنم ببینید که این ساختار داده
152
00:04:33,360 –> 00:04:35,199
دارای اندازه بزرگتر از تابع range
153
00:04:35,199 –> 00:04:36,639
است زیرا تابع range
154
00:04:36,639 –> 00:04:37,840
نیازی به ذخیره همه این
155
00:04:37,840 –> 00:04:39,840
اعداد ندارد و در واقع اگر بخواهم این کار را انجام دهم
156
00:04:39,840 –> 00:04:42,080
می توانم بنابراین می خواهم sys را وارد
157
00:04:42,080 –> 00:04:45,600
کنم و من میخواهیم بگوییم print sys
158
00:04:45,600 –> 00:04:49,360
dot اندازه x را دریافت میکنیم، میتوانیم ببینیم
159
00:04:49,360 –> 00:04:52,080
که به ما مقدار 136 میدهد و سپس
160
00:04:52,080 –> 00:04:53,520
من فقط تابع محدوده خود را
161
00:04:53,520 –> 00:04:54,080
در
162
00:04:54,080 –> 00:04:57,280
اینجا میگیرم، میخواهم چاپ sys dot دریافت
163
00:04:57,280 –> 00:05:00,400
اندازه و سپس از تابع range
164
00:05:00,400 –> 00:05:02,000
خوب به نظر می رسد
165
00:05:02,000 –> 00:05:04,800
و ما می بینیم که برای تابع محدوده اندازه 48 دریافت
166
00:05:04,800 –> 00:05:06,320
می کنیم، بنابراین بدیهی است که این
167
00:05:06,320 –> 00:05:07,759
دقیقاً چیزی را که من می گویم ثابت نمی کند،
168
00:05:07,759 –> 00:05:09,039
فقط سعی می کنم به شما نشان دهم که
169
00:05:09,039 –> 00:05:10,639
از فضای بیشتری نسبت به محدوده استفاده می کند. تابع
170
00:05:10,639 –> 00:05:12,000
چون تابع range نیازی
171
00:05:12,000 –> 00:05:13,199
به ایجاد این
172
00:05:13,199 –> 00:05:14,800
لیست ندارد تا بتوانیم از طریق آن حلقه بزنیم و
173
00:05:14,800 –> 00:05:16,240
این به این دلیل است که تابع range
174
00:05:16,240 –> 00:05:18,479
یک تکرار کننده را به ما برمی گرداند،
175
00:05:18,479 –> 00:05:20,320
بنابراین اکنون می توانیم واقعاً در مورد
176
00:05:20,320 –> 00:05:21,680
اینکه یک تکرار کننده چیست
177
00:05:21,680 –> 00:05:23,919
به عنوان یک تکرار کننده صحبت کنیم. من قبلاً توضیح
178
00:05:23,919 –> 00:05:25,520
دادم واقعاً چیزی است که به ما امکان می دهد
179
00:05:25,520 –> 00:05:27,280
دنباله ای از nu را حلقه بزنیم mbers یا برخی از
180
00:05:27,280 –> 00:05:29,039
داده ها بدون نیاز به ذخیره همه آنها،
181
00:05:29,039 –> 00:05:30,560
بنابراین تابع range یک
182
00:05:30,560 –> 00:05:32,400
مثال عالی از یک تکرار کننده است زیرا به ما اجازه می
183
00:05:32,400 –> 00:05:33,440
دهد همه این اعداد را
184
00:05:33,440 –> 00:05:35,039
بدون نیاز به ذخیره آنها در
185
00:05:35,039 –> 00:05:36,160
ساختار داده ای حلقه بزنیم،
186
00:05:36,160 –> 00:05:37,680
من یک مثال دیگر را به شما نشان خواهم داد.
187
00:05:37,680 –> 00:05:39,600
از یک تکرار کننده در پایتون که ممکن
188
00:05:39,600 –> 00:05:41,039
است ندانید یک تکرار کننده است
189
00:05:41,039 –> 00:05:42,320
و فقط به طور خلاصه توضیح دهید
190
00:05:42,320 –> 00:05:43,680
که چگونه کار می کند زیرا درک ما را به ارمغان می آورد
191
00:05:43,680 –> 00:05:44,639
192
00:05:44,639 –> 00:05:45,919
بنابراین
193
00:05:45,919 –> 00:05:47,199
اگر نمی دانید چه کاری انجام می دهد از این تابع به نام نقشه استفاده می کنم.
194
00:05:47,199 –> 00:05:48,880
نگران نباشید وقتی کد را اینجا بنویسم دقیقاً
195
00:05:48,880 –> 00:05:49,440
توضیح خواهم داد
196
00:05:49,440 –> 00:05:51,919
که چه کار می کند، می خواهم i را
197
00:05:51,919 –> 00:05:53,360
به توان 2 بگویم
198
00:05:53,360 –> 00:05:56,000
و سپس x okay را ارسال کنم، بنابراین عملکرد
199
00:05:56,000 –> 00:05:56,800
200
00:05:56,800 –> 00:05:58,560
نقشه این است که ساختار داده ای را می گیرد در این
201
00:05:58,560 –> 00:05:59,840
مورد ما یک لیست
202
00:05:59,840 –> 00:06:01,680
می کند و تمام مقادیر موجود در این
203
00:06:01,680 –> 00:06:03,120
ساختار داده را به
204
00:06:03,120 –> 00:06:05,039
یک تابع نگاشت می کند، بنابراین تقریباً
205
00:06:05,039 –> 00:06:06,720
این تابع را برای همه مقادیر موجود در
206
00:06:06,720 –> 00:06:07,680
ساختار داده اعمال می کند
207
00:06:07,680 –> 00:06:09,120
و سپس در واقع یک تکرار کننده را به ما برمی گرداند
208
00:06:09,120 –> 00:06:11,039
که شامل تمام
209
00:06:11,039 –> 00:06:11,919
210
00:06:11,919 –> 00:06:14,720
نتایج این تابع به نام است. در تمام هفتم
211
00:06:14,720 –> 00:06:16,400
مقادیر ese اساساً کاری که این کار انجام می دهد
212
00:06:16,400 –> 00:06:18,240
، تولید مربع های همه این
213
00:06:18,240 –> 00:06:19,759
مقادیر است و بنابراین اگر بخواهم به این
214
00:06:19,759 –> 00:06:20,000
به عنوان
215
00:06:20,000 –> 00:06:23,039
یک لیست نگاه کنم، 1 4 9
216
00:06:23,039 –> 00:06:25,120
16 و غیره را خواهم داشت زیرا من
217
00:06:25,120 –> 00:06:27,280
این تابع را دقیقاً در اینجا
218
00:06:27,280 –> 00:06:29,199
اعمال می کنم. فقط مربع
219
00:06:29,199 –> 00:06:31,120
تمام مقادیر را از لیست تولید می کند،
220
00:06:31,120 –> 00:06:34,000
اکنون موضوع این است که این تابع نقشه در اینجا
221
00:06:34,000 –> 00:06:35,039
در واقع
222
00:06:35,039 –> 00:06:38,000
لیست جدیدی را ذخیره نمی کند که همه
223
00:06:38,000 –> 00:06:39,840
نتایج این تابع را داشته باشد،
224
00:06:39,840 –> 00:06:41,520
این تابع در اینجا در واقع یک
225
00:06:41,520 –> 00:06:43,280
مولد یا تکرار کننده است
226
00:06:43,280 –> 00:06:45,840
که اجازه می دهد تا همه
227
00:06:45,840 –> 00:06:47,680
این نتایج را تکرار کنیم تا همه نتایج
228
00:06:47,680 –> 00:06:49,759
این مقادیر به این تابع منتقل
229
00:06:49,759 –> 00:06:51,280
شوند بدون اینکه واقعاً آنها را ذخیره کنیم.
230
00:06:51,280 –> 00:06:52,880
231
00:06:52,880 –> 00:06:55,199
232
00:06:55,199 –> 00:06:56,639
233
00:06:56,639 –> 00:06:59,199
این در واقع چیزی نیست
234
00:06:59,199 –> 00:07:00,720
که همه مقادیر را ذخیره کند، در
235
00:07:00,720 –> 00:07:02,080
حال حاضر یک لیست نیست،
236
00:07:02,080 –> 00:07:03,360
اگر به نمایش لیست نگاه
237
00:07:03,360 –> 00:07:06,240
کنم، بنابراین فهرست را چاپ می کنم،
238
00:07:06,240 –> 00:07:07,759
می بینیم که همه مقادیر مورد انتظار را دریافت
239
00:07:07,759 –> 00:07:09,280
می کنیم، اما اینطور نیست.
240
00:07:09,280 –> 00:07:10,960
د رفتار خطا، این لیست را ذخیره نمی
241
00:07:10,960 –> 00:07:13,360
کند، فقط وقتی این لیست را صدا می زنیم این لیست را برای ما ایجاد می کند.
242
00:07:13,360 –> 00:07:15,840
243
00:07:15,840 –> 00:07:17,199
244
00:07:17,199 –> 00:07:19,360
245
00:07:19,360 –> 00:07:21,039
246
00:07:21,039 –> 00:07:24,720
247
00:07:24,720 –> 00:07:27,039
و سپس من اینجا را چاپ میکنم، میبینیم
248
00:07:27,039 –> 00:07:29,039
که همه مقادیری را که انتظار داریم دریافت میکنیم
249
00:07:29,039 –> 00:07:31,520
، چیزی که این است که ما فقط زمانی این مقادیر را تولید
250
00:07:31,520 –> 00:07:32,160
251
00:07:32,160 –> 00:07:34,319
کردیم که از طریق این شی نقشه حلقهای را شروع کردیم،
252
00:07:34,319 –> 00:07:35,520
آنها
253
00:07:35,520 –> 00:07:37,599
قبلاً تولید و در حافظه ذخیره نشده بودند،
254
00:07:37,599 –> 00:07:38,639
مانند زمانی که
255
00:07:38,639 –> 00:07:41,440
میگویم 4i و y در اولین تکرار
256
00:07:41,440 –> 00:07:42,720
این 1 را
257
00:07:42,720 –> 00:07:44,560
به این تابع می فرستد و نتیجه را به من می دهد
258
00:07:44,560 –> 00:07:46,479
سپس این 4 را می فرستد یا متأسفم این 2 را
259
00:07:46,479 –> 00:07:47,840
به تابع به من می دهد نتیجه
260
00:07:47,840 –> 00:07:49,280
3 را به تابع می فرستد و نتیجه را به من
261
00:07:49,280 –> 00:07:51,360
می دهد در حالی که من این کار را انجام می دهم. با حلقه زدن
262
00:07:51,360 –> 00:07:52,960
از طریق آن، قبلاً این کار را انجام نداده و
263
00:07:52,960 –> 00:07:54,319
همه آن را در حافظه ذخیره می کنم
264
00:07:54,319 –> 00:07:56,000
و برای اینکه آخرین مدرک را در اینجا به شما ارائه کنم، می
265
00:07:56,000 –> 00:07:58,400
خواهم اندازه نقطه sys را چاپ
266
00:07:58,400 –> 00:08:02,000
کنم یا حدس می زنم این اندازه باشد
267
00:08:02,000 –> 00:08:04,400
و سپس y باشد و بیایید ببینید چه چیزی بدست
268
00:08:04,400 –> 00:08:06,160
می آوریم اگر شما دوباره سایز 48 می گیریم
269
00:08:06,160 –> 00:08:09,360
این را مقایسه کنید تا
270
00:08:09,360 –> 00:08:12,879
بگوییم لیست y بسیار خوب است، خواهید دید که
271
00:08:12,879 –> 00:08:13,520
لیست
272
00:08:13,520 –> 00:08:16,400
y بسیار بزرگتر از y است زیرا
273
00:08:16,400 –> 00:08:17,680
وقتی ما لیست را انجام می دهیم در واقع
274
00:08:17,680 –> 00:08:19,120
لیست را برای ما ایجاد می کند،
275
00:08:19,120 –> 00:08:20,800
امیدواریم این منطقی باشد، تمام
276
00:08:20,800 –> 00:08:22,479
نکته این است که ما این کار را انجام دادیم. مجبور
277
00:08:22,479 –> 00:08:24,639
نیستیم دنباله را در حافظه ذخیره کنیم، ما میتوانیم
278
00:08:24,639 –> 00:08:26,560
دنباله را همانطور که از طریق آن حلقه زدیم تولید کنیم
279
00:08:26,560 –> 00:08:28,720
و این همان چیزی است که یک تکرار کننده
280
00:08:28,720 –> 00:08:30,560
مشکلی ندارد، بنابراین اکنون میخواهم
281
00:08:30,560 –> 00:08:33,360
به نحوه عملکرد یک تکرارکننده و
282
00:08:33,360 –> 00:08:34,399
نحوه ایجاد
283
00:08:34,399 –> 00:08:37,360
یک تکرار بپردازم. برای حلقه ای که
284
00:08:37,360 –> 00:08:37,839
انجام
285
00:08:37,839 –> 00:08:40,640
می دهد این است که یک متد خاص را روی
286
00:08:40,640 –> 00:08:42,559
همه این اشیاء تکرار کننده فراخوانی می کند، بنابراین این
287
00:08:42,559 –> 00:08:45,040
شی نقشه این شی محدوده است که
288
00:08:45,040 –> 00:08:47,360
آیتم بعدی یا قطعه داده بعدی را
289
00:08:47,360 –> 00:08:48,959
در دنباله ای که در حال حلقه زدن هستیم به ما می
290
00:08:48,959 –> 00:08:50,399
دهد، بنابراین در واقع این
291
00:08:50,399 –> 00:08:52,160
تابع در اینجا وجود دارد. و next نامیده می شود
292
00:08:52,160 –> 00:08:54,320
و کاری که انجام می دهد این است که مقدار بعدی
293
00:08:54,320 –> 00:08:56,399
را در تکرار
294
00:08:56,399 –> 00:08:59,440
از طریق یک تکرار کننده به ما می دهد، بنابراین اگر من به اینجا بروم و
295
00:08:59,440 –> 00:09:00,240
296
00:09:00,240 –> 00:09:03,680
بعدی y را چاپ کنم، می توانید ببینید که
297
00:09:03,680 –> 00:09:04,160
یکی را
298
00:09:04,160 –> 00:09:06,480
درست می گیریم و سپس اگر دوباره این را چاپ
299
00:09:06,480 –> 00:09:07,680
کنم، چهار می گیریم.
300
00:09:07,680 –> 00:09:11,200
و اگر چاپ کنم این اوه دوباره 9 می گیریم
301
00:09:11,200 –> 00:09:14,160
و دوباره اوه من قصد نداشتم
302
00:09:14,160 –> 00:09:15,519
یک فایل جدید در آنجا ایجاد
303
00:09:15,519 –> 00:09:18,080
کنیم 16 می گیریم. و سپس توجه کنید که در اینجا دقیقاً
304
00:09:18,080 –> 00:09:18,959
305
00:09:18,959 –> 00:09:21,200
4 بار y را مرور کرده ام و اکنون اگر شروع به حلقه زدن
306
00:09:21,200 –> 00:09:22,080
از طریق y برای
307
00:09:22,080 –> 00:09:25,279
i و y و i کنم
308
00:09:25,279 –> 00:09:28,880
print i ما حلقه زدن را از 25 شروع می کنیم
309
00:09:28,880 –> 00:09:31,760
زیرا این مقدار بعدی
310
00:09:31,760 –> 00:09:33,440
در اخطار تکرار بود
311
00:09:33,440 –> 00:09:36,480
312
00:09:36,480 –> 00:09:37,680
313
00:09:37,680 –> 00:09:38,240
314
00:09:38,240 –> 00:09:40,160
. و فقط برای
315
00:09:40,160 –> 00:09:41,519
اینکه این موضوع واضح تر شود، می خواهم
316
00:09:41,519 –> 00:09:41,839
بگویم که
317
00:09:41,839 –> 00:09:45,360
حلقه برای چاپ خوب شروع می شود
318
00:09:45,360 –> 00:09:48,240
و توجه داشته باشید که ما 1 4 9 16 حلقه for
319
00:09:48,240 –> 00:09:49,680
شروع می شود و سپس تا بقیه تکرار ادامه می دهیم
320
00:09:49,680 –> 00:09:51,600
،
321
00:09:51,600 –> 00:09:53,279
امیدوارم این کار به نوعی منطقی باشد
322
00:09:53,279 –> 00:09:55,600
اما واقعاً کاری که یک حلقه for انجام می دهد
323
00:09:55,600 –> 00:09:56,800
این است که این
324
00:09:56,800 –> 00:10:00,240
تابع بعدی را روی شی تکرار کننده شما فراخوانی می کند
325
00:10:00,240 –> 00:10:02,640
و این تابع i را به
326
00:10:02,640 –> 00:10:04,640
شما برمی گرداند که مقدار بعدی در
327
00:10:04,640 –> 00:10:05,279
دنباله خواهد بود،
328
00:10:05,279 –> 00:10:06,560
بنابراین زمانی که من قبلاً از
329
00:10:06,560 –> 00:10:08,720
چهار مقدار اول در حلقه عبور کرده ام. دنباله
330
00:10:08,720 –> 00:10:10,399
و سپس به حلقه for می روم در اینجا
331
00:10:10,399 –> 00:10:11,839
حلقه for است فقط
332
00:10:11,839 –> 00:10:13,440
به تماس بعدی ادامه می دهیم تا در نهایت
333
00:10:13,440 –> 00:10:15,200
آیتم های دیگری در دنباله وجود نداشته باشند و به
334
00:10:15,200 –> 00:10:16,399
همین دلیل است که
335
00:10:16,399 –> 00:10:18,800
بعد از اینکه ما قبلاً مقدار را حلقه زده
336
00:10:18,800 –> 00:10:20,480
337
00:10:20,480 –> 00:10:22,079
ایم شروع می شود، اگر چنین چیزی منطقی باشد یا از جایی شروع شود که ما
338
00:10:22,079 –> 00:10:24,560
بقیه را رها کردیم از
339
00:10:24,560 –> 00:10:25,279
دنباله،
340
00:10:25,279 –> 00:10:28,079
امیدوارم که من بیان می کنم که خوب است،
341
00:10:28,079 –> 00:10:29,680
امیدوارم که منطقی باشد، اما این
342
00:10:29,680 –> 00:10:31,279
کاری است که یک تکرار کننده انجام می دهد، همان کاری است که حلقه for انجام
343
00:10:31,279 –> 00:10:33,200
می دهد، یک تکرار کننده این نوع
344
00:10:33,200 –> 00:10:35,760
متد بعدی را روی آن دارد و وقتی از این
345
00:10:35,760 –> 00:10:36,720
تابع بعدی به
346
00:10:36,720 –> 00:10:38,959
خوبی استفاده می کنیم، به آن دسترسی پیدا می کنیم. مقدار بعدی
347
00:10:38,959 –> 00:10:39,839
در دنباله
348
00:10:39,839 –> 00:10:42,480
حالا وقتی این کار را انجام
349
00:10:42,480 –> 00:10:43,120
میدهم
350
00:10:43,120 –> 00:10:45,600
351
00:10:45,600 –> 00:10:46,560
352
00:10:46,560 –> 00:10:48,880
353
00:10:48,880 –> 00:10:50,079
354
00:10:50,079 –> 00:10:52,000
355
00:10:52,000 –> 00:10:54,560
همان کار میکند. من میگویم
356
00:10:54,560 –> 00:10:55,920
زیرخط زیرخط بعدی زیرخط
357
00:10:55,920 –> 00:10:56,560
زیرخط
358
00:10:56,560 –> 00:10:58,079
روی یک شی و فقط برای نشان دادن آن به
359
00:10:58,079 –> 00:11:00,320
شما اگر این را اجرا کنم، میبینید که ما همان چیزی را دریافت میکنیم،
360
00:11:00,320 –> 00:11:01,440
361
00:11:01,440 –> 00:11:04,240
بسیار خوب است، بنابراین اکنون
362
00:11:04,240 –> 00:11:05,519
این کار را انجام میدهم. برای شما
363
00:11:05,519 –> 00:11:08,240
این است که یک حلقه برای بنویسید یا با
364
00:11:08,240 –> 00:11:09,839
پیاده سازی واقعی یک حلقه برای بنویسید
365
00:11:09,839 –> 00:11:11,519
متأسفانه است، بنابراین می توانید ببینید
366
00:11:11,519 –> 00:11:13,200
که در واقع در یک تکرارکننده چگونه کار می کند، بنابراین
367
00:11:13,200 –> 00:11:14,720
این حلقه for ما است، اما اگر بخواهم
368
00:11:14,720 –> 00:11:15,920
این را برای حلقه
369
00:11:15,920 –> 00:11:18,240
و نوعی لایه برداری بنویسم شما در
370
00:11:18,240 –> 00:11:20,160
اینجا میدانید مبدل که میگوید 4
371
00:11:20,160 –> 00:11:22,160
، اگر بگویم
372
00:11:22,160 –> 00:11:23,440
در حالی که درست است
373
00:11:23,440 –> 00:11:25,600
و سپس سعی میکنم مقدار بعدی را در تکرارکننده خود به دست بیاورم، به این شکل
374
00:11:25,600 –> 00:11:26,720
خواهد بود،
375
00:11:26,720 –> 00:11:30,000
بنابراین میخواهم بگویم مقدار
376
00:11:30,000 –> 00:11:32,800
برابر است با بعدی و این خواهد بود از y
377
00:11:32,800 –> 00:11:34,800
و من می خواهم
378
00:11:34,800 –> 00:11:37,920
استثنا را در اینجا بپذیرم، توقف تکرار است
379
00:11:37,920 –> 00:11:40,240
، این را در یک ثانیه توصیف می کنم و
380
00:11:40,240 –> 00:11:42,560
سپس می روم و فقط
381
00:11:42,560 –> 00:11:45,040
چاپ
382
00:11:45,760 –> 00:11:49,200
انجام شده است و سپس در اینجا مقدار را چاپ می کنم
383
00:11:49,200 –> 00:11:51,760
خوب پس این
384
00:11:51,760 –> 00:11:52,240
حلقه های for
385
00:11:52,240 –> 00:11:53,680
و این حلقه while در واقع
386
00:11:53,680 –> 00:11:55,040
یکسان هستند، اجازه دهید من از شر آن خلاص شوم،
387
00:11:55,040 –> 00:11:56,959
زیرا ما دیگر به این نیاز نداریم،
388
00:11:56,959 –> 00:11:58,800
خوب دوباره بله، بنابراین این حلقه for و
389
00:11:58,800 –> 00:12:00,560
این حلقه while یکسان هستند، ما در حال
390
00:12:00,560 –> 00:12:01,360
حلقه زدن از طریق
391
00:12:01,360 –> 00:12:03,680
این تکرار کننده y هستیم. در این مورد
392
00:12:03,680 –> 00:12:04,399
من 4
393
00:12:04,399 –> 00:12:07,040
i در y می گویم و سپس کاری که این حلقه for
394
00:12:07,040 –> 00:12:08,959
در واقع انجام می دهد چیست من اینجا نوشته ام که
395
00:12:08,959 –> 00:12:10,320
ما یک حلقه بی نهایت داریم، بنابراین در
396
00:12:10,320 –> 00:12:11,680
حالی که درست است داریم، زیرا نمی دانیم
397
00:12:11,680 –> 00:12:13,360
چند مورد در دنباله هستند
398
00:12:13,360 –> 00:12:15,600
و سپس کاری که انجام می دهیم این است که سعی می کنیم
399
00:12:15,600 –> 00:12:18,000
مقدار بعدی را از iterate خود دریافت کنیم،
400
00:12:18,000 –> 00:12:20,399
بنابراین همچنان این را next فراخوانی می کنیم. تابع یا
401
00:12:20,399 –> 00:12:22,000
به همان روش می توانیم بگوییم y
402
00:12:22,000 –> 00:12:24,160
نقطه زیر خط زیر خط بعدی،
403
00:12:24,160 –> 00:12:25,519
اما تابع بعدی
404
00:12:25,519 –> 00:12:27,279
نوعی قرارداد است،
405
00:12:27,279 –> 00:12:29,360
سپس مقدار را چاپ می کنیم و سپس تکرار
406
00:12:29,360 –> 00:12:30,720
توقف را می پذیریم،
407
00:12:30,720 –> 00:12:32,959
بنابراین در هر نقطه از زمان
408
00:12:32,959 –> 00:12:35,040
هیچ مقدار دیگری در دنباله وجود ندارد. یا
409
00:12:35,040 –> 00:12:36,880
در تکرار کننده، تکرار کننده
410
00:12:36,880 –> 00:12:37,839
یک استثنا ایجاد می کند،
411
00:12:37,839 –> 00:12:40,399
این استثنا عبارت است از توقف تکرار و در
412
00:12:40,399 –> 00:12:41,760
آن صورت ما حلقه while را پایان می
413
00:12:41,760 –> 00:12:44,000
دهیم و تمام می شود، بنابراین فقط این حلقه for را در نظر داشته باشید
414
00:12:44,000 –> 00:12:45,360
و این حلقه while به
415
00:12:45,360 –> 00:12:46,959
معنای واقعی کلمه دقیقاً یکسان است.
416
00:12:46,959 –> 00:12:48,480
درست است، بنابراین اجازه دهید من این حلقه را
417
00:12:48,480 –> 00:12:50,399
در اینجا حذف کنم و فقط آن را برای شما اجرا کنم و
418
00:12:50,399 –> 00:12:52,160
می بینید که درست کار می
419
00:12:52,160 –> 00:12:53,680
کند، همه مقادیر را چاپ می کنیم و به محض اینکه
420
00:12:53,680 –> 00:12:55,600
خطای توقف تکرار را پیدا
421
00:12:55,600 –> 00:12:57,440
کردیم، اکنون چاپ انجام شده است، اجازه دهید به شما نشان دهم اگر چه
422
00:12:57,440 –> 00:12:59,279
اتفاقی می افتد من h
423
00:12:59,279 –> 00:13:01,680
این را غیر از اینجا انجام دهید، بنابراین اگر من فقط این کار را انجام دهم،
424
00:13:01,680 –> 00:13:03,360
فقط سعی می کنم مقدار بعدی را از تکرار کننده خود دریافت کنم
425
00:13:03,360 –> 00:13:04,160
426
00:13:04,160 –> 00:13:05,839
و این اعلان را اجرا می کنم، یک
427
00:13:05,839 –> 00:13:07,200
استثنا می گیریم و فقط می گوید
428
00:13:07,200 –> 00:13:08,800
توقف تکرار را می دهد، بدیهی است که چرا من
429
00:13:08,800 –> 00:13:10,800
خطای توقف تکرار را پذیرفتم
430
00:13:10,800 –> 00:13:12,240
زیرا خوب شما نیاز دارید برای انجام این کار
431
00:13:12,240 –> 00:13:14,560
در غیر این صورت برنامه شما از کار می افتد
432
00:13:14,560 –> 00:13:17,040
و این دقیقاً همان چیزی است که یک حلقه for مشکلی ندارد،
433
00:13:17,040 –> 00:13:18,079
بنابراین باید به این نکته توجه کنید
434
00:13:18,079 –> 00:13:19,680
که اساس نحوه حلقه زدن شما از
435
00:13:19,680 –> 00:13:21,760
طریق یک تکرار است، اکنون اجازه دهید به شما نشان
436
00:13:21,760 –> 00:13:23,360
دهم که همان کاری را انجام دهید متاسفم
437
00:13:23,360 –> 00:13:24,880
با تابع محدوده،
438
00:13:24,880 –> 00:13:28,160
بنابراین فرض کنید x برابر است با حروف کوچک
439
00:13:28,160 –> 00:13:30,399
x برابر است با محدوده و سپس ما 1
440
00:13:30,399 –> 00:13:31,680
11 داریم. این محدوده ای است که می خواهیم از طریق حلقه حلقه بزنیم،
441
00:13:31,680 –> 00:13:32,000
442
00:13:32,000 –> 00:13:34,000
بنابراین بیایید با چاپ x شروع کنیم، اکنون
443
00:13:34,000 –> 00:13:35,760
متوجه می شویم که وقتی x را چاپ می کنیم، در واقع فقط
444
00:13:35,760 –> 00:13:37,839
یک رشته دریافت می کنیم. نمایش تابع محدوده،
445
00:13:37,839 –> 00:13:39,120
بنابراین این یک رشته است که فقط
446
00:13:39,120 –> 00:13:40,560
آن را برای ما چاپ می
447
00:13:40,560 –> 00:13:42,079
کند و حالا ببینید چه اتفاقی می افتد، اما اگر بخواهم
448
00:13:42,079 –> 00:13:44,160
بعدی را در x فراخوانی
449
00:13:44,160 –> 00:13:45,920
کنم اگر این کار را انجام دهم، خطایی دریافت می کنیم که
450
00:13:45,920 –> 00:13:48,240
می گوید شی محدوده یک تکرار کننده نیست،
451
00:13:48,240 –> 00:13:50,000
اکنون دلیل اینکه تکراری نیست ator به این
452
00:13:50,000 –> 00:13:51,440
دلیل است که برای اینکه ما واقعاً
453
00:13:51,440 –> 00:13:52,959
تکرارکننده را از شی محدوده دریافت
454
00:13:52,959 –> 00:13:55,040
کنیم، باید متد ویژه دیگری را
455
00:13:55,040 –> 00:13:56,560
فراخوانی کنیم که
456
00:13:56,560 –> 00:13:59,839
iter نام دارد، بنابراین این متد iter یا
457
00:13:59,839 –> 00:14:01,600
این تابع داخلی وجود دارد که
458
00:14:01,600 –> 00:14:02,880
یک تکرار کننده از یک
459
00:14:02,880 –> 00:14:05,120
شی را برمی گرداند و همچنین زیرخط زیرخط نقطه وجود دارد.
460
00:14:05,120 –> 00:14:06,720
روش iter
461
00:14:06,720 –> 00:14:09,199
underscore underscore underscore dunder
462
00:14:09,199 –> 00:14:09,920
463
00:14:09,920 –> 00:14:12,320
اکنون کاری که این روش iter انجام می دهد
464
00:14:12,320 –> 00:14:13,680
دقیقاً مشابه این تابع iter است
465
00:14:13,680 –> 00:14:15,040
اگر روش iter را فراخوانی کنید،
466
00:14:15,040 –> 00:14:16,480
به معنای واقعی کلمه با فراخوانی
467
00:14:16,480 –> 00:14:18,079
تابع تئاتر درست مانند تابع بعدی و
468
00:14:18,079 –> 00:14:18,720
469
00:14:18,720 –> 00:14:21,199
روش dunder بعدی یکسان است، بنابراین تمام هدف من است.
470
00:14:21,199 –> 00:14:22,160
با این حال، گفتن این موضوع به شما این
471
00:14:22,160 –> 00:14:24,399
است که اگر میخواهیم تکرارکننده را
472
00:14:24,399 –> 00:14:26,639
از x دریافت کنیم، باید آن را به این صورت
473
00:14:26,639 –> 00:14:29,199
صدا کنیم، بنابراین اگر من آن را صدا بزنم یا
474
00:14:29,199 –> 00:14:30,720
اکنون آنجا باشم،
475
00:14:30,720 –> 00:14:32,480
اگر بعدی