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