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