در این مطلب، ویدئو Python Bytecode: An Introductor Tutorial با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:12:35
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:03,090
پایتون و جاوا
2
00:00:03,090 –> 00:00:05,009
در ازای چند دقیقه وقت
3
00:00:05,009 –> 00:00:07,680
شما چه مشترکاتی دارند، امیدوارم به شما نشان دهم که چرا نگاه کردن به
4
00:00:07,680 –> 00:00:09,540
زیر کلاه پایتون
5
00:00:09,540 –> 00:00:11,580
می تواند شما را به سطح عمیق تری از
6
00:00:11,580 –> 00:00:14,570
درک
7
00:00:14,570 –> 00:00:18,060
برساند. توابعی را که با تعریف تابع شروع می کنیم
8
00:00:18,060 –> 00:00:20,609
هیچ چیز غیرعادی نیست،
9
00:00:20,609 –> 00:00:22,640
10
00:00:23,460 –> 00:00:26,580
ما در نوت بوک مشتری هستیم، بیایید
11
00:00:26,580 –> 00:00:30,180
این یک کد بایت پایتون را صدا بزنیم،
12
00:00:30,180 –> 00:00:32,920
بیایید تابع خود را الحاق صدا
13
00:00:32,920 –> 00:00:36,460
کنیم، اگر دو آرگومان a و B بگیرد و سپس
14
00:00:36,460 –> 00:00:39,130
نتیجه یک بعلاوه b را برمی گرداند.
15
00:00:39,130 –> 00:00:41,950
python یک زبان تایپ پویا
16
00:00:41,950 –> 00:00:44,290
است حتی اگر ما این
17
00:00:44,290 –> 00:00:46,300
تابع را با این هدف ایجاد کردهایم
18
00:00:46,300 –> 00:00:49,090
که با دو رشته به عنوان آرگومان فراخوانی شود،
19
00:00:49,090 –> 00:00:51,910
هر کسی که از تابع ما استفاده میکند همچنان میتواند
20
00:00:51,910 –> 00:00:54,489
در هر دو شی که دوست دارد ارسال کند و تا زمانی
21
00:00:54,489 –> 00:00:57,699
که a + b توسط آنها پیادهسازی شود. تایپ می کند،
22
00:00:57,699 –> 00:01:00,699
پس همچنان کار می کند، بنابراین با استفاده از تابع خود،
23
00:01:00,699 –> 00:01:05,190
دو رشته
24
00:01:05,960 –> 00:01:08,740
را به هم متصل کرده ایم، اما می توانیم دو عدد صحیح را نیز ارسال کنیم و
25
00:01:08,740 –> 00:01:12,980
همچنان کار می کند تا به مثبت 3
26
00:01:12,980 –> 00:01:16,520
که 5 است برگردد، اما می خواهیم عمیق تر برویم، بنابراین ما می
27
00:01:16,520 –> 00:01:18,710
مانیم. rt با دیدن اینکه
28
00:01:18,710 –> 00:01:22,960
شی تابع ما دارای چه ویژگی هایی است، توجه کنید،
29
00:01:22,960 –> 00:01:25,810
بنابراین می توانیم ببینیم که concatenate er
30
00:01:25,810 –> 00:01:28,660
خود یک شی تابع است یکی از
31
00:01:28,660 –> 00:01:32,020
ویژگی های آن کد dunder است و
32
00:01:32,020 –> 00:01:35,170
این شی کد است، بنابراین اینجاست که
33
00:01:35,170 –> 00:01:38,650
کد دوچرخه کامپایل شده ذخیره می شود و نگاه کنید
34
00:01:38,650 –> 00:01:41,229
که چگونه بسیاری از ویژگیها را دارد،
35
00:01:41,229 –> 00:01:46,140
تعداد قوس که به a و B است،
36
00:01:48,030 –> 00:01:51,360
ما نام فایل flax را داریم که هنوز به
37
00:01:51,360 –> 00:01:54,770
طور کامل آن را پوشش ندادهایم
38
00:01:57,220 –> 00:01:59,620
و اندازه پشتهای داریم که میخواهیم با آن
39
00:01:59,620 –> 00:02:02,710
مقابله کنیم، اما چشمان من میسوزند
40
00:02:02,710 –> 00:02:05,050
و یک ویژگی در آن وجود دارد. به خصوص که
41
00:02:05,050 –> 00:02:08,800
باید نگاهی به کد Co بیندازیم که
42
00:02:08,800 –> 00:02:12,160
به ما یک شی بایت داده می شود، مستندات
43
00:02:12,160 –> 00:02:14,170
به ما می گوید که این قرار
44
00:02:14,170 –> 00:02:16,690
است دنباله ای از دستورالعمل های بایت کد
45
00:02:16,690 –> 00:02:19,540
را نشان دهد، اما بیایید نگاهی دقیق تر
46
00:02:19,540 –> 00:02:22,450
بیندازیم، اجازه دهید این شی بایت را
47
00:02:22,450 –> 00:02:25,510
به بایت های ناشناخته متغیر نسبت دهیم اگر ما
48
00:02:25,510 –> 00:02:28,090
لیستی از آن تهیه می کنیم سپس این لیست از
49
00:02:28,090 –> 00:02:31,360
هشت عدد صحیح را دریافت می کنیم که این فرم لیست را به متغیر دیگری اختصاص می دهیم
50
00:02:31,360 –> 00:02:34,920
51
00:02:39,510 –> 00:02:41,730
و وقتی به طول آن نگاه می کنیم می
52
00:02:41,730 –> 00:02:44,549
بینیم که در واقع هشت است، ممکن است
53
00:02:44,549 –> 00:02:46,110
از توابع داخلی
54
00:02:46,110 –> 00:02:50,909
آگاه باشید. کاراکتر dd و chr کاری که انجام می دهد این است که
55
00:02:50,909 –> 00:02:53,819
شما یک رشته را ارسال می کنید که یک
56
00:02:53,819 –> 00:02:56,489
کاراکتر یونیکد را نشان می دهد و سپس
57
00:02:56,489 –> 00:02:59,040
تابع Ord عدد صحیحی را
58
00:02:59,040 –> 00:03:01,560
که نقطه کد یونیکد آن کاراکتر را نشان می دهد برمی گرداند،
59
00:03:01,560 –> 00:03:04,620
به عنوان مثال در اینجا
60
00:03:04,620 –> 00:03:08,040
P را با حروف کوچک عبور می دهیم و
61
00:03:08,040 –> 00:03:13,049
112 می گیریم. CHR معکوسی است که شما در یک
62
00:03:13,049 –> 00:03:15,090
نقطه کد یونیکد ارسال می کنید و سپس
63
00:03:15,090 –> 00:03:17,659
کاراکتری را که نشان دهنده آن است برمی گرداند،
64
00:03:17,659 –> 00:03:20,010
بنابراین ما به این اعداد
65
00:03:20,010 –> 00:03:21,230
در لیست
66
00:03:21,230 –> 00:03:24,870
124 83 نگاهی می اندازیم و واقعاً به جایی نمی رسیم که
67
00:03:24,870 –> 00:03:26,400
واقعاً درست نمی کند. حس
68
00:03:26,400 –> 00:03:29,489
و اینجا جایی است که ماژول disassembly
69
00:03:29,489 –> 00:03:33,140
وارد می شود، ما این را وارد می کنیم
70
00:03:33,140 –> 00:03:36,470
و این یک تابع دارد و اکنون چه
71
00:03:36,470 –> 00:03:39,380
چیزی در ابتدایی ترین شکل آن به خوبی انجام
72
00:03:39,380 –> 00:03:41,959
می دهد، شما در یک آرگومان
73
00:03:41,959 –> 00:03:44,330
واحد به شیئی که می خواهید
74
00:03:44,330 –> 00:03:46,459
جدا شود و در واقع می تواند باشد، ارسال می کنید. یک
75
00:03:46,459 –> 00:03:48,770
ماژول کامل که نوشتهاید
76
00:03:48,770 –> 00:03:50,840
میتواند یک کلاس، یک روش، یک تابع، یک
77
00:03:50,840 –> 00:03:54,050
ژنراتور یا یک ژنراتور غیر همگام باشد، واقعاً
78
00:03:54,050 –> 00:03:55,730
میتوانید هر چیزی را به آن ارسال
79
00:03:55,730 –> 00:03:59,840
کنید، خروجیای که دریافت میکنید متن است و
80
00:03:59,840 –> 00:04:02,450
تمام دستورالعملها را به شما نشان میدهد.
81
00:04:02,450 –> 00:04:05,540
ترتیب آنها در کد دوچرخه اکنون
82
00:04:05,540 –> 00:04:08,030
وقتی ماژول های پایتون خود را اجرا می کنید
83
00:04:08,030 –> 00:04:10,340
این است که آنها به کد دوچرخه تبدیل می شوند
84
00:04:10,340 –> 00:04:12,800
و سپس پایتون یک ماشین مجازی
85
00:04:12,800 –> 00:04:15,830
دارد که این بایت کد را بعد از اولین
86
00:04:15,830 –> 00:04:18,470
بار اجرای یک ماژول اجرا می کند، مگر اینکه به
87
00:04:18,470 –> 00:04:20,779
پایتون بگویید غیر از این است. پوشه ای ایجاد می کند
88
00:04:20,779 –> 00:04:23,690
که در آن ماژول شما dunder PI cache است و
89
00:04:23,690 –> 00:04:26,750
آن فایل ها کد بایتی هستند، بنابراین
90
00:04:26,750 –> 00:04:28,640
دفعه بعد که ماژول خود را اجرا می کنید،
91
00:04:28,640 –> 00:04:30,500
کد بایت فقط باید به
92
00:04:30,500 –> 00:04:32,840
ماشین مجازی وارد شود و به این ترتیب در
93
00:04:32,840 –> 00:04:35,330
زمان صرف شده برای تولید بایت کد صرفه جویی شود.
94
00:04:35,330 –> 00:04:38,270
اولین وجه از کد شما البته
95
00:04:38,270 –> 00:04:40,580
آنچه ما پوشش می دهیم فقط برای
96
00:04:40,580 –> 00:04:43,310
پیاده سازی C Python اعمال می شود آنچه ما در
97
00:04:43,310 –> 00:04:45,590
مورد آن صحبت می کنیم در مورد
98
00:04:45,590 –> 00:04:49,310
پیاده سازی های دیگر مانند pi PI – I و
99
00:04:49,310 –> 00:04:52,220
Python و بقیه موارد دیگر صدق نمی کند.
100
00:04:52,220 –> 00:04:54,560
نسخه
101
00:04:54,560 –> 00:04:57,200
های پایتون از پایتون و
102
00:04:57,200 –> 00:04:59,810
به عنوان مثال سه هفت دو سه هشت، بنابراین ما
103
00:04:59,810 –> 00:05:02,660
مطمئن شدیم که این در مجموع هشت بایت است،
104
00:05:02,660 –> 00:05:05,360
اما ما فقط چهار دستورالعمل
105
00:05:05,360 –> 00:05:07,190
داریم و وقتی دقیق تر نگاه کنیم در
106
00:05:07,190 –> 00:05:09,500
اعداد جالب است بدانید
107
00:05:09,500 –> 00:05:13,790
که 124 در واقع نشان دهنده
108
00:05:13,790 –> 00:05:17,539
بار سریع اولین دستورالعمل است و سپس
109
00:05:17,539 –> 00:05:20,840
ما یک بار سریع دیگر داریم و بنابراین
110
00:05:20,840 –> 00:05:23,570
عدد بعدی در لیست ما
111
00:05:23,570 –> 00:05:26,570
صد و بیست و چهار خواهد بود زیرا 124
112
00:05:26,570 –> 00:05:29,720
عددی است که نشان دهنده بار است.
113
00:05:29,720 –> 00:05:34,370
پس از آن ما یک 23 داریم که
114
00:05:34,370 –> 00:05:38,330
نشان دهنده تبلیغ باینری و مقدار بازگشتی 83
115
00:05:38,330 –> 00:05:41,330
است، اما توجه داشته باشید که پس از
116
00:05:41,330 –> 00:05:43,880
هر عدد کد عملیاتی، به نظر می رسد که اگر اولین دستورالعمل را سریع یک بایت بارگذاری کنیم، یک
117
00:05:43,880 –> 00:05:45,680
صفر یا یک
118
00:05:45,680 –> 00:05:48,410
وجود دارد که در آنجا اتفاق می افتد.
119
00:05:48,410 –> 00:05:51,949
120
00:05:51,949 –> 00:05:55,699
Opcode است اما بارگذاری سریع باید
121
00:05:55,699 –> 00:05:58,010
یک متغیر محلی را بارگیری کند، در حالی
122
00:05:58,010 –> 00:06:00,680
که این دستورالعمل
123
00:06:00,680 –> 00:06:03,380
را نشان می دهد، چیزی وجود ندارد که نشان دهد کدام متغیر
124
00:06:03,380 –> 00:06:05,180
باید بارگذاری شود، بنابراین ما به بایت دیگری نیاز داریم
125
00:06:05,180 –> 00:06:08,120
و این بایت دیگر برای گفتن
126
00:06:08,120 –> 00:06:11,600
اینکه کدام متغیر محلی را در این مثال بارگذاری کند استفاده می شود.
127
00:06:11,600 –> 00:06:15,050
اولین بار سریع می گوید برای بارگذاری
128
00:06:15,050 –> 00:06:18,199
متغیر محلی صفر و دومی
129
00:06:18,199 –> 00:06:20,960
متغیر محلی یک را بارگذاری می کند، بنابراین آنها به صورت جفت می آیند که در
130
00:06:20,960 –> 00:06:23,930
آن بایت اول
131
00:06:23,930 –> 00:06:26,150
دستورالعمل را نشان می دهد و دومی توسط te