در این مطلب، ویدئو چیس استیونز – کاوش در اکوسیستم پایتون AST با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:02,900
[تشویق حضار]
2
00:00:04,790 –> 00:00:07,200
بسیار متشکرم از شما برای
3
00:00:07,200 –> 00:00:10,230
معرفی فوقالعاده، همانطور که گفتم در
4
00:00:10,230 –> 00:00:12,570
تعقیب استیونز هستم، میخواهم یک لحظه
5
00:00:12,570 –> 00:00:14,519
وقت بگذارم قبل از اینکه واقعاً صحبتم را شروع کنم،
6
00:00:14,519 –> 00:00:17,010
صحبتم را به طور جدی متوقف میکنم تا فقط
7
00:00:17,010 –> 00:00:19,260
اذعان کنم که چقدر افتخار و
8
00:00:19,260 –> 00:00:22,769
امتیاز است. این است که اینجا
9
00:00:22,769 –> 00:00:25,350
باشم و به سخنرانانی مانند خودم که یک استاد واقعی این صنعت هستم گوش کنم،
10
00:00:25,350 –> 00:00:28,380
بنابراین همه شما
11
00:00:28,380 –> 00:00:32,910
باید خیلی خوش شانس
12
00:00:32,910 –> 00:00:35,820
13
00:00:35,820 –> 00:00:38,129
14
00:00:38,129 –> 00:00:40,350
باشید. پلت فرم یادگیری ماشینی
15
00:00:40,350 –> 00:00:42,660
که به فروشندگان آنلاین کمک می کند تا برای
16
00:00:42,660 –> 00:00:44,040
سودآوری در کل تجارت خود بهینه شوند،
17
00:00:44,040 –> 00:00:46,559
ما از ابزارهای بسیار جالب استفاده می کنیم،
18
00:00:46,559 –> 00:00:49,230
بنابراین فرضیه نوت بوک های مشتری تنسورفلو
19
00:00:49,230 –> 00:00:52,680
برای آزمایش این مکان واقعاً
20
00:00:52,680 –> 00:00:55,770
جالبی برای کار است.
21
00:00:55,770 –> 00:00:57,960
22
00:00:57,960 –> 00:01:00,149
23
00:01:00,149 –> 00:01:02,010
سال و این در میان هزاران
24
00:01:02,010 –> 00:01:03,449
فروشنده است که شامل برخی از
25
00:01:03,449 –> 00:01:07,229
محبوبترین برندها میشود، بنابراین
26
00:01:07,229 –> 00:01:09,060
اگر به دنبال مکانی جدید برای کار
27
00:01:09,060 –> 00:01:10,200
هستید و به دنبال مکانی هستید که در آن
28
00:01:10,200 –> 00:01:12,780
یک چالش واقعی دارم، اما همچنین
29
00:01:12,780 –> 00:01:15,360
با افراد باحال کار کنید، سپس به من خطی بزنید خیلی
30
00:01:15,360 –> 00:01:16,740
31
00:01:16,740 –> 00:01:19,799
خوب، همچنین میخواهم بگویم که کل این
32
00:01:19,799 –> 00:01:22,259
سخنرانی در github است، بنابراین اگر میخواهید بعد
33
00:01:22,259 –> 00:01:24,659
از بحث، میتوانید بروید و همه اینها را بررسی کنید
34
00:01:24,659 –> 00:01:26,340
. یک تصویر داکر وجود دارد که میتوانید بسازید،
35
00:01:26,340 –> 00:01:28,560
آنها به شما اجازه میدهند این را اجرا کنید، بنابراین
36
00:01:28,560 –> 00:01:30,500
امیدوارم که آن را بسیار مفید بیابید،
37
00:01:30,500 –> 00:01:33,689
بنابراین این فرضیه بحث در اینجا
38
00:01:33,689 –> 00:01:37,200
اساساً این است که اول از همه
39
00:01:37,200 –> 00:01:38,850
به شما نشان نمیدهم،
40
00:01:38,850 –> 00:01:43,460
قولی میدهم پیچیده تر یا دشوارتر از
41
00:01:43,460 –> 00:01:47,340
تجزیه جیسون یا دستکاری درخت Dom
42
00:01:47,340 –> 00:01:51,149
یا تولید XML درست است، این
43
00:01:51,149 –> 00:01:53,369
چیزهای بسیار ابتدایی است که مردم
44
00:01:53,369 –> 00:01:55,979
در مورد ast که من می بینم بسیار سردرگم می شوند، اما
45
00:01:55,979 –> 00:01:59,549
این ساده است، من ابزارهای زیادی را به شما نشان خواهم داد
46
00:01:59,549 –> 00:02:00,840
که در آنجا وجود دارد.
47
00:02:00,840 –> 00:02:04,649
در حال حاضر بر روی پیپ PI P قابل نصب است که
48
00:02:04,649 –> 00:02:06,869
به شما امکان می دهد از ast برای
49
00:02:06,869 –> 00:02:09,750
دستکاری استاتیک و دستکاری زمان
50
00:02:09,750 –> 00:02:12,140
اجرا استفاده کنید
51
00:02:12,140 –> 00:02:14,900
که بدیهی است بسیار جالب است و
52
00:02:14,900 –> 00:02:17,900
همچنین امیدوارم
53
00:02:17,900 –> 00:02:19,610
اطلاعات کافی را در اختیار شما قرار ندهم که بتوانید
54
00:02:19,610 –> 00:02:21,950
بایستید و شروع کنید. هک کردن در مورد چیزهای ast
55
00:02:21,950 –> 00:02:24,170
اما برای شروع کافی است مانند مکان هایی
56
00:02:24,170 –> 00:02:26,960
برای جستجوی منابع برای رفتن و در واقع
57
00:02:26,960 –> 00:02:29,240
تنها چیزی که در ازای آن می خواهم این است که به
58
00:02:29,240 –> 00:02:32,240
عنوان یک پرومتئوس مدرن مورد احترام قرار
59
00:02:32,240 –> 00:02:33,710
بگیرم، فقط کسی که از المپوس پایین می آید
60
00:02:33,710 –> 00:02:36,440
و دانش را به همه شما می رساند.
61
00:02:36,440 –> 00:02:40,070
ignoramus در مورد آن چیزی است که ast می تواند انجام دهد،
62
00:02:40,070 –> 00:02:41,810
بنابراین این یک quid pro quo بسیار ساده است،
63
00:02:41,810 –> 00:02:44,209
امیدوارم همه ما بتوانیم با این موافق باشیم،
64
00:02:44,209 –> 00:02:50,510
بنابراین بیایید شروع کنیم به عنوان ast که
65
00:02:50,510 –> 00:02:54,650
ast مخفف درخت نحو انتزاعی است، اما به نظر
66
00:02:54,650 –> 00:02:56,209
من این می تواند کمی اشتباه باشد.
67
00:02:56,209 –> 00:02:58,250
واقعاً چیزی که میخواهید در
68
00:02:58,250 –> 00:03:01,130
اینجا به صورت مفهومی درباره آن فکر کنید این است که این روشی است برای
69
00:03:01,130 –> 00:03:04,910
نشان دادن درست در کد پایتون در پایتون
70
00:03:04,910 –> 00:03:07,700
، روشی برای مشاهده
71
00:03:07,700 –> 00:03:11,290
برنامهای بازرسی و دستکاری منبع شما،
72
00:03:11,290 –> 00:03:14,959
بنابراین به عنوان مثال بسیار ساده نوشتن x
73
00:03:14,959 –> 00:03:18,350
برابر با 1 به علاوه 2 است، ما میتوانیم این را بگیریم و
74
00:03:18,350 –> 00:03:21,739
از ساخته شده استفاده کنیم. -در ماژول ast در پایتون
75
00:03:21,739 –> 00:03:24,230
این کد منبع را به عنوان یک رشته تجزیه کنید و چیزی که ما به
76
00:03:24,230 –> 00:03:27,530
دست می آوریم اساساً یک درخت است که
77
00:03:27,530 –> 00:03:30,170
همه چیزهایی را که در آنجا می گذرد کپسوله
78
00:03:30,170 –> 00:03:32,299
می کند و در اینجا می توانید ببینید که ما برگردانده شده ایم
79
00:03:32,299 –> 00:03:36,049
و یک شی ماژول مشخص نیست.
80
00:03:36,049 –> 00:03:38,299
در ابتدا دلیل اینکه
81
00:03:38,299 –> 00:03:39,799
آن یک شی ماژول است این است که
82
00:03:39,799 –> 00:03:42,110
میز مرکزی پشت ماژول ast قرار می گیرد
83
00:03:42,110 –> 00:03:45,110
این است که شما باید مانند
84
00:03:45,110 –> 00:03:47,959
فایل های کد منبع کل فایل
85
00:03:47,959 –> 00:03:51,100
ها را تجزیه کنید و سپس از آنها استفاده کنید
86
00:03:51,100 –> 00:03:54,470
اما ما می توانید کارهای دیگری را برای
87
00:03:54,470 –> 00:03:56,350
بررسی درست انجام دهید، بنابراین یک تابع dump داخلی وجود
88
00:03:56,350 –> 00:03:58,700
دارد که به ما امکان می دهد ببینیم
89
00:03:58,700 –> 00:04:00,950
آن درخت چگونه به نظر می رسد و شما می توانید
90
00:04:00,950 –> 00:04:03,620
در اینجا فراتر از ماژول، بدنه
91
00:04:03,620 –> 00:04:05,450
ای وجود دارد که تخصیصی را دارد که ما به تازگی
92
00:04:05,450 –> 00:04:08,959
انجام داده ایم. تخصیص مجدد به این متغیر
93
00:04:08,959 –> 00:04:11,450
X مقدار تخصیص یک عملیات باینری است
94
00:04:11,450 –> 00:04:14,239
که در آن سمت
95
00:04:14,239 –> 00:04:15,950
چپ عدد 1 است، سمت راست
96
00:04:15,950 –> 00:04:17,988
عدد 2 است و عملیات انجام شده جمع آوری است،
97
00:04:17,988 –> 00:04:20,839
بنابراین امیدوارم
98
00:04:20,839 –> 00:04:24,740
خواندن آن کمی دشوار
99
00:04:24,740 –> 00:04:26,040
باشد.
100
00:04:26,040 –> 00:04:29,490
این ابزاری به نام فروشگاه وجود دارد که در درجه اول
101
00:04:29,490 –> 00:04:32,550
استفاده از آن در یک STS رفت و برگشت است، بنابراین
102
00:04:32,550 –> 00:04:34,470
به شما این امکان را می دهد که از کد منبع
103
00:04:34,470 –> 00:04:37,020
به نمایش ast بروید و سپس به
104
00:04:37,020 –> 00:04:38,880
کد منبع برگردید، اما در اینجا من از آن فقط
105
00:04:38,880 –> 00:04:42,780
برای به دست آوردن یک چاپ کوچک تر استفاده می کنم.
106
00:04:42,780 –> 00:04:45,660
چیزی که ast چیست کمی
107
00:04:45,660 –> 00:04:49,050
خواناتر است و فراتر از
108
00:04:49,050 –> 00:04:51,090
آن ابزاری به نام show ast برای
109
00:04:51,090 –> 00:04:52,830
نوتبوکهای Troopa نیز وجود دارد که به شما تصویری را نشان میدهند که
110
00:04:52,830 –> 00:04:55,290
چیزی گرافیکی بنویسید
111
00:04:55,290 –> 00:04:57,570
که مشابه
112
00:04:57,570 –> 00:04:59,640
دو سلول قبلی است اما کمی سادهتر است.
113
00:04:59,640 –> 00:05:01,110
گاهی اوقات بررسی کنید، اگر می خواهید ببینید
114
00:05:01,110 –> 00:05:06,380
الان چه خبر است، چرا گفتم
115
00:05:06,380 –> 00:05:09,390
ast به عنوان درخت نحو انتزاعی
116
00:05:09,390 –> 00:05:12,330
کمی اشتباه است، احتمالاً فکر می کنم
117
00:05:12,330 –> 00:05:15,210
وقتی مردم کلمه انتزاعی را در این مورد
118
00:05:15,210 –> 00:05:18,780
می شنوند، فکر می کنند آه، احتمالاً مانند مونادها وجود دارد
119
00:05:18,780 –> 00:05:21,870
یا مانند
120
00:05:21,870 –> 00:05:23,580
ارجاعات اریب به ایده آل های افلاطونی یا
121
00:05:23,580 –> 00:05:25,020
چیزی شبیه به من می خواهم انجام دهم که
122
00:05:25,020 –> 00:05:27,600
من نگران این نباشم که مانند
123
00:05:27,600 –> 00:05:30,210
انتزاعی نیست مانند فوق مفهومی،
124
00:05:30,210 –> 00:05:33,390
نحو انتزاعی است، بنابراین منظور من از
125
00:05:33,390 –> 00:05:37,110
آن باز هم عبارت بسیار ساده 1 به اضافه 2
126
00:05:37,110 –> 00:05:39,390
به علاوه 3 شما است. می توانید ببینید که در حالت ast
127
00:05:39,390 –> 00:05:44,000
به صورت 1 به علاوه 2 به علاوه 3 نمایش داده می شود، اما
128
00:05:44,000 –> 00:05:46,980
متوجه خواهید شد که این سلول دوم در
129
00:05:46,980 –> 00:05:49,320
اینجا چند براکت در اطراف 1 به علاوه 2 داریم
130
00:05:49,320 –> 00:05:52,800
و این در ast نشان داده نمی شود، بنابراین
131
00:05:52,800 –> 00:05:54,420
چه چیزی انتزاعی است. ed away دقیقاً
132
00:05:54,420 –> 00:05:56,850
نحوی است که ما نمیتوانیم از
133
00:05:56,850 –> 00:05:59,580
حالت ast برویم و به کد منبع دقیق اصلی برگردیم،
134
00:05:59,580 –> 00:06:01,680
زیرا آن
135
00:06:01,680 –> 00:06:04,500
براکتها اساساً
136
00:06:04,500 –> 00:06:07,080
از این حذف شدهاند و به همین ترتیب، هیچ
137
00:06:07,080 –> 00:06:09,330
نمایشی مانند دو نقطه برای مثال
138
00:06:09,330 –> 00:06:12,750
در ast یا وجود ندارد. فضای خالی فی نفسه درست است،
139
00:06:12,750 –> 00:06:15,750
شما نمی توانید بگویید که من از چند برگه یا فاصله
140
00:06:15,750 –> 00:06:18,920
برای تورفتگی چیزی استفاده می کنم که کلی تر است و
141
00:06:18,920 –> 00:06:21,570
نسخه ای از
142
00:06:21,570 –> 00:06:24,120
نحو کد منبع را دریافت می کند، همچنین متوجه خواهید
143
00:06:24,120 –> 00:06:27,720
شد که همانطور که در اینجا پیش می روم
144
00:06:27,720 –> 00:06:30,660
آنچه ast نمی کند حاوی هر نوع
145
00:06:30,660 –> 00:06:32,850
اطلاعات زمان اجرا است که شامل انواعی
146
00:06:32,850 –> 00:06:35,730
می شود که شامل حاشیه نویسی نوع است
147
00:06:35,730 –> 00:06:37,560
که بخشی از نحو درست است اما
148
00:06:37,560 –> 00:06:40,430
خود تایپ
149
00:06:41,000 –> 00:06:44,310
نیست چرا به طور کلی به ast اهمیت
150
00:06:44,310 –> 00:06:46,770
می دهید چرا می خواهید به
151
00:06:46,770 –> 00:06:48,420
این خوب نگاه کنید اینجا یک مثال خوب است در مورد
152
00:06:48,420 –> 00:06:50,940
اینکه چرا دانستن ast یا نگاه کردن به
153
00:06:50,940 –> 00:06:52,590
ast برای کد منبع مختلف
154
00:06:52,590 –> 00:06:55,830
بسیار مفید است، درست این یک
155
00:06:55,830 –> 00:06:57,300
آیتم درست سال درک لیست برای
156
00:06:57,300 –> 00:06:58,680
گروه بندی گروه ها برای آیتم و گروه اگر
157
00:06:58,680 –> 00:07:02,160
گروه چک این است است. چگونه فکر میکردم
158
00:07:02,160 –> 00:07:03,990
درک فهرست باید اجباری نوشته شود،
159
00:07:03,990 –> 00:07:06,810
درست است که در اینجا چیزی است که من
160
00:07:06,810 –> 00:07:09,540
میخواهم به اینجا برگردم همه چهار دست و پام اینجا
161
00:07:09,540 –> 00:07:13,620
همه شرایط من است، اما اگر
162
00:07:13,620 –> 00:07:17,010
به ast نگاه کنید متوجه میشوید که درک فهرست است،
163
00:07:17,010 –> 00:07:19,470
درست است که ما چه هستیم
164
00:07:19,470 –> 00:07:22,290
بازگشت این عبارت موردی است و ما
165
00:07:22,290 –> 00:07:23,580
لیستی از مولدها داریم که
166
00:07:23,580 –> 00:07:26,340
اینها درک هستند و هر یک از
167
00:07:26,340 –> 00:07:29,330
این درکها فهرستی از اگرها دارند،
168
00:07:29,330 –> 00:07:32,640
بنابراین در واقع به این معنی است که من میتوانم این کار را
169
00:07:32,640 –> 00:07:34,950
به جای درست انجام دهم، میتوانم F
170
00:07:34,950 –> 00:07:38,070
مستقیماً به دنبال چهار باشد و این
171
00:07:38,070 –> 00:07:39,630
چیزی است نمیدانستم قبل از اینکه به این موضوع
172
00:07:39,630 –> 00:07:42,240
نگاه کنم که نشاندهنده
173
00:07:42,240 –> 00:07:45,390
درک این فهرست چیست و این
174
00:07:45,390 –> 00:07:47,250
به این معنی است که من فقط آن
175
00:07:47,250 –> 00:07:49,620
تماس چک را برای هر گروه اجرا میکنم و نه برای
176
00:07:49,620 –> 00:07:51,810
هر گروه و هر مورد در گروه
177
00:07:51,810 –> 00:07:53,670
درست است. بنابراین کمی
178
00:07:53,670 –> 00:07:55,800
کارآیی بیشتری خواهید داشت، همچنین میتوانید چندین
179
00:07:55,800 –> 00:07:57,300
دستور if داشته باشید تا مجبور نباشید
180
00:07:57,300 –> 00:07:58,710
آنها را با دستوری به هم بپیوندید که میتواند از نظر
181
00:07:58,710 –> 00:08:00,600
نحوی کمی آشفته شود، بنابراین چیزهایی وجود دارد
182
00:08:00,600 –> 00:08:02,070
که میتوانید در مورد نحوه عملکرد پایتون یاد بگیرید.
183
00:08:02,070 –> 00:08:05,370
با نگاه کردن به نحوه
184
00:08:05,370 –> 00:08:10,200
نمایش نحو، اما
185
00:08:10,200 –> 00:08:12,560
این قطعه واقعی مقاومت است، درست
186
00:08:12,560 –> 00:08:15,720
اینجاست که من قصد دارم مقداری
187
00:08:15,720 –> 00:08:19,560
کد منبع را بگیرم تا به عنوان این متغیر تجزیه تجزیه شود
188
00:08:19,560 –> 00:08:21,570
و سپس از
189
00:08:21,570 –> 00:08:24,630
کامپایل توابع داخلی و آنچه به دست میآورم استفاده کنم. بازگشت
190
00:08:24,630 –> 00:08:28,200
این شی کد است که شی کد چیست
191
00:08:28,200 –> 00:08:31,020
اساساً ما آن منبع را گرفته ایم و
192
00:08:31,020 –> 00:08:33,510
آن را تفسیر کرده ایم و اکنون مقداری
193
00:08:33,510 –> 00:08:36,240
کد بایتی درست داریم، بنابراین این مانند ASTM
194
00:08:36,240 –> 00:08:37,470
نیست همچنین فقط چیزی نیست که
195
00:08:37,470 –> 00:08:40,320
شخصی در پایتون در لارک قرار دهد. عمیقاً
196
00:08:40,320 –> 00:08:43,049
در سیستم تعبیه شده است، این
197
00:08:43,049 –> 00:08:45,900
بسیار بسیار قدرتمند است زیرا کاری که ما
198
00:08:45,900 –> 00:08:48,630
میتوانیم با آن شی کد انجام دهیم این است که میتوانیم
199
00:08:48,630 –> 00:08:52,110
یک محیط ایجاد کنیم که کد را
200
00:08:52,110 –> 00:08:54,240
در آن محیط اجرا کند و سپس چیزها
201
00:08:54,240 –> 00:08:56,579
را به درستی از محیط بیرون بکشیم، بنابراین همانطور که
202
00:08:56,579 –> 00:08:59,430
گفتم در اینجا این را داریم. کدی که
203
00:08:59,430 –> 00:09:01,740
اساساً یک را به X و 2 را به Y اختصاص میدهد
204
00:09:01,740 –> 00:09:03,899
و ما میتوانیم از
205
00:09:03,899 –> 00:09:07,320
محیطی که در x و y پاس دادهام بیرون بکشیم و البته اگر
206
00:09:07,320 –> 00:09:10,170
میخواستم میتوانستم با قرار دادن
207
00:09:10,170 –> 00:09:11,579
چیزهایی در آن محیط برای آن
208
00:09:11,579 –> 00:09:15,000
کد برای ac شروع کنم. بنابراین دوباره فوق العاده
209
00:09:15,000 –> 00:09:17,160
یکپارچه شده است یک سوال ممکن است این
210
00:09:17,160 –> 00:09:20,190
نکته را داشته باشد اگر من برنامه ای را اجرا می کنم
211
00:09:20,190 –> 00:09:22,470
و می خواهم به شما دسترسی داشته باشم
212
00:09:22,470 –> 00:09:23,610
برخی از عملکردهایی که من اجرا
213
00:09:23,610 –> 00:09:26,640
می کنم را می دانید چگونه می توانم آن روش را انجام دهم.
214
00:09:26,640 –> 00:09:29,220
ماژول را بازرسی کنید، بنابراین inspect یک
215
00:09:29,220 –> 00:09:32,279
متد منبع git تعریف شده است
216
00:09:32,279 –> 00:09:35,130
که منبع بسیاری از
217
00:09:35,130 –> 00:09:37,050
اشیاء پایتون را در حال حاضر به شما باز میگرداند، نه همه آنها درست، بنابراین
218
00:09:37,050 –> 00:09:39,779
اگر
219
00:09:39,779 –> 00:09:43,140
میخواهید مانند عبارات لامبدا دسترسی داشته باشید
220
00:09:43,140 –> 00:09:45,540
یا اگر میخواهید به مانند آن دسترسی داشته باشید، قطعاً توابع و کلاسها را در اختیار خواهید داشت. ژنراتورها
221
00:09:45,540 –> 00:09:47,730
کمی دشوارتر است شما
222
00:09:47,730 –> 00:09:49,980
باید از چیزی به نام کامپایلر D استفاده کنید
223
00:09:49,980 –> 00:09:52,380
که اساساً بایت کد را
224
00:09:52,380 –> 00:09:54,690
بررسی می کند و به نوعی
225
00:09:54,690 –> 00:09:57,240
مهندسی معکوس می کند اما برای اکثر
226
00:09:57,240 –> 00:09:59,100
برنامه ها منابع را بررسی کنید
227
00:09:59,100 –> 00:10:01,199
آنچه را که می خواهید در حال حاضر دریافت کنید.
228
00:10:01,199 –> 00:10:02,430
آنها منبع تابعی را دارند که من در
229
00:10:02,430 –> 00:10:04,380
بالا اعلام کردم.
230
00:10:04,380 –> 00:10:08,010
231
00:10:08,010 –> 00:10:10,589
232
00:10:10,589 –> 00:10:14,370
233
00:10:14,370 –> 00:10:16,199
برای این که در
234
00:10:16,199 –> 00:10:19,500
تجزیه و تحلیل ایستا مشخص شود
235
00:10:19,500 –> 00:10:24,089
تجزیه و تحلیل استاتیک چیست، خوب
236
00:10:24,089 –> 00:10:26,910
مثال متقابل یک پروفایلر را در نظر بگیرید، بنابراین یک
237
00:10:26,910 –> 00:10:30,060
پروفایلر باید به طور ذاتی کد را اجرا کنید
238
00:10:30,060 –> 00:10:32,850
تا درست پروفایل کنید،
239
00:10:32,850 –> 00:10:34,829
می خواهید ببینید چه چیزی سریع
240
00:10:34,829 –> 00:10:37,589
اجرا می شود چه چیزی آهسته اجرا می شود. چه چیزی و
241
00:10:37,589 –> 00:10:39,060
این کاری است که فقط در صورتی می توانید انجام دهید که
242
00:10:39,060 –> 00:10:40,740
واقعاً تجزیه و تحلیل استاتیک کد را اجرا کنید
243
00:10:40,740 –> 00:10:42,810
، زمانی است که در حال انجام یک
244
00:10:42,810 –> 00:10:44,760
تحلیل بدون اجرای صحیح کدی هستید،
245
00:10:44,760 –> 00:10:47,820
بنابراین مثال بسیار پیش پا افتاده ای
246
00:10:47,820 –> 00:10:49,410
مانند شمارش خطوط کد خواهد بود،
247
00:10:49,410 –> 00:10:53,240
آیا نمونه دیگری از این نوع دارید.
248
00:10:53,240 –> 00:10:56,100
در اینجا مشخص میکند که اگر
249
00:10:56,100 –> 00:10:58,410
برنامهای داشته باشید که
250
00:10:58,410 –> 00:11:00,569
نحو همه کدهای موجود در پایه کد شما را
251
00:11:00,569 –> 00:11:03,690
دقیقاً بررسی میکند، در این صورت،
252
00:11:03,690 –> 00:11:04,540
کد را به
253
00:11:04,540 –> 00:11:06,550
درستی تجزیه میکنید که دریافت میکنید، به
254
00:11:06,550 –> 00:11:08,560
درختهای نحو انتزاعی تبدیل
255
00:11:08,560 –> 00:11:09,970
میشوید، اما شما شما آن را به درستی اجرا نمی
256
00:11:09,970 –> 00:11:11,020
کنید، تفاوت بین
257
00:11:11,020 –> 00:11:13,000
نمایش کد و
258
00:11:13,000 –> 00:11:17,980
خود کد در حال اجرا واقعی وجود دارد، بنابراین چگونه می
259
00:11:17,980 –> 00:11:20,350
توانیم از ماژول ast برای انجام این کار به
260
00:11:20,350 –> 00:11:23,250
خوبی استفاده کنیم. برنامه بسیار ساده و ساده
261
00:11:23,250 –> 00:11:25,840
حدس میزنم، اما اساساً من
262
00:11:25,840 –> 00:11:28,090
به این سه متغیر B
263
00:11:28,090 –> 00:11:32,020
و C اختصاص داده شدهام و اگر این فایل را بخوانیم و
264
00:11:32,020 –> 00:11:34,000
آن را در آن بارگذاری کنیم، یک ast است، میتوانید
265
00:11:34,000 –> 00:11:36,750
اینجا را ببینید که من سه گره انتساب من را دارم،
266
00:11:36,750 –> 00:11:39,880
نباید چیزی باشد. تعجب آور است
267
00:11:39,880 –> 00:11:43,420
اما در پایتون این کلاس بازدیدکننده گره ast داریم
268
00:11:43,420 –> 00:11:46,300
که می توانم آن را زیر کلاس قرار دهم و
269
00:11:46,300 –> 00:11:48,010
اساساً کاری که به شما اجازه می دهد انجام دهید این است
270
00:11:48,010 –> 00:11:50,800
که روش هایی را که همگی
271
00:11:50,800 –> 00:11:53,290
فرمت هایی مانند زیرخط بازدید از نام گره را دریافت می کنند
272
00:11:53,290 –> 00:11:55,990
و زمانی که این کلاس جدید را نمونه سازی می کنم
273
00:11:55,990 –> 00:11:59,860
و سپس dot visit را فراخوانی می کنند، لغو کنید. در یک
274
00:11:59,860 –> 00:12:01,540
ast اساساً آن درخت را طی می کند
275
00:12:01,540 –> 00:12:03,460
و سپس هر بار که به یک
276
00:12:03,460 –> 00:12:05,800
گره اختصاص داده شده می رسد، در این مورد
277
00:12:05,800 –> 00:12:08,230
کدی را که من داده ام فراخوانی می کند، بنابراین در این مورد
278
00:12:08,230 –> 00:12:10,450
کاری که من انجام می دهم این است که به هر هدفی نگاه می کنم.
279
00:12:10,450 –> 00:12:12,100
تخصیص به دلیل اینکه
280
00:12:12,100 –> 00:12:13,960
تکالیف چندین هدف دارند درست
281
00:12:13,960 –> 00:12:16,060
می توانید x برابر y برابر یک یا
282
00:12:16,060 –> 00:12:18,580
چیزی شبیه به آن داشته باشید و بررسی کنید
283
00:12:18,580 –> 00:12:20,740
که آیا یک گره نامگذاری شده است به جای
284
00:12:20,740 –> 00:12:24,400
تخصیص به یک عنصر از یک لیست یا
285
00:12:24,400 –> 00:12:26,800
کلید در فرهنگ لغت و مانند آن و اگر
286
00:12:26,800 –> 00:12:28,570
چنین است، پس فقط آن را چاپ کنید و می
287
00:12:28,570 –> 00:12:30,190
توانید اینجا را ببینید که وقتی این را اجرا می کنم
288
00:12:30,190 –> 00:12:33,850
، ABC را چاپ می
289
00:12:33,850 –> 00:12:35,740
کند، برنامه های کاربردی قانونی جدی برای
290
00:12:35,740 –> 00:12:37,030
چیزی به همین سادگی وجود دارد، مثلاً اگر
291
00:12:37,030 –> 00:12:39,490
کسی با Alembic آشنا باشد، یک
292
00:12:39,490 –> 00:12:41,170
سیستم مهاجرت برای پایگاه های داده است، اما
293
00:12:41,170 –> 00:12:43,990
اساساً به آن نیاز دارد. شما باید در سطح ماژول اعلام کنید،
294
00:12:43,990 –> 00:12:47,110
من معتقدم که این همان چیزی است که
295
00:12:47,110 –> 00:12:50,200
هش یا شماره این ویرایشها است و این
296
00:12:50,200 –> 00:12:51,340
نسخه قبلی است که بر
297
00:12:51,340 –> 00:12:53,650
اساس درستی انجام شده است، بنابراین میتوانید چیزی
298
00:12:53,650 –> 00:12:55,450
شبیه به این را در تمام مهاجرتهای خود انجام دهید
299
00:12:55,450 –> 00:12:57,910
و سپس مانند یک نمودار ایجاد کنید
300
00:12:57,910 –> 00:13:00,040
تا اطمینان حاصل کنید. که هیچ چرخه ای در آنها وجود ندارد
301
00:13:00,040 –> 00:13:01,660
یا چیزی شبیه به آن در حال حاضر وجود دارد،
302
00:13:01,660 –> 00:13:02,770
303
00:13:02,770 –> 00:13:04,690
حتی با این
304
00:13:04,690 –> 00:13:07,600
کارکردهای داخلی بسیار کم، بسیاری از کارهایی
305
00:13:07,600 –> 00:13:09,880
که می توانید انجام دهید جالب هستند، اما
306
00:13:09,880 –> 00:13:12,280
علاوه بر آن می توانید
307
00:13:12,280 –> 00:13:13,630
کارهای جالب تری را به درستی انجام دهید، بنابراین این یک ابزاری
308
00:13:13,630 –> 00:13:15,970
به نام جستجوی ast و اگر در این مرحله
309
00:13:15,970 –> 00:13:18,070
از صحبت به این فکر میکنید که ای کاش من اینجا
310
00:13:18,070 –> 00:13:18,400
بودم،
311
00:13:18,400 –> 00:13:20,740
این ابزار برای شماست
312
00:13:20,740 –> 00:13:24,850
زیرا اساساً جستجوی AST از
313
00:13:24,850 –> 00:13:27,990
robus استفاده میکند. قدرت و قدرت AST،
314
00:13:27,990 –> 00:13:30,820
اما انتزاع راهی برای شما همه
315
00:13:30,820 –> 00:13:33,970
نوع پیچیدگی درونی برای
316
00:13:33,970 –> 00:13:36,220
یادگیری در مورد AST درست است، بنابراین می توانید
317
00:13:36,220 –> 00:13:37,660
در اینجا ببینید که من از این به عنوان یک ابزار خط فرمان
318
00:13:37,660 –> 00:13:38,380
استفاده
319
00:13:38,380 –> 00:13:41,440
می کنم و اساساً جستجوی ast را انجام می دهم. و
320
00:13:41,440 –> 00:13:44,260
گفتن علامت سوال برابر با یک است تا
321
00:13:44,260 –> 00:13:46,780
بگوییم برخی از حروف عام برابر است با یک و
322
00:13:46,780 –> 00:13:49,210
جستجو برای آن نوع الگو در
323
00:13:49,210 –> 00:13:52,000
این مخزن پروتوباف درست است و آنچه را که من برمیگردانم
324
00:13:52,000 –> 00:13:54,340
میتوانید ببینید که من چیزهایی دارم
325
00:13:54,340 –> 00:13:56,740
که در آنها به یک ویژگی از
326
00:13:56,740 –> 00:13:58,330
یک شی من نسبت میدهیم. بعضی چیزها را دارم که من
327
00:13:58,330 –> 00:14:01,090
فقط به یک نام در ast
328
00:14:01,090 –> 00:14:02,890
در نمایش داخلی اختصاص داده شده ام، این دو
329
00:14:02,890 –> 00:14:05,530
چیز بسیار متفاوت هستند، اما جستجوی AST
330
00:14:05,530 –> 00:14:06,790
به شما اجازه می دهد نگران آن نباشید
331
00:14:06,790 –> 00:14:08,710
و فقط این نوع
332
00:14:08,710 –> 00:14:10,230
تطبیق الگوی بسیار ساده را انجام دهید. عالی است،
333
00:14:10,230 –> 00:14:14,020
اما بدیهی است که چیزهای بسیار بیشتری
334
00:14:14,020 –> 00:14:16,120
وجود دارد که می توانید با ast از آن استفاده کنید، بنابراین
335
00:14:16,120 –> 00:14:18,160
ابزار دیگری به نام
336
00:14:18,160 –> 00:14:20,800
مسیر ast است و این کمی پیچیده تر است،
337
00:14:20,800 –> 00:14:22,150
شما باید بدانید
338
00:14:22,150 –> 00:14:24,070
که از نظر ظاهری ast چه کاری انجام می دهید.
339
00:14:24,070 –> 00:14:25,780
فلش تطابق بر روی، اما
340
00:14:25,780 –> 00:14:27,850
اساساً کاری که این کار انجام می دهد این است که به
341
00:14:27,850 –> 00:14:31,330
شما امکان می دهد یک عبارت XPath را ارائه کنید و با
342
00:14:31,330 –> 00:14:34,230
انجام آن می توانید
343
00:14:34,230 –> 00:14:37,180
ویژگی های واقعا جالب کد خود را بگیرید
344
00:14:37,180 –> 00:14:38,680
و آنها را از طریق پایه کد خود به
345
00:14:38,680 –> 00:14:40,960
درستی جستجو کنید، بنابراین این کاری است که
346
00:14:40,960 –> 00:14:42,850
نمی توانید انجام دهید.
347
00:14:42,850 –> 00:14:45,510
به عنوان مثال، من به دنبال اعدادی هستم
348
00:14:45,510 –> 00:14:49,120
که ارزش اعداد در آنها بزرگتر از
349
00:14:49,120 –> 00:14:51,940
100 باشد، و به دلیل اینکه به عنوان ast
350
00:14:51,940 –> 00:14:53,920
که اعداد صحیح را کنترل می
351
00:14:53,920 –> 00:14:55,210
کند، شناورها را کنترل می کند، برای این مهم نیست که
352
00:14:55,210 –> 00:14:57,670
در اعداد زیرخط وجود داشته باشد یا خیر.
353
00:14:57,670 –> 00:14:58,960
فرقی نمیکند کجا هستید، آیا
354
00:14:58,960 –> 00:15:00,580
از نماد علمی استفاده میکنید یا نه
355
00:15:00,580 –> 00:15:04,210
، همه چیز برای شما مدیریت میشود و من میخواهم
356
00:15:04,210 –> 00:15:06,160
آنها را فقط در صورتی پیدا کنم که به چیزی درست اختصاص داده نشده باشند،
357
00:15:06,160 –> 00:15:10,090
این نوعی
358
00:15:10,090 –> 00:15:11,890
ویژگی ساختاری عمیقتر کد است.
359
00:15:11,890 –> 00:15:15,430
اگر به ast دسترسی نداشته باشید، گرفتن آن دشوار است،
360
00:15:15,430 –> 00:15:17,380
اما
361
00:15:17,380 –> 00:15:19,510
با دسترسی به ast، گرفتن درست تقریباً بی اهمیت است
362
00:15:19,510 –> 00:15:23,470
و حتی می توانید کارهایی مانند این را انجام دهید
363
00:15:23,470 –> 00:15:25,360
که نه فقط می دانید گرفتن
364
00:15:25,360 –> 00:15:27,580
یک خط را بلد نیستید، بلکه اینجا هستم برای
365
00:15:27,580 –> 00:15:29,980
تمام تعاریف تابعی که
366
00:15:29,980 –> 00:15:31,780
حداقل یک دکوراتور دارند و دارای یک
367
00:15:31,780 –> 00:15:34,030
حلقه for در بدنه هستند، قوس میکنم، بنابراین میتوانم
368
00:15:34,030 –> 00:15:36,760
369
00:15:36,760 –> 00:15:40,000
ویژگیهای ساختاری واقعا عمیق کدم را ثبت کنم که
370
00:15:40,000 –> 00:15:41,440
گرفتن آنها به روش دیگری بسیار بسیار دشوار است، اگر نه غیرممکن است،
371
00:15:41,440 –> 00:15:44,040
372
00:15:44,040 –> 00:15:51,370
بنابراین pep 5/ 7 برای استراحت در آرامش مردم Guido
373
00:15:51,370 –> 00:15:53,650
از این آگاه نیستند اساساً آنچه
374
00:15:53,650 –> 00:15:55,600
به شما اجازه می دهد انجام دهید مخالف است با گفتن
375
00:15:55,600 –> 00:15:57,730
مطابقت برابر است با داده های جستجوی نقطه پرین و
376
00:15:57,730 –> 00:15:59,110
سپس از match در این بیانیه استفاده کنید اگر
377
00:15:59,110 –> 00:16:01,210
بعداً می توانید از این
378
00:16:01,210 –> 00:16:04,090
دستور عبارت تخصیص برای اساساً اختصاص داده شده استفاده کنید.
379
00:16:04,090 –> 00:16:07,090
برای مطابقت با دستور if
380
00:16:07,090 –> 00:16:08,350
شما، تعداد زیادی مورد استفاده دیگر وجود دارد، اما این
381
00:16:08,350 –> 00:16:11,340
یکی از موارد اولیه است که تبلیغ می شود،
382
00:16:11,340 –> 00:16:13,930
بدیهی است که من نظر محکمی
383
00:16:13,930 –> 00:16:16,600
در این مورد ندارم، بیشتر به این دلیل که
384
00:16:16,600 –> 00:16:18,310
علاقه شدیدی دارم بعداً
385
00:16:18,310 –> 00:16:22,960
به پشت ماشین پرتاب می شود اما اگر می
386
00:16:22,960 –> 00:16:24,520
خواهید به خوبی ببینید کجا می توانم این را
387
00:16:24,520 –> 00:16:28,690
در پایه کد خود اعمال کنم، می توانید از مسیر AST استفاده کنید،
388
00:16:28,690 –> 00:16:30,280
می توانید بگویید خوب است من می خواهم همه تکالیفی را پیدا کنم
389
00:16:30,280 –> 00:16:33,850
که نام آنها
390
00:16:33,850 –> 00:16:37,180
مانند موارد زیر است. عبارات g در
391
00:16:37,180 –> 00:16:40,660
صورتی که در تست از دستور if استفاده می شود
392
00:16:40,660 –> 00:16:42,790
برای آن عبارت if درست است، پس چند تا از
393
00:16:42,790 –> 00:16:46,260
این خطوط به دلیل رعایت نکردن
394
00:16:46,260 –> 00:16:48,370
فضای خالی یا هر چیزی شبیه به آن، چند مورد
395
00:16:48,370 –> 00:16:49,990
از آنها خط دوم خالی است، اما شما
396
00:16:49,990 –> 00:16:52,480
می توانید اینجا را برای مثال اینجا ببینید.
397
00:16:52,480 –> 00:16:55,089
این فراخوانی را انجام دهید که ما به آن Bo می گوییم که به آن اختصاص
398
00:16:55,089 –> 00:16:57,370
داده شود و سپس اگر سنگفرش هیچ کدام نیست، این
399
00:16:57,370 –> 00:16:58,900
کاندیدای جایگزینی با
400
00:16:58,900 –> 00:17:03,640
عبارات انتساب جدید است، اکنون می دانم که برخی
401
00:17:03,640 –> 00:17:06,970
از شما به این فکر می کنید که
402
00:17:06,970 –> 00:17:10,390
من می خواهم برگردم، از ابزار مسیر ast استفاده خواهم کرد.
403
00:17:10,390 –> 00:17:13,750
و من شروع به ایجاد این
404
00:17:13,750 –> 00:17:17,410
نوع روش برنامهریزی برای گرفتن چیزهایی
405
00:17:17,410 –> 00:17:19,510
میکنم که دوست ندارم در پایگاه
406
00:17:19,510 –> 00:17:21,220
407
00:17:21,220 –> 00:17:24,339
کدم.
408
00:17:24,339 –> 00:17:25,900
409
00:17:25,900 –> 00:17:28,209
دوباره و شما فقط می خواهید
410
00:17:28,209 –> 00:17:29,590
نوعی ابزار داشته باشید که بتوانید آن را اجرا کنید که
411
00:17:29,590 –> 00:17:31,300
همه چیزهایی را که دوست
412
00:17:31,300 –> 00:17:32,010
413
00:17:32,010 –> 00:17:36,550
ندارید می گیرد نگران نباش فام من شما را تحت پوشش قرار دادم بیایید
414
00:17:36,550 –> 00:17:39,670
بگوییم که این پایگاه کد
415
00:17:39,670 –> 00:17:43,990
من است که عملکرد بسیار کوچکی دارد. من علاقه
416
00:17:43,990 –> 00:17:45,250
مند به اینجا است این فراخوانی
417
00:17:45,250 –> 00:17:47,680
برای عملکرد بچه من به تازگی
418
00:17:47,680 –> 00:17:50,710
در روابط عمومی خود یک عملکرد جدید فوق العاده جذاب نوشتم که
419
00:17:50,710 –> 00:17:53,410
قرار است جایگزین آن شود، اما مشخص
420
00:17:53,410 –> 00:17:55,450
شد که سه هزار استفاده از
421
00:17:55,450 –> 00:17:56,920
عملکرد منسوخ شده وجود دارد، من واقعاً نمی خواهم
422
00:17:56,920 –> 00:17:58,750
این کار را انجام دهم همه روابط عمومی و برخی موارد
423
00:17:58,750 –> 00:18:02,740
خنثی کردن آنها کمی دشوار است و می
424
00:18:02,740 –> 00:18:04,570
خواهم آن را برای شخص
425
00:18:04,570 –> 00:18:07,930
دیگری بگذاریم تا بتوانم از این ابزار به نام
426
00:18:07,930 –> 00:18:09,340
ناف راست استفاده کنم و این اساساً
427
00:18:09,340 –> 00:18:13,630
یک بسته بندی در اطراف مسیر AST است، اما من می توانم
428
00:18:13,630 –> 00:18:16,870
قوانین مختلفی را تعریف کنم، بنابراین در این مورد
429
00:18:16,870 –> 00:18:19,090
منسوخ شده است. قانون فراخوانی تابع توضیحی به آن میدهم
430
00:18:19,090 –> 00:18:20,170
که اگر در پایگاه کد من مشاهده شود،
431
00:18:20,170 –> 00:18:21,910
اساساً پیام خطا خواهد بود،
432
00:18:21,910 –> 00:18:24,670
به آن عبارتی میدهم
433
00:18:24,670 –> 00:18:27,160
که اساساً
434
00:18:27,160 –> 00:18:28,810
عبارت XPath است که میخواهم در
435
00:18:28,810 –> 00:18:31,060
برابر ast همه ماژولهای موجود در
436
00:18:31,060 –> 00:18:33,910
پایگاه کدم اجرا کنم. و من می توانم مثالی
437
00:18:33,910 –> 00:18:36,040
از این که به نظر می رسد چه چیزی را نباید انجام داد و
438
00:18:36,040 –> 00:18:38,230
چیزی برای انجام دادن به جای آن ارائه کنم که هر دو
439
00:18:38,230 –> 00:18:39,820
در برابر آن عبارت معتبر هستند، بنابراین
440
00:18:39,820 –> 00:18:41,920
وقتی این ابزار را اجرا می کنید می توانید مطمئن باشید
441
00:18:41,920 –> 00:18:44,470
که مثال در مثال counter و
442
00:18:44,470 –> 00:18:46,270
شما در واقع به چیزی
443
00:18:46,270 –> 00:18:48,910
که به دنبالش هستید پایبند باشید و سپس
444
00:18:48,910 –> 00:18:50,860
مواردی در مورد اینکه کجا میخواهم
445
00:18:50,860 –> 00:18:53,680
این را اجرا کنم که خیلی مهم نیست اما
446
00:18:53,680 –> 00:18:57,100
اساساً میتوانم آن را بگیرم و آن را
447
00:18:57,100 –> 00:18:59,530
در پایگاه کدم اجرا کنم و همانطور که میتوانید ببینید
448
00:18:59,530 –> 00:19:01,990
اینجا به من برمیگرده، اوه این پردهبندی
449
00:19:01,990 –> 00:19:03,580
ناموفق است، زیرا من از این تابع منسوخ شده
450
00:19:03,580 –> 00:19:07,510
در این کد خاص pi استفاده میکنم و
451
00:19:07,510 –> 00:19:09,700
بدیهی است که این فقط
452
00:19:09,700 –> 00:19:10,960
نوک کوه یخ است.
453
00:19:10,960 –> 00:19:12,970
454
00:19:12,970 –> 00:19:15,610
مواردی مانند فرض کنید
455
00:19:15,610 –> 00:19:17,530
من یک enum با مقادیر مختلف
456
00:19:17,530 –> 00:19:20,950
دارم و میخواهم مطمئن شوم که اگر
457
00:19:20,950 –> 00:19:23,080
با یکی از این
458
00:19:23,080 –> 00:19:24,670
مقادیر کار میکنم، همه موارد دیگر
459
00:19:24,670 –> 00:19:26,080
به درستی مدیریت میشوند، میتوانم عبارتی بنویسم
460
00:19:26,080 –> 00:19:28,450
که بگوید اگر من یک
461
00:19:28,450 –> 00:19:30,310
دستور if دارم که در آن یکی
462
00:19:30,310 –> 00:19:33,010
از مقادیر را بررسی می کنم که
463
00:19:33,010 –> 00:19:35,320
موظفم برای هر یک از مقادیر دیگر اگرهای دیگری داشته باشم،
464
00:19:35,320 –> 00:19:36,760
این چیزی است که می توانید
465
00:19:36,760 –> 00:19:39,490
نسبتاً آسان با یک
466
00:19:39,490 –> 00:19:41,560
عبارت مسیر AST و سپس به طور ناگهانی پیاده سازی کنید.
467
00:19:41,560 –> 00:19:43,830
شما دریافت می کنید استفاده از برخی از آن
468
00:19:43,830 –> 00:19:47,580
زمان کامپایل واقعاً جالب تقریباً تضمین می کند که
469
00:19:47,580 –> 00:19:49,990
زبان های فوق العاده کاربردی مانند Haskell
470
00:19:49,990 –> 00:19:53,110
و Scala به شما کمک می کنند، اما مختص
471
00:19:53,110 –> 00:19:56,890
پروژه شما در پایتون
472
00:19:56,890 –> 00:19:58,750
فقط یک فاصله کوتاه کوتاه است، بنابراین
473
00:19:58,750 –> 00:20:00,160
اینها برخی از ابزارهایی هستند که من تاکنون در مورد آنها صحبت
474
00:20:00,160 –> 00:20:02,800
کرده ام. به آنها اشاره نکردم، اما
475
00:20:02,800 –> 00:20:04,510
باید به آنها نگاه کنید
476
00:20:04,510 –> 00:20:07,330
که یکی از آنها مارهای درختی سبز نامیده می شود،
477
00:20:07,330 –> 00:20:10,360
بنابراین اساساً این شبیه به
478
00:20:10,360 –> 00:20:13,480
مرد گم شده در پایتون ast است، اما
479
00:20:13,480 –> 00:20:15,820
خواندنی جذاب است و من
480
00:20:15,820 –> 00:20:17,170
آن را به شدت توصیه می
481
00:20:17,170 –> 00:20:19,150
کنم مارهای دیگر. Python ast Explorer است
482
00:20:19,150 –> 00:20:21,130
که اساساً چیزی که این ابزار به شما امکان می دهد انجام دهید این است
483
00:20:21,130 –> 00:20:23,140
که یک ابزار آنلاین است که در برخی از
484
00:20:23,140 –> 00:20:25,180
کدها در سمت چپ این صفحه قرار می دهید
485
00:20:25,180 –> 00:20:26,920
و در سمت راست
486
00:20:26,920 –> 00:20:31,060
مانند این نمای تاشو درخت را به شما ارائه می دهد
487
00:20:31,060 –> 00:20:32,680
که اساساً کد به صورت زیر خواهد بود.
488
00:20:32,680 –> 00:20:35,290
به عنوان مثال در ast نشان داده شده است،
489
00:20:35,290 –> 00:20:36,520
بسیار مفید است، مخصوصاً اگر
490
00:20:36,520 –> 00:20:37,900
میخواهید بروید و مانند عبارات مسیر ast بنویسید
491
00:20:37,900 –> 00:20:41,950
492
00:20:41,950 –> 00:20:44,710
، دلیل این است که این در github است، شما
493
00:20:44,710 –> 00:20:46,900
میتوانید به این موارد نگاهی بیندازید.
494
00:20:46,900 –> 00:20:48,580
چند ستاره به آنها بدهید، نمی دانم، می
495
00:20:48,580 –> 00:20:50,650
دانم که این کمی یک معیار بیهودگی است،
496
00:20:50,650 –> 00:20:53,110
اما در نظر بگیرید که در
497
00:20:53,110 –> 00:20:56,190
تکینگی پسا آخرالزمانی ما، ستاره های دریافتی آینده با
498
00:20:56,190 –> 00:20:58,360
نام q1
499
00:20:58,360 –> 00:21:00,640
2019 برای تعیین
500
00:21:00,640 –> 00:21:02,440
اینکه آیا باید یا نه در معادن سیلیکون کار کنید،
501
00:21:02,440 –> 00:21:06,970
بنابراین سخاوتمندانه بدهید،
502
00:21:06,970 –> 00:21:08,140
بنابراین اکنون ما کمی جابه جا می
503
00:21:08,140 –> 00:21:10,060
شویم قبل از اینکه فقط به
504
00:21:10,060 –> 00:21:12,130
ساختار اینجا نگاه کنیم، آیا می توانیم
505
00:21:12,130 –> 00:21:14,050
در مورد این ساختار پرس و جو کنیم اکنون
506
00:21:14,050 –> 00:21:16,450
می خواهیم به بررسی کنیم AST زیربنایی
507
00:21:16,450 –> 00:21:19,780
دستکاری روی آن انجام می دهد،
508
00:21:19,780 –> 00:21:23,380
تغییراتی در آن ایجاد می کند و سپس آن کد را اجرا می کند، بنابراین
509
00:21:23,380 –> 00:21:24,940
این جایی است که بسیاری از مردم خیلی
510
00:21:24,940 –> 00:21:26,830
ناراحت می شوند و
511
00:21:26,830 –> 00:21:31,510
دلیل خوبی وجود دارد که اساساً دو شکل از
512
00:21:31,510 –> 00:21:34,300
دستکاری ast وجود دارد که من آنها را ثابت می نامم.
513
00:21:34,300 –> 00:21:37,360
و دستکاری پویا استاتیک ast
514
00:21:37,360 –> 00:21:41,320
اساساً به این صورت است که شما مقداری پایه کد
515
00:21:41,320 –> 00:21:43,330
دارید، برنامهای دارید که
516
00:21:43,330 –> 00:21:45,490
روی آن پایه کد اجرا میشود و آن برنامه
517
00:21:45,490 –> 00:21:47,890
هر کدام را میخواند که فایلها
518
00:21:47,890 –> 00:21:50,260
دستکاریهایی روی آن انجام میدهند و سپس آن را
519
00:21:50,260 –> 00:21:52,330
دوباره به منبع مینویسد.
520
00:21:52,330 –> 00:21:54,550
مشکل با این چاه از
521
00:21:54,550 –> 00:21:56,950
نقطه نظر توسعه کمی
522
00:21:56,950 –> 00:22:01,080
عجیب است درست است زیرا اگر من این را داشته باشم مانند
523
00:22:01,080 –> 00:22:03,310
کد پردازش پیش پردازش شده و سپس کد پردازش پست
524
00:22:03,310 –> 00:22:06,820
و قصد دارم با کد پردازش پست کار
525
00:22:06,820 –> 00:22:08,770
کنم این است که کنترل نسخه خود را بررسی کنم
526
00:22:08,770 –> 00:22:10,599
527
00:22:10,599 –> 00:22:12,879
اگر نه، پس من حدس می زنم که من باید آن
528
00:22:12,879 –> 00:22:14,679
را در طول فرآیند استقرار ساختمان خود بسازم،
529
00:22:14,679 –> 00:22:17,109
اما پس از آن چگونه می توانم بفهمم که کد در پایان چگونه به نظر می رسد، به نظر می رسد
530
00:22:17,109 –> 00:22:18,849
531
00:22:18,849 –> 00:22:20,109
که یک
532
00:22:20,109 –> 00:22:23,259
533
00:22:23,259 –> 00:22:25,299
آشفتگی پویا است.
534
00:22:25,299 –> 00:22:28,449
این است که بر خلاف انجام این کار یک بار
535
00:22:28,449 –> 00:22:31,570
در این فرآیند پردازش، شما
536
00:22:31,570 –> 00:22:33,609
آن را با کدی که به آن
537
00:22:33,609 –> 00:22:35,679
دسترسی دارید در هر محدوده ای که
538
00:22:35,679 –> 00:22:38,139
درست است انجام می دهید، به طوری که به نوعی اشیاء کد زنده
539
00:22:38,139 –> 00:22:39,729
که در حال دستکاری هستند. که
540
00:22:39,729 –> 00:22:42,329
بدیهی است مشکل مشابهی دارد از این نظر که
541
00:22:42,329 –> 00:22:45,459
چگونه میدانید چه چیزی را بیرون آوردهاید و
542
00:22:45,459 –> 00:22:47,919
دوست دارید اگر استثنایی وجود داشته باشد که در
543
00:22:47,919 –> 00:22:49,119
نهایت مطرح شود و به ردپای عقب نگاه کنید،
544
00:22:49,119 –> 00:22:51,279
به خطی اشاره خواهید کرد
545
00:22:51,279 –> 00:22:52,749
که با آن مطابقت ندارد. هر چیزی در
546
00:22:52,749 –> 00:22:54,519
تو پایه کد r پس دوباره
547
00:22:54,519 –> 00:22:57,849
اشکال زدایی کمی دشوار است، بنابراین با توجه به این که
548
00:22:57,849 –> 00:22:59,979
گفته می شود واکنش اولیه چند نفر
549
00:22:59,979 –> 00:23:02,769
است، اوه، متوجه شوید که تا آنجا که ممکن است از
550
00:23:02,769 –> 00:23:04,239
پایگاه کد من دورتر است، نمی توان دست نشان داد،
551
00:23:04,239 –> 00:23:08,499
چند نفر در حال حاضر چند
552
00:23:08,499 –> 00:23:12,699
نفر از آنها استفاده می کنند. تستهای PI هوم فکر میکنم
553
00:23:12,699 –> 00:2