در این مطلب، ویدئو فراتر از چیزهای اساسی با پایتون – Al Sweigart – قسمت 15 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:15:38
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,240 –> 00:00:02,720
به درس 15 خوش آمدید. در این درس
2
00:00:02,720 –> 00:00:04,560
قصد داریم نگاهی به
3
00:00:04,560 –> 00:00:06,960
فصل 5 کتاب درسی دوره بیندازیم که
4
00:00:06,960 –> 00:00:09,719
مجدداً می توانید به صورت آنلاین به صورت رایگان در
5
00:00:09,719 –> 00:00:12,480
inventwithpython.com فراتر از
6
00:00:12,480 –> 00:00:14,960
کدهای now که باعث از کار افتادن یک برنامه می شود
7
00:00:14,960 –> 00:00:16,960
، واضح است که اشتباه است اما خراب می شود.
8
00:00:16,960 –> 00:00:18,320
تنها نشانگر
9
00:00:18,320 –> 00:00:20,560
مشکلات احتمالی در برنامههای شما نیستند، شما میتوانید
10
00:00:20,560 –> 00:00:22,080
باگهایی داشته باشید که
11
00:00:22,080 –> 00:00:23,920
بسیار ظریفتر از آن هستند یا حتی
12
00:00:23,920 –> 00:00:25,680
کدهایی که اکنون خواندن آنها سخت است
13
00:00:25,680 –> 00:00:27,279
، همانطور که بوی گاز میتواند
14
00:00:27,279 –> 00:00:28,720
نشان دهنده نشت گاز
15
00:00:28,720 –> 00:00:30,800
یا بوی دود باشد.
16
00:00:30,800 –> 00:00:32,719
بوی کد
17
00:00:32,719 –> 00:00:34,960
یک الگوی کد منبع است که
18
00:00:34,960 –> 00:00:36,559
اشکالات احتمالی را نشان می دهد.
19
00:00:36,559 –> 00:00:38,480
بوی کد لزوماً به این معنی نیست
20
00:00:38,480 –> 00:00:39,840
که مشکلی وجود دارد،
21
00:00:39,840 –> 00:00:41,280
اما به این معنی است که اکنون باید
22
00:00:41,280 –> 00:00:43,600
در این و
23
00:00:43,600 –> 00:00:44,480
چند
24
00:00:44,480 –> 00:00:46,480
درس بعدی که قرار است پوشش دهم آن را بررسی کنید. چندین بو کد معمولی
25
00:00:46,480 –> 00:00:47,520
26
00:00:47,520 –> 00:00:49,039
آنچه باید به خاطر بسپارید این است
27
00:00:49,039 –> 00:00:51,120
که زمان و تلاش بسیار کمتری برای
28
00:00:51,120 –> 00:00:52,239
جلوگیری از یک
29
00:00:52,239 –> 00:00:54,719
باگ نسبت به درک و سپس
30
00:00:54,719 –> 00:00:55,600
رفع یک باگ
31
00:00:55,600 –> 00:00:58,000
32
00:00:58,000 –> 00:00:59,680
33
00:00:59,680 –> 00:01:01,520
نیاز دارد. دریابید که راه حل شامل
34
00:01:01,520 –> 00:01:03,280
تغییر یک خط کد
35
00:01:03,280 –> 00:01:05,360
در حال حاضر به همین دلیل است، حتی اگر یک
36
00:01:05,360 –> 00:01:07,360
باگ احتمالی وجود داشته باشد باید مکث کنید
37
00:01:07,360 –> 00:01:09,360
و از شما بخواهد که دوباره بررسی کنید تا
38
00:01:09,360 –> 00:01:10,640
مطمئن شوید که
39
00:01:10,640 –> 00:01:12,880
اکنون مشکلی در آینده ایجاد نمی کنید، البته اگر
40
00:01:12,880 –> 00:01:13,840
کدی پیدا کنید. بو
41
00:01:13,840 –> 00:01:15,759
در برنامه شما که لزوماً
42
00:01:15,759 –> 00:01:17,280
به این معنی نیست که مشکلی وجود دارد،
43
00:01:17,280 –> 00:01:19,680
در نهایت اینکه آیا باید
44
00:01:19,680 –> 00:01:20,560
بوی کد را نشان داد یا نادیده گرفت
45
00:01:20,560 –> 00:01:22,640
، قضاوتی است که باید انجام
46
00:01:22,640 –> 00:01:24,560
دهید، حالا اجازه دهید به اولین
47
00:01:24,560 –> 00:01:28,960
بوی کد برویم که کد تکراری است،
48
00:01:31,119 –> 00:01:33,040
اکنون کد تکراری هر کد منبع است.
49
00:01:33,040 –> 00:01:34,320
که می توانستید
50
00:01:34,320 –> 00:01:36,159
با کپی و چسباندن کد دیگری
51
00:01:36,159 –> 00:01:37,439
در برنامه خود ایجاد کنید،
52
00:01:37,439 –> 00:01:40,400
به عنوان مثال این برنامه کوتاه حاوی
53
00:01:40,400 –> 00:01:43,119
کد تکراری است
54
00:01:43,119 –> 00:01:45,119
که به شما می گوید صبح بخیر احساستان را می پرسد و به شما
55
00:01:45,119 –> 00:01:46,720
اجازه می دهد احساس خود را وارد کنید
56
00:01:46,720 –> 00:01:48,479
و سپس می گوید از شنیدن آن خوشحالم.
57
00:01:48,479 –> 00:01:49,920
شما
58
00:01:49,920 –> 00:01:51,280
هر احساسی را که وارد کردید احساس می کنید
59
00:01:51,280 –> 00:01:53,759
و سپس می گوید ظهر بخیر
60
00:01:53,759 –> 00:01:55,280
و همان کاری را انجام می دهد که از شما برای احساس شما می خواهد
61
00:01:55,280 –> 00:01:57,040
و سپس می گوید خوشحالم
62
00:01:57,040 –> 00:01:57,600
که آن را می شنوم
63
00:01:57,600 –> 00:01:59,360
و سپس در نهایت تمام شد می گوید
64
00:01:59,360 –> 00:02:01,920
عصر بخیر و سپس این را تکرار می کند،
65
00:02:01,920 –> 00:02:04,000
حالا می توانستیم این کد را
66
00:02:04,000 –> 00:02:05,759
با کپی و چسباندن
67
00:02:05,759 –> 00:02:07,520
این سه خط کد بارها و
68
00:02:07,520 –> 00:02:09,919
بارها بنویسیم، کد تکراری
69
00:02:09,919 –> 00:02:13,200
در برنامه ما وجود دارد و این یک بوی کد است،
70
00:02:13,200 –> 00:02:15,040
حالا کد تکراری یک مشکل است،
71
00:02:15,040 –> 00:02:16,560
زیرا باعث تغییر می شود. کد
72
00:02:16,560 –> 00:02:20,319
مشکل است تغییری که در یک کپی
73
00:02:20,319 –> 00:02:22,720
از کد تکراری ایجاد میکنید باید در
74
00:02:22,720 –> 00:02:23,599
همه
75
00:02:23,599 –> 00:02:25,920
مکانهای دیگر نیز انجام شود، برای مثال اگر
76
00:02:25,920 –> 00:02:27,920
اشکالی در
77
00:02:27,920 –> 00:02:29,920
این خط کد پیدا کردید، باید
78
00:02:29,920 –> 00:02:31,360
آن اشکال را در اینجا و
79
00:02:31,360 –> 00:02:34,319
اینجا برطرف کنید. راه حل برای کپی کردن کد، کپی کردن
80
00:02:34,319 –> 00:02:36,319
آن است، یعنی
81
00:02:36,319 –> 00:02:38,400
می خواهید آن را فقط یک بار در
82
00:02:38,400 –> 00:02:40,080
برنامه خود نشان دهید و می توانید این کار را با
83
00:02:40,080 –> 00:02:41,519
قرار دادن کد تکراری
84
00:02:41,519 –> 00:02:44,319
در داخل یک تابع یا یک حلقه انجام دهید، بنابراین در
85
00:02:44,319 –> 00:02:45,840
این مثال من می خواهم تکراری را جابجا کنید.
86
00:02:45,840 –> 00:02:49,280
کد در یک تابع
87
00:02:49,280 –> 00:02:51,920
من فقط یک تابع به نام ask feeling ایجاد می
88
00:02:51,920 –> 00:02:54,319
کنم
89
00:02:54,959 –> 00:02:59,120
و این کد را در اینجا کپی و پیست می کنم
90
00:03:00,720 –> 00:03:02,239
و سپس همه این
91
00:03:02,239 –> 00:03:04,480
نمونه های کد تکراری را
92
00:03:04,480 –> 00:03:07,920
با فراخوانی به آن تابع جایگزین می کنم که
93
00:03:16,480 –> 00:03:18,640
این کد دقیقاً همان را تولید می کند.
94
00:03:18,640 –> 00:03:20,560
رفتار مانند برنامه قبلی ما است،
95
00:03:20,560 –> 00:03:23,760
به جز اکنون اگر اشکالی در یکی از
96
00:03:23,760 –> 00:03:25,040
این خطوط کد پیدا
97
00:03:25,040 –> 00:03:27,440
کنم، فقط باید کد را در یک مکان به روز کنم،
98
00:03:27,440 –> 00:03:29,280
99
00:03:29,280 –> 00:03:30,799
همه فراخوانی های تابع به این
100
00:03:30,799 –> 00:03:32,799
تابع به طور خودکار
101
00:03:32,799 –> 00:03:36,000
کد به روز شده ثابت را خواهند داشت، اکنون در حالت دیگری
102
00:03:36,000 –> 00:03:37,920
می توانم کد تکراری را به یک
103
00:03:37,920 –> 00:03:39,280
حلقه منتقل کنید،
104
00:03:39,280 –> 00:03:41,120
اجازه دهید به کد اصلی که داشتم برگردم
105
00:03:41,120 –> 00:03:43,440
106
00:03:44,879 –> 00:03:46,879
و اجازه دهید این کد را داخل یک
107
00:03:46,879 –> 00:03:49,200
حلقه
108
00:03:50,130 –> 00:03:55,840
[موسیقی] قرار
109
00:03:55,840 –> 00:03:58,080
دهم، بیایید قسمت های مختلف را ببینیم، فقط
110
00:03:58,080 –> 00:03:59,200
می
111
00:03:59,200 –> 00:04:03,519
گوید صبح یا عصر بخیر
112
00:04:04,959 –> 00:04:10,319
، می توانم آن را با کد جایگزین کنم. متغیر زمان از روز
113
00:04:12,840 –> 00:04:14,640
114
00:04:14,640 –> 00:04:16,560
و سپس من فقط می توانم از شر این کد تکراری خلاص شوم
115
00:04:16,560 –> 00:04:19,440
116
00:04:20,399 –> 00:04:23,280
و دوباره کد را حذف کردم
117
00:04:23,280 –> 00:04:25,040
فقط یک بار ظاهر می شود و بنابراین اگر می خواهم
118
00:04:25,040 –> 00:04:27,120
به روز رسانی یا رفع
119
00:04:27,120 –> 00:04:30,400
اشکال انجام دهم فقط باید آن را در یک مکان ایجاد
120
00:04:30,400 –> 00:04:32,080
کنم. به کد اصلی که داشتم برگردم
121
00:04:32,080 –> 00:04:34,400
122
00:04:37,040 –> 00:04:38,720
و راه دیگری که میتوانم
123
00:04:38,720 –> 00:04:40,720
آن را کپی کنم این است که از یک تابع
124
00:04:40,720 –> 00:04:44,160
و یک حلقه استفاده کنم، فرض کنید من
125
00:04:44,160 –> 00:04:47,280
دوباره آن تابع ask احساس را ایجاد میکنم و این
126
00:04:47,280 –> 00:04:48,240
بار پارامتری
127
00:04:48,240 –> 00:04:57,680
به نام time of day
128
00:04:57,680 –> 00:05:00,560
دارم و
129
00:05:02,960 –> 00:05:11,840
آن را جایگزین میکنم. ما می رویم این را با زمان از روز
130
00:05:14,830 –> 00:05:24,940
[Music]
131
00:05:30,130 –> 00:05:33,240
[Music]
132
00:05:34,960 –> 00:05:37,039
و اکنون تابعی دارم که
133
00:05:37,039 –> 00:05:38,720
پارامتر زمان روز دارد
134
00:05:38,720 –> 00:05:41,440
و می توانم این تابع را با
135
00:05:41,440 –> 00:05:42,639
آرگومان های مختلف فراخوانی کنم
136
00:05:42,639 –> 00:05:45,360
و این دقیقا همان کد
137
00:05:45,360 –> 00:05:47,280
برنامه اصلی ما را تولید می کند که اکنون کد تکراری داشت.
138
00:05:47,280 –> 00:05:48,240
139
00:05:48,240 –> 00:05:50,320
همانطور که با همه بوهای کد، اجتناب از
140
00:05:50,320 –> 00:05:52,000
کد تکراری یک
141
00:05:52,000 –> 00:05:53,840
قانون سخت و سریع نیست که شما همیشه
142
00:05:53,840 –> 00:05:55,759
باید به طور کلی از آن پیروی کنید، هر چه
143
00:05:55,759 –> 00:05:57,199
بخش کد تکراری طولانیتر باشد
144
00:05:57,199 –> 00:05:59,120
یا تعداد کپیهای تکراری بیشتری در برنامه شما ظاهر شود، امکان حذف
145
00:05:59,120 –> 00:06:00,880
آن قویتر است.
146
00:06:00,880 –> 00:06:02,080
147
00:06:02,080 –> 00:06:04,080
فکر می کنم یک یا حتی دو بار کد را کپی و جایگذاری کنید
148
00:06:04,080 –> 00:06:05,520
،
149
00:06:05,520 –> 00:06:07,600
اما من معمولاً
150
00:06:07,600 –> 00:06:09,120
زمانی که
151
00:06:09,120 –> 00:06:12,160
سه یا چهار نسخه در برنامه من وجود دارد شروع به حذف کد می کنم
152
00:06:12,160 –> 00:06:14,479
و گاهی اوقات کد ارزش حذف کردن
153
00:06:14,479 –> 00:06:15,919
154
00:06:15,919 –> 00:06:19,120
کد را ندارد، این مثال کد را با
155
00:06:19,120 –> 00:06:20,880
برنامه اصلی ما
156
00:06:20,880 –> 00:06:22,800
[Music] مقایسه کنید.
157
00:06:22,800 –> 00:06:25,039
این کدهای تکراری زیادی دارد،
158
00:06:25,039 –> 00:06:25,840
اما همچنین
159
00:06:25,840 –> 00:06:28,479
واقعاً ساده است که یک خط کد
160
00:06:28,479 –> 00:06:29,199
161
00:06:29,199 –> 00:06:32,160
پس از بقیه اجرا می شود، اما در اینجا ما
162
00:06:32,160 –> 00:06:34,000
مقداری پیچیدگی را معرفی کرده ایم، ما
163
00:06:34,000 –> 00:06:36,080
تابعی داریم که فراخوانی می شود و ما یک
164
00:06:36,080 –> 00:06:39,520
حلقه داریم که
165
00:06:39,520 –> 00:06:41,759
پارامتر متفاوتی را ارسال
166
00:06:41,759 –> 00:06:42,560
167
00:06:42,560 –> 00:06:44,960
168
00:06:44,960 –> 00:06:46,639
169
00:06:46,639 –> 00:06:47,680
170
00:06:47,680 –> 00:06:51,440
171
00:06:51,440 –> 00:06:52,240
172
00:06:52,240 –> 00:06:53,759
می کند. در برنامه خود داشته باشید
173
00:06:53,759 –> 00:06:56,160
اکنون کد تکراری بوی کد است
174
00:06:56,160 –> 00:06:57,759
زیرا تغییر مداوم کد شما را
175
00:06:57,759 –> 00:06:59,919
سخت تر می کند و
176
00:06:59,919 –> 00:07:01,919
اگر چندین نسخه تکراری در برنامه خود دارید
177
00:07:01,919 –> 00:07:03,840
راه حل این است که کد را
178
00:07:03,840 –> 00:07:07,680
در داخل یک تابع یا داخل یک حلقه قرار دهید
179
00:07:07,680 –> 00:07:10,240
، بوی کد بعدی به این صورت است. اعداد جادویی در حال حاضر
180
00:07:10,240 –> 00:07:11,599
جای تعجب نیست که برنامه نویسی
181
00:07:11,599 –> 00:07:12,160
شامل
182
00:07:12,160 –> 00:07:13,919
اعداد می شود، اما برخی از اعدادی که
183
00:07:13,919 –> 00:07:15,199
در کد منبع شما ظاهر می شوند
184
00:07:15,199 –> 00:07:17,520
می توانند برنامه نویسان دیگر یا حتی
185
00:07:17,520 –> 00:07:19,199
خودتان را در آینده گیج کنند،
186
00:07:19,199 –> 00:07:21,360
برای مثال اگر کدی داشته باشم که
187
00:07:21,360 –> 00:07:22,880
به نظر می رسد این انقضا
188
00:07:22,880 –> 00:07:27,919
برابر با زمان نقطه زمانی به اضافه
189
00:07:27,960 –> 00:07:30,080
604800 باشد چه می شود.
190
00:07:30,080 –> 00:07:32,880
تابع زمان نقطه زمانی که یک
191
00:07:32,880 –> 00:07:35,039
عدد صحیح نشان دهنده زمان فعلی
192
00:07:35,039 –> 00:07:37,599
um که می توانیم ex را برمی گرداند، برمی گرداند و می توانیم فرض کنیم که
193
00:07:37,599 –> 00:07:40,000
متغیر انقضا
194
00:07:40,000 –> 00:07:43,199
نشان دهنده نقطه ای از ششصد و
195
00:07:43,199 –> 00:07:44,080
چهار هزار
196
00:07:44,080 –> 00:07:45,759
و هشتصد ثانیه در
197
00:07:45,759 –> 00:07:47,440
آینده است، اما این یک
198
00:07:47,440 –> 00:07:49,199
عدد نسبتاً مرموز است.
199
00:07:49,199 –> 00:07:51,599
200
00:07:51,599 –> 00:07:53,759
201
00:07:53,759 –> 00:07:55,680
202
00:07:55,680 –> 00:08:00,240
203
00:08:00,240 –> 00:08:02,080
توضیح دهید که این عدد
204
00:08:02,080 –> 00:08:03,919
نشاندهنده تعداد ثانیههای
205
00:08:03,919 –> 00:08:06,479
یک هفته است، اما راهحل بهتر این است که
206
00:08:06,479 –> 00:08:07,039
207
00:08:07,039 –> 00:08:10,400
این عدد جادویی را با یک
208
00:08:10,400 –> 00:08:11,520
عدد ثابت جایگزین کنید
209
00:08: