در این مطلب، ویدئو توابع و OOP در پایتون | توابع در پایتون | ادورکا | Python Rewind – 3 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:44:55
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:09,920 –> 00:00:12,320
بنابراین اکنون نگاهی به تعریف
2
00:00:12,320 –> 00:00:14,480
توابع ویژگیها و
3
00:00:14,480 –> 00:00:16,720
راههای مختلف ایجاد آنها در
4
00:00:16,720 –> 00:00:18,800
پایتون میاندازیم،
5
00:00:18,800 –> 00:00:21,119
بنابراین به عنوان بخشی از این ماژول،
6
00:00:21,119 –> 00:00:23,119
نحوه ایجاد و اجرای توابع را
7
00:00:23,119 –> 00:00:26,480
یاد میگیریم که برنامهنویسی شی گرا را یاد میگیریم،
8
00:00:26,480 –> 00:00:29,199
پس چرا تاکنون به توابع نیاز داریم. ما
9
00:00:29,199 –> 00:00:31,199
به خوبی می دانیم که می توانیم
10
00:00:31,199 –> 00:00:33,440
روی هر اسکریپت پایتونی به این شکل کد بنویسیم
11
00:00:33,440 –> 00:00:35,520
که در آن فقط یک سری
12
00:00:35,520 –> 00:00:38,559
خطوط اجرا می شوند، اما زمانی که
13
00:00:38,559 –> 00:00:40,480
باید کدی را با این فرمت
14
00:00:40,480 –> 00:00:43,040
بنویسید، می گویم یک تابع برای فاکتوریل
15
00:00:43,040 –> 00:00:45,120
بنویسید یا ننویسید. یک تابع فقط یک قطعه
16
00:00:45,120 –> 00:00:47,360
کد بنویسید که فاکتوریل را پیاده سازی می کند،
17
00:00:47,360 –> 00:00:49,120
همچنین یک قطعه کد بنویسید که پالیندروم را پیاده سازی می کند
18
00:00:49,120 –> 00:00:51,440
و مثلث را در یک
19
00:00:51,440 –> 00:00:53,920
فرمت خاص چاپ می کند که یک هرم از یک
20
00:00:53,920 –> 00:00:56,160
تا هفت یک تا هشت را ایجاد می کند تا بتوانیم
21
00:00:56,160 –> 00:00:58,480
چندین چیز را در یک فایل اسکریپت مشخص کنیم،
22
00:00:58,480 –> 00:01:00,559
اما اگر شما هر زمان که اسکریپت را اجرا می کنید، کد خود را به این
23
00:01:00,559 –> 00:01:02,879
شکل بدون سازماندهی آن در توابع بنویسید،
24
00:01:02,879 –> 00:01:05,280
25
00:01:05,280 –> 00:01:08,159
همه این ویژگی ها را به یکباره اجرا می کند، مانند
26
00:01:08,159 –> 00:01:11,119
هرم پالیندروم فاکتوریل، هر چه
27
00:01:11,119 –> 00:01:13,439
که چاپ می کنید. ثانیاً اگر مجبور
28
00:01:13,439 –> 00:01:16,640
هستید خطوطی را که
29
00:01:16,640 –> 00:01:18,479
با کد فاکتوریل مطابقت دارند اشکال زدایی کنید،
30
00:01:18,479 –> 00:01:20,400
همیشه باید دنبال کنید و ببینید از
31
00:01:20,400 –> 00:01:22,560
کجا شروع شد و به کجا ختم شد،
32
00:01:22,560 –> 00:01:24,799
اغلب یک راه خوب برای مقابله با این
33
00:01:24,799 –> 00:01:26,960
نوع مشکلات است. این است که کد خود را سازماندهی کنید و
34
00:01:26,960 –> 00:01:29,439
وقتی می گوییم سازماندهی به این معنی است که چرا
35
00:01:29,439 –> 00:01:32,079
به خطوط خاصی از کد نامی نمی دهیم که
36
00:01:32,079 –> 00:01:34,000
به اندازه کافی معنادار باشد تا توضیح دهد
37
00:01:34,000 –> 00:01:36,400
که آن قطعه کد چگونه این کار را انجام می دهد در این مورد
38
00:01:36,400 –> 00:01:38,799
اگر بگوییم تعریف فاکتوریل و
39
00:01:38,799 –> 00:01:40,720
سپس همه این کد را در زیر بنویسیم. این
40
00:01:40,720 –> 00:01:42,399
تعریف به این معنی است که
41
00:01:42,399 –> 00:01:44,000
این خطوط کد یک
42
00:01:44,000 –> 00:01:46,079
فاکتوریل از یک عدد را تولید می کنند و ما فقط
43
00:01:46,079 –> 00:01:48,640
باید یک ورودی را ارسال کنیم
44
00:01:48,640 –> 00:01:50,799
تا در آینده به راحتی بتوان آن را ارجاع داد و همچنین
45
00:01:50,799 –> 00:01:53,439
قابل استفاده مجدد و همچنین اشکال زدایی آسان تر می شود،
46
00:01:53,439 –> 00:01:56,000
به این معنی که باید یاد بگیرید
47
00:01:56,000 –> 00:01:58,640
که چگونه توابع را در پایتون ایجاد کنید
48
00:01:58,640 –> 00:02:00,799
و نحو تابع چگونه به نظر می
49
00:02:00,799 –> 00:02:03,200
رسد ما از کلمه کلیدی def برای
50
00:02:03,200 –> 00:02:05,680
تعریف استفاده می کنیم و به دنبال آن نام تابع
51
00:02:05,680 –> 00:02:07,439
در این مورد نام
52
00:02:07,439 –> 00:02:08,479
تابع نام تابع
53
00:02:08,479 –> 00:02:11,280
باز کردن و بستن پرانتز col است. روشن است و
54
00:02:11,280 –> 00:02:13,680
این نیاز به دنبال کردن تورفتگی دارد،
55
00:02:13,680 –> 00:02:15,760
بنابراین همه خطوط مربوط به
56
00:02:15,760 –> 00:02:18,000
تابع باید حداقل یک
57
00:02:18,000 –> 00:02:20,480
فضای زبانه هندی یا تورفتگی متناظر
58
00:02:20,480 –> 00:02:23,280
داشته باشند که برای همه فایلهای خود تصمیم گرفتهاید،
59
00:02:23,280 –> 00:02:26,480
اکنون این پرانتزها ممکن است آرگومانهایی را
60
00:02:26,480 –> 00:02:28,720
به عنوان ورودی از کاربر بگیرند یا ممکن است فقط
61
00:02:28,720 –> 00:02:31,440
باشند. اگر آنها از قبل بدانند با چه
62
00:02:31,440 –> 00:02:33,040
مقادیری سروکار دارند و
63
00:02:33,040 –> 00:02:35,519
این مقادیر به نوعی ایستا هستند، خالی می ماند، بنابراین اگر
64
00:02:35,519 –> 00:02:38,319
اولین تابع خود را در این مورد
65
00:02:38,319 –> 00:02:41,040
بنویسیم، دسته ای از پارامترها را در اینجا ارسال می کنیم،
66
00:02:41,040 –> 00:02:42,800
اما اگر تابعی مانند
67
00:02:42,800 –> 00:02:43,599
این
68
00:02:43,599 –> 00:02:47,280
فرآیند تعریف را تعریف کنیم چه می شود. و ما می گوییم نشانگر خواندن
69
00:02:47,280 –> 00:02:51,120
این فایل را باز کنید و بگویید باز کردن متفرقه
70
00:02:51,120 –> 00:02:55,120
جدید test.json در حالت خواندن و
71
00:02:55,120 –> 00:02:57,920
برای خط در rp می گوییم و می گوییم خط چاپ
72
00:02:57,920 –> 00:03:00,319
بعد از اتمام کار با آن می گوییم rp dot
73
00:03:00,319 –> 00:03:03,440
close بنابراین به عنوان بخشی از این تابع
74
00:03:03,440 –> 00:03:05,280
نیستیم. هر بار که میخواهد test.json را باز کند، هر آرگومان را از کاربر نهایی
75
00:03:05,280 –> 00:03:07,480
76
00:03:07,480 –> 00:03:10,480
میگیرد و تمام خطوط را از test.json چاپ میکند
77
00:03:10,480 –> 00:03:12,319
و سپس فایل را میبندد و از آن خارج میشود،
78
00:03:12,319 –> 00:03:14,959
اما اگر میخواهید میتوانید عملکردهای خود
79
00:03:14,959 –> 00:03:18,480
را انعطافپذیرتر کنید. از
80
00:03:18,480 –> 00:03:20,640
این برای خواندن هر نوع فایلی که
81
00:03:20,640 –> 00:03:23,040
می توانید انتخاب کنید برای دریافت مسیر فایل
82
00:03:23,040 –> 00:03:26,159
به عنوان ورودی از کاربر نهایی استفاده کنید و سپس بگویید
83
00:03:26,159 –> 00:03:28,720
مسیر فایل را باز کنید و می توانید آن را
84
00:03:28,720 –> 00:03:31,120
قوی تر کنید و همچنین می توانید ببینید که آیا
85
00:03:31,120 –> 00:03:34,879
مسیر os dot وجود دارد مثلاً این فایل. مسیر
86
00:03:34,879 –> 00:03:37,360
وجود دارد تنها در آن صورت شما میخواهید
87
00:03:37,360 –> 00:03:39,760
همه اینها را انجام دهید، اگر وجود نداشته باشد،
88
00:03:39,760 –> 00:03:41,840
برای جلوگیری از هر گونه خطا،
89
00:03:41,840 –> 00:03:44,239
قبلاً یک بررسی کردهاید، بنابراین به این ترتیب میتوانیم
90
00:03:44,239 –> 00:03:46,879
توابعی ایجاد کنیم که آنها را انعطافپذیرتر
91
00:03:46,879 –> 00:03:49,280
و قابل استفادهتر کنیم، نه تنها از نظر
92
00:03:49,280 –> 00:03:51,680
بازبینی آنها و آنها را معذور می کنیم
93
00:03:51,680 –> 00:03:53,840
بلکه آنها را
94
00:03:53,840 –> 00:03:55,920
از نظر انتقال پارامترها انعطاف پذیرتر می کنیم و سپس
95
00:03:55,920 –> 00:03:57,920
از همان تابع برای عملکرد
96
00:03:57,920 –> 00:04:00,640
روی انواع مختلف اشیاء استفاده می کنیم، بنابراین به این صورت
97
00:04:00,640 –> 00:04:03,040
شروع می کنیم و
98
00:04:03,040 –> 00:04:05,760
توابع را در پایتون
99
00:04:05,760 –> 00:04:07,599
تعریف می کنیم و سپس آن را گسترش می دهیم که یک تابع جدید به نام تعریف می کنیم.
100
00:04:07,599 –> 00:04:09,840
اضافه می کنیم و چندین پارامتر را
101
00:04:09,840 –> 00:04:11,680
می گیریم، بنابراین می خواهیم دو عدد
102
00:04:11,680 –> 00:04:13,519
برای عملکرد ما اجرا شود و به جای تعریف
103
00:04:13,519 –> 00:04:16,000
یک پارامتر مانند مسیر فایل در فرآیند،
104
00:04:16,000 –> 00:04:18,959
n1 و n2 را به عنوان دو عدد در add fun می گوییم.
105
00:04:18,959 –> 00:04:21,680
ction و کاری که با یک add انجام می دهیم،
106
00:04:21,680 –> 00:04:23,919
فقط مجموع آن دو مقدار را برمی گردانیم،
107
00:04:23,919 –> 00:04:26,639
بنابراین این تابع add را ایجاد کرده ایم و
108
00:04:26,639 –> 00:04:28,880
از تابع ورودی برای گرفتن
109
00:04:28,880 –> 00:04:32,000
ورودی از کاربر نهایی استفاده می کنیم و می گوییم 20 و
110
00:04:32,000 –> 00:04:34,639
سپس می گوییم 30 خروجی را به صورت چاپ می کند.
111
00:04:34,639 –> 00:04:36,880
50. اکنون در این مورد، وقتی
112
00:04:36,880 –> 00:04:39,199
به تعریف تابع add نگاه میکنید، در
113
00:04:39,199 –> 00:04:41,840
واقع یک تعریف بسیار ضعیف است، زیرا
114
00:04:41,840 –> 00:04:44,080
ما مشخص نکردهایم که
115
00:04:44,080 –> 00:04:46,479
رشتهها را اضافه میکنیم یا اعداد صحیح اضافه میکنیم،
116
00:04:46,479 –> 00:04:48,720
بلکه در خارج از تابع add،
117
00:04:48,720 –> 00:04:51,520
کدگذاری سخت یا پایه داریم. فرض کنید
118
00:04:51,520 –> 00:04:53,280
که هر بار که
119
00:04:53,280 –> 00:04:55,199
مقادیر را به عدد صحیح تبدیل می کنیم تا تابع خود
120
00:04:55,199 –> 00:04:57,600
آنها را خلاصه کنیم، بنابراین من می
121
00:04:57,600 –> 00:04:59,840
گویم اگر آن را به عنوان بخشی
122
00:04:59,840 –> 00:05:01,600
از تابع افزودن تعریف کنید بهتر است
123
00:05:01,600 –> 00:05:03,919
تا برای هر شخص دیگری مشخص شود که چه کسی قرار است از
124
00:05:03,919 –> 00:05:06,000
کد شما استفاده کند تا ببیند که آیا تابع add را
125
00:05:06,000 –> 00:05:08,000
می توان برای اضافه کردن اعداد استفاده کرد یا می توان
126
00:05:08,000 –> 00:05:10,639
از آن برای افزودن هر چیزی مانند به هم
127
00:05:10,639 –> 00:05:13,280
پیوستن رشته ها که ضربات را به هم متصل می کنند استفاده کرد، بنابراین اگر
128
00:05:13,280 –> 00:05:16,000
دوباره این را اجرا کنیم و اگر بگوییم python spark
129
00:05:16,000 –> 00:05:17,759
می توانیم از python spark به عنوان استفاده کنیم. یک
130
00:05:17,759 –> 00:05:20,080
stri ng به خوبی به هم پیوسته است، بنابراین همه چیز
131
00:05:20,080 –> 00:05:22,479
بستگی دارد که چگونه می خواهیم آن را پیاده سازی کنیم
132
00:05:22,479 –> 00:05:24,320
و آیا می خواهیم شرایط
133
00:05:24,320 –> 00:05:26,080
خارج از تابع پیاده سازی شود یا
134
00:05:26,080 –> 00:05:28,800
در داخل تابعی که ما تابع را تعریف کرده ایم
135
00:05:28,800 –> 00:05:30,880
و اکنون می خواهیم از آن استفاده
136
00:05:30,880 –> 00:05:33,039
کنیم، همچنین نحوه استفاده از آن را دیده ایم. تابعی را
137
00:05:33,039 –> 00:05:35,919
که نمیتوانید فقط 3 کاما 4
138
00:05:35,919 –> 00:05:37,600
را فراخوانی کنید و مقادیری را که شما فراخوانی میکنید
139
00:05:37,600 –> 00:05:40,240
اضافه میکند، پایتون را اضافه میکند و آناکوندا آن مقادیر را اضافه میکند،
140
00:05:40,240 –> 00:05:42,720
بنابراین بدون هیچ گونه تبدیل نوع
141
00:05:42,720 –> 00:05:44,720
142
00:05:44,720 –> 00:05:46,960
، اگر دو عدد
143
00:05:46,960 –> 00:05:48,800
را ارسال کنید، به سادگی مقادیر را جمع میکند. اگر
144
00:05:48,800 –> 00:05:50,160
دو رشته را ارسال میکنید، آن دو عدد را اضافه میکنید،
145
00:05:50,160 –> 00:05:52,160
این دو رشته را به هم متصل میکنید، اجازه دهید
146
00:05:52,160 –> 00:05:54,960
این را تأیید کنیم، اجازه دهید این را نیز
147
00:05:54,960 –> 00:05:57,440
تأیید کنیم و اکنون یک مورد دیگر را تأیید
148
00:05:57,440 –> 00:06:00,160
میکنیم که در آن میگویید سه پایتون با کاما اضافه کنید
149
00:06:00,160 –> 00:06:02,880
تا در این سناریو شکست بخورد. می گوید
150
00:06:02,880 –> 00:06:04,479
که بزرگتر از نماد
151
00:06:04,479 –> 00:06:06,800
بین نمونه های عدد صحیح
152
00:06:06,800 –> 00:06:09,120
و رشته پشتیبانی نمی شود زیرا ما بررسی می کنیم که
153
00:06:09,120 –> 00:06:13,039
اگر n1 کوچکتر از n2 باشد n1 بزرگتر از n2 است،
154
00:06:13,039 –> 00:06:15,039
بنابراین در آن سناریوها تابع ما بر
155
00:06:15,039 –> 00:06:17,520
نمی گردد. هر مقداری که اکنون
156
00:06:17,520 –> 00:06:19,919
به برخی از توابع داخلی میآید، بنابراین
157
00:06:19,919 –> 00:06:22,240
تابعی که اکنون
158
00:06:22,240 –> 00:06:23,919
نوشتهایم تابع افزودن و تابع فرآیند
159
00:06:23,919 –> 00:06:26,319
توسط ما تعریف شدهاند و
160
00:06:26,319 –> 00:06:28,720
آنها را به عنوان توابع تعریفشده کاربر میخوانیم
161
00:06:28,720 –> 00:06:30,319
تا اولین تابع ما بود و سپس
162
00:06:30,319 –> 00:06:32,160
دنبال شد. با این کار ما اکنون
163
00:06:32,160 –> 00:06:35,120
اشکال مختلف انتقال آرگومان ها به
164
00:06:35,120 –> 00:06:38,240
یک تابع را یاد می گیریم که می گوییم آرگومان های تابع و
165
00:06:38,240 –> 00:06:40,880
با آن شروع می کنیم بنابراین
166
00:06:40,880 –> 00:06:43,280
ابتدا جنبه های مختلف
167
00:06:43,280 –> 00:06:45,919
توابع تعریف شده توسط کاربر را پوشش می دهیم و سپس
168
00:06:45,919 –> 00:06:48,880
روش های مختلف ارسال آرگومان ها
169
00:06:48,880 –> 00:06:51,199
را بررسی می کنیم. ما به توابعی
170
00:06:51,199 –> 00:06:53,120
که با برگرداندن یک مقدار نوشتهایم نگاه کردهایم،
171
00:06:53,120 –> 00:06:55,680
میتوانید یک تابع تعریف جدید بنویسید
172
00:06:55,680 –> 00:06:58,240
و سپس فرض کنید که a و b را به عنوان
173
00:06:58,240 –> 00:07:00,800
ورودی میگیرد و شما فقط میگویید بازگشت بدون
174
00:07:00,800 –> 00:07:02,479
برگرداندن چیزی، بنابراین ممکن است یک نوع وجود داشته باشد
175
00:07:02,479 –> 00:07:04,479
که یک مقدار را برمیگرداند.
176
00:07:04,479 –> 00:07:06,560
نوع دومی که برمیگرداند اما
177
00:07:06,560 –> 00:07:09,039
مقداری را بر نمیگرداند و میتواند سوم باشد که
178
00:07:09,039 –> 00:07:10,880
ممکن است هیچ پارامتری داشته باشد یا نداشته باشد و
179
00:07:10,880 –> 00:07:13,360
در عین حال فقط میگوید print hello
180
00:07:13,360 –> 00:07:15,599
world بنابراین این یکی است حتی سعی نمیکنیم
181
00:07:15,599 –> 00:07:17,840
چیزی را برگردانیم، بنابراین میتوانیم به
182
00:07:17,840 –> 00:07:20,240
خوبی توابعی مانند این داشته باشیم و وقتی
183
00:07:20,240 –> 00:07:22,880
new و سوم را فراخوانی میکنید باید چاپ کنید و
184
00:07:22,880 –> 00:07:25,680
میگوییم new one کاما دو و همچنین
185
00:07:25,680 –> 00:07:27,360
خروجی سوم را چاپ میکنیم، بنابراین
186
00:07:27,360 –> 00:07:29,199
هر دو تابع را در یک چاپ فراخوانی میکنیم.
187
00:07:29,199 –> 00:07:31,039
بیانیه و بیایید ببینیم خروجی چگونه به
188
00:07:31,039 –> 00:07:33,280
نظر می رسد بنابراین hello world را چاپ می
189
00:07:33,280 –> 00:07:35,440
کند و از آنجایی که هیچ یک از
190
00:07:35,440 –> 00:07:37,280
توابع چیزی را باز نمی گردانند، دلیل اینکه ما
191
00:07:37,280 –> 00:07:39,840
hello world را قبل از دستور چاپ خود می بینیم این
192
00:07:39,840 –> 00:07:42,240
است که تماس های ما را سوم در یک چاپ واحد جدید فراخوانی می کند در
193
00:07:42,240 –> 00:07:44,080
حالی که هر دو فراخوانی می شوند.
194
00:07:44,080 –> 00:07:46,319
به طور همزمان خروجی این چاپ
195
00:07:46,319 –> 00:07:48,560
در تابع سوم چاپ می شود
196
00:07:48,560 –> 00:07:50,319
hello world و چون هیچ کدام از
197
00:07:50,319 –> 00:07:52,720
توابع مقدار واقعی را برمی گرداند
198
00:07:52,720 –> 00:07:54,800
سومی باز نمی گردد حتی
199
00:07:54,800 –> 00:07:56,639
تلاشی برای برگرداندن ندارد و جدید در
200
00:07:56,639 –> 00:07:58,240
تلاش برای برگرداندن است اما هیچ مقداری را بر نمی
201
00:07:58,240 –> 00:08:00,560
گرداند. بنابراین معلوم شد که هر دو
202
00:08:00,560 –> 00:08:03,039
هیچکدام نیستند که معادل تعریف خالی یا خالی
203
00:08:03,039 –> 00:08:05,360
از خالی در پایتون است و اکنون
204
00:08:05,360 –> 00:08:07,919
به آرگومانهای تابع میآیند و ما
205
00:08:07,919 –> 00:08:10,240
به لامبدا و ساخته شده دست میزنیم. -in توابع
206
00:08:10,240 –> 00:08:12,319
بعد از پوشاندن آرگومان های تابع، بنابراین
207
00:08:12,319 –> 00:08:14,000
فرض کنید می خواهید تابعی بنویسید
208
00:08:14,000 –> 00:08:16,080
که سه ورودی می گیرد و می خواهید
209
00:08:16,080 –> 00:08:18,080
چاپ کنید که ما آن تابع را
210
00:08:18,080 –> 00:08:20,400
در حال حاضر به عنوان سرگرمی تعریف می کنیم و سپس می خواهیم
211
00:08:20,400 –> 00:08:23,280
تابع fun را به چند روش فراخوانی کنیم، بنابراین
212
00:08:23,280 –> 00:08:24,960
من ابتدا از یک روش بسیار متداول و
213
00:08:24,960 –> 00:08:27,599
معمولی برای نامیدن آن استفاده کنید که
214
00:08:27,599 –> 00:08:30,240
تابع fun است و عبور 10 20 30 به عنوان
215
00:08:30,240 –> 00:08:32,479
ورودی، هیچ چیز دیگری
216
00:08:32,479 –> 00:08:34,320
در این بلوک اجرا نمی شود، بنابراین این سه آرگومان طول می کشد
217
00:08:34,320 –> 00:08:36,559
و ما سه
218
00:08:36,559 –> 00:08:40,240
مقدار 10 20 30 را ارسال می کنیم که بسیار ساده است اکنون
219
00:08:40,240 –> 00:08:42,000
می خواهید آن را تقسیم کنید تا مجبور
220
00:08:42,000 –> 00:08:44,560
نباشیم اغلب اسکرول کنیم، بنابراین وقتی این را به عنوان خروجی دریافت میکنیم
221
00:08:44,560 –> 00:08:47,360
، فرض کنید میخواهید
222
00:08:47,360 –> 00:08:50,959
10 20 45 را به عنوان مقادیر ارسال کنید، اما سپس
223
00:08:50,959 –> 00:08:52,959
میخواهید آن را به طور صریح به آرگومانها اختصاص دهید، به این
224
00:08:52,959 –> 00:08:55,360
معنی که میتوانید همچنین
225
00:08:55,360 –> 00:08:57,200
تابع خود را به این شکل فراخوانی کنید که در آن
226
00:08:57,200 –> 00:08:59,440
می توانید بگویید a برابر با 10 b برابر
227
00:08:59,440 –> 00:09:02,320
با 45 و c برابر با 20 است.
228
00:09:02,320 –> 00:09:04,160
مزیت این نماد این است که شما مجبور نیستید
229
00:09:04,160 –> 00:09:06,160
از یک ترتیب پیروی کنید، بنابراین
230
00:09:06,160 –> 00:09:08,080
راه های مختلفی وجود دارد که این موارد استدلال ها
231
00:09:08,080 –> 00:09:10,560
تفسیر می شوند روش اول
232
00:09:10,560 –> 00:09:12,959
نماد موقعیتی نام دارد که در آن
233
00:09:12,959 –> 00:09:15,760
مقادیر 10 20 30 را ارسال می کردیم و دیدیم که
234
00:09:15,760 –> 00:09:18,640
خروجی نیز 10 به 30 است، یعنی 10
235
00:09:18,640 –> 00:09:21,200
به 20 به b اختصاص یافت
236
00:09:21,200 –> 00:09:23,600
و 30 به c اختصاص یافت و مقادیر
237
00:09:23,600 –> 00:09:25,519
از چپ به راست خوانده شدند. و
238
00:09:25,519 –> 00:09:27,680
آرگومان ها نیز از چپ به راست خوانده شدند،
239
00:09:27,680 –> 00:09:30,320
بنابراین مقادیر به همه آرگومان ها نگاشت شدند
240
00:09:30,320 –> 00:09:32,880
، بنابراین بیشترین مقدار به چپ
241
00:09:32,880 –> 00:09:34,959
ترین آرگومان و به طور مشابه از سمت راست بیشترین
242
00:09:34,959 –> 00:09:36,959
مقدار به آرگومان راست ترین آرگومان نگاشت شده است، بنابراین در
243
00:09:36,959 –> 00:09:38,720
این مورد بسیار مهم است که ما
244
00:09:38,720 –> 00:09:40,800
به تعداد آرگومان ارسال کنیم. تعداد مقادیر به عنوان
245
00:09:40,800 –> 00:09:44,000
آرگومان ها، بنابراین اگر
246
00:09:44,000 –> 00:09:46,480
به جای اینکه فقط 10 20 30 را پاس کنیم، 10 20 30 و 40 را پاس کنیم
247
00:09:46,480 –> 00:09:48,240
، می گوید تابع سه آرگومان موقعیتی می گیرد
248
00:09:48,240 –> 00:09:51,040
اما چهار عدد داده شده است،
249
00:09:51,040 –> 00:09:52,560
بنابراین تعداد مقادیر باید با
250
00:09:52,560 –> 00:09:54,720
تعداد آرگومان های روش دوم
251
00:09:54,720 –> 00:09:57,440
فراخوانی مطابقت داشته باشد. یک تابع این است که ما مقادیری
252
00:09:57,440 –> 00:09:59,839
را به متغیرهای مربوطه اختصاص می دهیم و در آن صورت
253
00:09:59,839 –> 00:10:01,920
نماد موقعیتی
254
00:10:01,920 –> 00:10:04,560
در تصویر ظاهر نمی شود، بنابراین اگر بخواهید یک
255
00:10:04,560 –> 00:10:06,560
قیاس در اینجا ترسیم کنید، بسیار شبیه
256
00:10:06,560 –> 00:10:08,399
به ویژگی هایی است که ما یاد گرفته ایم. در
257
00:10:08,399 –> 00:10:10,560
فهرستها و لغتنامهها بهطور جداگانه
258
00:10:10,560 –> 00:10:12,880
یاد گرفتیم که تا زمانی که فهرست همه چیز را به
259
00:10:12,880 –> 00:10:14,720
ترتیب موقعیتی دنبال کنیم،
260
00:10:14,720 –> 00:10:16,880
میتوانیم با استفاده از
261
00:10:16,880 –> 00:10:18,800
یک نماد موقعیتی با مشخص کردن
262
00:10:18,800 –> 00:10:20,800
فهرست و برش به عناصر موجود در فهرست دسترسی داشته باشیم، میتوانیم این کار را روی
263
00:10:20,800 –> 00:10:23,040
رشتههای تاپلی نیز انجام دهیم، اما فرهنگ لغت
264
00:10:23,040 –> 00:10:24,560
به بعد یاد گرفتیم که
265
00:10:24,560 –> 00:10:27,440
نماد موقعیتی هیچ ارتباطی نداشت و مقادیر را می
266
00:10:27,440 –> 00:10:29,600
توان با مشخص کردن کلیدی
267
00:10:29,600 –> 00:10:31,040
که در مقابل آن مقدار را می خواهیم به
268
00:10:31,040 –> 00:10:32,880
طور مشابه بازیابی کرد، در این مورد وقتی صحبت از
269
00:10:32,880 –> 00:10:35,040
ارسال آرگومان می شود، می توانید
270
00:10:35,040 –> 00:10:37,120
نام آرگومان را بگیرید و یک مقدار به آن اختصاص دهید
271
00:10:37,120 –> 00:10:38,959
و ترتیب آن مهم نیست.
272
00:10:38,959 –> 00:10:41,200
شکل دوم فراخوانی سرگرمی را
273
00:10:41,200 –> 00:10:43,279
نماد کلمه کلیدی می نامند و وقتی
274
00:10:43,279 –> 00:10:46,320
این را اجرا می کنیم 10 45 20 را می بینیم. بنابراین گفتیم b
275
00:10:46,320 –> 00:10:48,800
برابر با 45 است اما در
276
00:10:48,800 –> 00:10:51,839
نهایت مشخص شد و c قبل از b مشخص شد و
277
00:10:51,839 –> 00:10:54,640
اکنون شکل سوم تابع فراخوانی
278
00:10:54,640 –> 00:10:56,959
در این مورد این است که ما هر سه
279
00:10:56,959 –> 00:10:58,720
مقداری را که قطعاً مورد نیاز
280
00:10:58,720 –> 00:11:00,480
هستند ارسال می کنیم و دو جفت ارزش کلید اضافی را ارسال
281
00:11:00,480 –> 00:11:02,240
می کنیم، ببینیم در آن صورت چه اتفاقی می افتد
282
00:11:02,240 –> 00:11:04,480
تا دوباره برگردد. خطایی وجود دارد که
283
00:11:04,480 –> 00:11:07,200
میگوید آرگومان کلمه کلیدی غیرمنتظره d دریافت میکند،
284
00:11:07,200 –> 00:11:09,440
زیرا فقط b و c در تعریف
285
00:11:09,440 –> 00:11:11,760
تابع تعریف شدهاند، اکنون این به وضوح در
286
00:11:11,760 –> 00:11:13,440
مورد یک تعریف تابع صحبت میکند
287
00:11:13,440 –> 00:11:16,160
که نیاز به تعیین همه مقادیر
288
00:11:16,160 –> 00:11:19,279
دارد، بنابراین چهار نوع
289
00:11:19,279 –> 00:11:21,440
مشخصه مقدار در
290
00:11:21,440 –> 00:11:23,120
آرگومانهای تابع وجود دارد. چهار
291
00:11:23,120 –> 00:11:25,360
مشخصه هستند، یکی آرگومان های غیر پیش فرض
292
00:11:25,360 –> 00:11:27,920
است، به این معنی که باید
293
00:11:27,920 –> 00:11:31,680
یک مقدار را مشخص کنیم، بنابراین مثلاً برای هر آرگومان یک مقدار
294
00:11:31,680 –> 00:11:34,160
و آرگومان های
295
00:11:34,160 –> 00:11:37,200
پیش فرض به طور پیش فرض مقدار مشخص شده را تعیین کنید، بنابراین در
296
00:11:37,200 –> 00:11:39,680
این مورد فرض کنید می خواهیم c
297
00:11:39,680 –> 00:11:42,480
مقدار پیش فرض 100 داشته باشد و a و b
298
00:11:42,480 –> 00:11:45,040
مقدار را مشخص نمی کنیم، بنابراین چگونه
299
00:11:45,040 –> 00:11:47,040
امضا را تفسیر کنیم یا چگونه آن را بخوانیم، می
300
00:11:47,040 –> 00:11:49,519
گوییم a و b آرگومان های غیر پیش فرض هستند
301
00:11:49,519 –> 00:11:52,160
و c یک آرگومان پیش فرض است که به این معنی است که
302
00:11:52,160 –> 00:11:54,079
اگر مقدار را به c ارسال کنیم
303
00:11:54,079 –> 00:11:56,160
، پیش فرض را بازنویسی می کند. مقدار، اما اگر
304
00:11:56,160 –> 00:11:58,880
هیچ مقداری را برای c ارسال نکنیم،
305
00:11:58,880 –> 00:12:01,279
به مقدار پیشفرض خود برمیگردد، بنابراین به
306
00:12:01,279 –> 00:12:03,279
این معنی است
307
00:12:03,279 –> 00:12:05,839
که اگر شرط not را داشته باشیم، میتوانیم این تابع را فقط با دو مقدار فراخوانی کنیم.
308
00:12:05,839 –> 00:12:07,839
مقدار عبور
309
00:12:07,839 –> 00:12:11,040
برای c پس بیایید این را امتحان کنیم
310
00:12:11,040 –> 00:12:13,360
و اول از همه بگوییم 10 20 و 30 تا ببینیم چه خروجی
311
00:12:13,360 –> 00:12:16,000
می آید بنابراین c مقدار واقعی خود را
312
00:12:16,000 –> 00:12:18,639
که ما پاس کرده ایم می گیرد اما به جای 30
313
00:12:18,639 –> 00:12:20,639
اجازه دهید تابع one را فقط با دو
314
00:12:20,639 –> 00:12:22,800
مقدار 10 و 20 فراخوانی کنیم. به
315
00:12:22,800 –> 00:12:25,279
مقدار پیشفرض c برمیگردد، اما بعد متوجه شدم که
316
00:12:25,279 –> 00:12:27,680
به جای c چرا مقدار پیشفرض
317
00:12:27,680 –> 00:12:30,399
برای b وجود ندارد و اجازه دهید a و c
318
00:12:30,399 –> 00:12:32,000
آرگومانهای غیرپیشفرض باشند که به معنای مقدار
319
00:12:32,000 –> 00:12:34,720
مشخص میشود.
320
00:12:34,720 –> 00:12:37,519
10
321
00:12:37,519 –> 00:12:40,160
به a اختصاص داده می شود و 20 به c و b
322
00:12:40,160 –> 00:12:42,320
مقدار پیش فرض خود را می گیرد، بیایید ببینیم
323
00:12:42,320 –> 00:12:45,360
این شکست خواهد خورد، بنابراین وقتی نوبت به
324
00:12:45,360 –> 00:12:48,000
عملکرد و مشخصات می رسد، الزام
325
00:12:48,000 –> 00:12:50,399
می کند که اول از همه آرگومان های غیر پیش فرض باید از این ترتیب پیروی کنیم.
326
00:12:50,399 –> 00:12:52,160
327
00:12:52,160 –> 00:12:54,880
مشخص شود که با کاما و به دنبال آن همه آرگومان های پیش فرض از هم جدا شده اند،
328
00:12:54,880 –> 00:12:58,320
بنابراین در پایان باید b
329
00:12:58,320 –> 00:13:00,959
مشخص شود اگر مشخص کنیم
330
00:13:00,959 –> 00:13:03,600
که در این بین به نحوی jupiter به
331
00:13:03,600 –> 00:13:05,839
شما نشان نمی دهد که این یک خطای نحوی است،
332
00:13:05,839 –> 00:13:08,000
اما اگر آن را روی جذابیت پای امتحان کنید، بنابراین اگر
333
00:13:08,000 –> 00:13:09,839
این را بنویسیم میتوانستی ببینی یک
334
00:13:09,839 –> 00:13:12,560
زیر خط قرمز در نزدیکی c وجود دارد و می گوید پارامتر غیر پیش فرض از
335
00:13:12,560 –> 00:13:15,519
پارامتر پیش فرض پیروی می کند بنابراین
336
00:13:15,519 –> 00:13:17,760
c غیر پیش فرض است و بعد از
337
00:13:17,760 –> 00:13:20,320
مقدار پیش فرض مشخص می شود که مجاز نیست بنابراین
338
00:13:20,320 –> 00:13:22,000
شما را تصحیح می کند و آنجا خود
339
00:13:22,000 –> 00:13:24,399
مشتری این قابلیت را ندارد بنابراین در
340
00:13:24,399 –> 00:13:26,880
چنین مواردی همه پارامترهای غیر پیش فرض
341
00:13:26,880 –> 00:13:28,639
باید قبل از پارامترهای پیش فرض مشخص
342
00:13:28,639 –> 00:13:30,399
شوند، حتی اگر فکر می کنید که
343
00:13:30,399 –> 00:13:32,079
پارامتر پیش فرض باید جایی در این
344
00:13:32,079 –> 00:13:33,760
بین باشد، اما باید این
345
00:13:33,760 –> 00:13:36,000
ترتیب را دنبال کنید تا طبق
346
00:13:36,000 –> 00:13:37,920
قرارداد نامگذاری یا خط پارامترهایی
347
00:13:37,920 –> 00:13:39,839
که می خواهید قرار دهید پیش نرود. بلکه
348
00:13:39,839 –> 00:13:41,600
باید تصمیم بگیرید چه چیزی را
349
00:13:41,600 –> 00:13:43,839
به عنوان ورودی از کاربر نهایی نیاز دارید
350
00:13:43,839 –> 00:13:46,079
و چه چیزی را میتوانید بهطور پیشفرض انجام دهید،
351
00:13:46,079 –> 00:13:48,720
بنابراین وقتی این را اجرا میکنیم،
352
00:13:48,720 –> 00:13:51,440
بگوییم 10 و 20 توسط a گرفته میشوند و c
353
00:13:51,440 –> 00:13:53,519
و b 100 است. به این دلیل که اگر acb را
354
00:13:53,519 –> 00:13:55,760
چاپ کنیم متغیرها را به ترتیب a b
355
00:13:55,760 –> 00:13:58,240
و c چاپ می کنیم،
356
00:13:58,240 –> 00:14:00,959
دوباره 10 20 و 100 می شود. بنابراین شما می توانید هر
357
00:14:00,959 –> 00:14:02,800
تعداد پارامتر پیش فرض را پس از
358
00:14:02,800 –> 00:14:05,199
تعریف اولین پارامتر پیش فرض داشته باشید.
359
00:14:05,199 –> 00:14:07,440
بنابراین اکنون وقتی این را اجرا می کنیم هیچ مشکلی وجود ندارد
360
00:14:07,440 –> 00:14:09,680
و شما در واقع می توانید پارامترهای دیگر را نیز چاپ کنید
361
00:14:09,680 –> 00:14:12,560
و اکنون می توانیم
362
00:14:12,560 –> 00:14:14,800
راه های دیگری برای ارسال آرگومان ها را بررسی کنیم بنابراین از
363
00:14:14,800 –> 00:14:16,480
این طریق می دانیم که می توانید
364
00:14:16,480 –> 00:14:18,480
ترکیبی داشته باشید و همچنین می توانید از
365
00:14:18,480 –> 00:14:20,720
نظر انعطاف پذیری داشته باشید. فقط
366
00:14:20,720 –> 00:14:22,880
مقادیر عبور برای چیزی که
367
00:14:22,880 –> 00:14:24,959
اجباری است، اغلب در مواردی مورد نیاز است که در
368
00:14:24,959 –> 00:14:26,959
آن فکر میکنید فقط
369
00:14:26,959 –> 00:14:29,360
به دادههای واقعی نیاز دارید که توسط کاربر ارائه
370
00:14:29,360 –> 00:14:31,600
شود که فرآیندی باید روی آن انجام شود
371
00:14:31,600 –> 00:14:33,279
و ممکن است پارامترهایی وجود داشته باشند که تعریف
372
00:14:33,279 –> 00:14:35,920
میکنند که باید به آن متصل شود. mysqldb یا
373
00:14:35,920 –> 00:14:38,480
postgresdb و تمام آن جزئیات
374
00:14:38,480 –> 00:14:40,240
در واقع توسط شما در برنامه پیشفرض میشوند که
375
00:14:40,240 –> 00:14:42,000
احتمالاً از یک
376
00:14:42,000 –> 00:14:44,240
فایل پیکربندی میآیند، بنابراین کاربر
377
00:14:44,240 –> 00:14:46,480
نگران ارسال آن
378
00:14:46,480 –> 00:14:48,560
مقادیر اضافی نیست، کاربر فقط مقادیری را
379
00:14:48,560 –> 00:14:50,800
برای آرگومانهای غیر پیشفرض ارسال میکند.
380
00:14:50,800 –> 00:14:52,560
می تواند روشی مانند این داشته باشد که می گوید
381
00:14:52,560 –> 00:14:55,040
فرمت نام نام خانوادگی و
382
00:14:55,040 –> 00:14:56,880
سپس فرمت آن را تعریف می کنید که باید
383
00:14:56,880 –> 00:14:59,440
نام خانوادگی چاپ شود، بنابراین
384
00:14:59,440 –> 00:15:01,199
اگر بگویید اگر نام باید به
385
00:15:01,199 –> 00:15:03,120
ترتیب معکوس چاپ شود که نام خانوادگی
386
00:15:03,120 –> 00:15:05,040
و سپس نام را چاپ می کنید، در غیر این صورت
387
00:15:05,040 –> 00:15:07,279
چاپ نام و نام خانوادگی و
388
00:15:07,279 –> 00:15:10,240
نام خانوادگی اجباری نیست، بنابراین
389
00:15:10,240 –> 00:15:12,160
باید نام داشته باشید و
390
00:15:12,160 –> 00:15:14,720
نام خانوادگی را می توانید به طور پیش فرض روی هیچکدام قرار دهید. اگر
391
00:15:14,720 –> 00:15:16,880
کاربر هر مقداری را ارائه کند، می توان
392
00:15:16,880 –> 00:15:18,720
از آن استفاده کرد، اما در حال حاضر ما نیستیم، در
393
00:15:18,720 –> 00:15:20,720
غیر این صورت خالی می ماند و
394
00:15:20,720 –> 00:15:22,560
سپس یک پرچم معکوس وجود دارد که می گوید
395
00:15:22,560 –> 00:15:24,399
با چه فرمتی نام می خواهید،
396
00:15:24,399 –> 00:15:26,079
نام خانوادگی یا
397
00:15:26,079 –> 00:15:28,639
نام خانوادگی را ببینید. شما می توانید این تابع را
398
00:15:28,639 –> 00:15:31,440
با گفتن نام قالب چاپی python spark
399
00:15:31,440 –> 00:15:33,519
و معکوس برابر با true است امتحان کنید تا
400
00:15:33,519 –> 00:15:35,759
یک spark python چاپ شود و اگر می گویید
401
00:15:35,759 –> 00:15:38,160
معکوس آن را مشخص نکنید به این معنی است که
402
00:15:38,160 –> 00:15:40,480
باید نام را به ترتیب واقعی چاپ کند
403
00:15:40,480 –> 00:15:42,320
نام اول و به دنبال آن آخرین بنابراین
404
00:15:42,320 –> 00:15:44,800
python و spark را نامگذاری کنید اکنون اشکال دیگری
405
00:15:44,800 –> 00:15:47,120
برای ارسال آرگومان وجود دارد، اگر
406
00:15:47,120 –> 00:15:48,800
بخواهید تابعی بنویسید که می تواند
407
00:15:48,800 –> 00:15:51,279
هر تعداد از مقادیری را که می گویید، کلمه را پاس کنید،
408
00:15:51,279 –> 00:15:53,759
بنابراین شما می توانید هر چیزی را به این
409
00:15:53,759 –> 00:15:55,600
تابع منتقل کنید، پس بیایید بگوییم شما
410
00:15:55,600 –> 00:15:58,240
ترکیبی از آرگومانهای غیر پیشفرض a
411
00:15:58,240 –> 00:16:00,959
و b و به دنبال آن یک نام آرگومان پیشفرض داشته باشید
412
00:16:00,959 –> 00:16:03,680
و سپس فرض کنید
413
00:16:03,680 –> 00:16:06,079
تابعی دارید که امضایی مانند این دارد
414
00:16:06,079 –> 00:16:08,959
و میخواهید نوع c
415
00:16:08,959 –> 00:16:11,279
را چاپ کنید و مقادیر c را نیز در این چاپ کنید.
416
00:16:11,279 –> 00:16:12,959
در مورد ما میخواهیم تابعی تعریف کنیم که
417
00:16:12,959 –> 00:16:15,519
میتواند هر تعداد مقدار را بگیرد، پس چگونه
418
00:16:15,519 –> 00:16:17,759
تأیید کنیم که بگوییم من نمیخواهم
419
00:16:17,759 –> 00:16:19,600
چیزی را در حال حاضر پاس کنم و ببینم چه چیزی
420
00:16:19,600 –> 00:16:22,079
بیرون میآید تا نشان دهد خروجی یک
421
00:16:22,079 –> 00:16:24,639
تاپل است و سپس یک عدد را چاپ میکند. توپل خالی
422
00:16:24,639 –> 00:16:26,560
نیز به این معنی است که نوع
423
00:16:26,560 –> 00:16:28,560
محفظه ای که همه این مقادیر را
424
00:16:28,560 –> 00:16:30,320
در خود جای داده است
425
00:16:30,320 –> 00:16:32,480
به صورت یک تاپل دسته بندی می شود و همچنین در
426
00:16:32,480 –> 00:16:34,959
صورت وجود تمام مقادیر آن جدول را چاپ
427
00:16:34,959 –> 00:16:38,320
می کند، بنابراین اکنون اجازه دهید pass را فراخوانی کنیم. جهان
428
00:16:38,320 –> 00:16:40,560
با مقادیری مانند 10 20 و ببینید چه
429
00:16:40,560 –> 00:16:42,720
اتفاقی می افتد، بنابراین در مورد دوم
430
00:16:42,720 –> 00:16:45,759
10 و 20 را نشان می دهد و اگر من بگویم 10 20
431
00:16:45,759 –> 00:16:49,360
30 40 و سپس بخواهم
432
00:16:49,360 –> 00:16:52,320
10 مقدار دیگر را با انفجار یک لیست پاس کنم تا
433
00:16:52,320 –> 00:16:55,199
از 10 20 30 40 عبور کند، چه اتفاقی می افتد. این مقدار واقعی
434
00:16:55,199 –> 00:16:57,279
است که ما مشخص کرده ایم و سپس ما
435
00:16:57,279 –> 00:16:59,120
als o می خواهید چندین مقدار را
436
00:16:59,120 –> 00:17:01,600
از لیست ارسال کنید تا در یک مکان نگهدار که در این مورد چند تایی است، با هم ترکیب شوند،
437
00:17:01,600 –> 00:17:03,759
438
00:17:03,759 –> 00:17:06,079
بنابراین با استفاده از علامت ستاره می توانید
439
00:17:06,079 –> 00:17:08,240
متغیری را در امضای تابع خود تعریف کنید
440
00:17:08,240 –> 00:17:10,319
که توانایی
441
00:17:10,319 –> 00:17:12,880
گرفتن هر تعداد از مقادیر از 0 تا
442
00:17:12,880 –> 00:17:14,959
بی نهایت i را دارد. در حالت ایدهآل
443
00:17:14,959 –> 00:17:17,439
به ظرفیت حافظه سیستم شما نیز بستگی
444
00:17:17,439 –> 00:17:19,599
دارد تا مقادیر زیادی را در خود نگه دارد، اما در
445
00:17:19,599 –> 00:17:21,599
حالت ایدهآل اگر مطمئن نیستید که همه
446
00:17:21,599 –> 00:17:23,839
مقادیر میتوانند از دنیای خارجی
447
00:17:23,839 –> 00:17:26,000
به عملکرد شما برسند و چه تعداد از
448
00:17:26,000 –> 00:17:27,679
آنها میتوانند باشد، میتوانید تعریف کنید.
449
00:17:27,679 –> 00:17:29,679
تابعی مانند این و در حالی که به این تابع نگاه می کنید،
450
00:17:29,679 –> 00:17:31,440
آیا فکر می کنید
451
00:17:31,440 –> 00:17:33,520
چنین تابعی در پایتون وجود دارد که ممکن
452
00:17:33,520 –> 00:17:35,440
است امضایی مانند این داشته باشد،
453
00:17:35,440 –> 00:17:37,600
بنابراین print یکی از این تابع ها است که
454
00:17:37,600 –> 00:17:39,919
دارای امضای منعطف است و اکنون
455
00:17:39,919 –> 00:17:42,640
به روش دیگری برای ارسال آرگومان ها می
456
00:17:42,640 –> 00:17:44,559
رسیم و گسترش می دهیم. علاوه بر این، میتواند امضایی نیز وجود داشته
457
00:17:44,559 –> 00:17:46,960
باشد که میتواند به شما کمک کند
458
00:17:46,960 –> 00:17:49,360
هر تعداد جفت ارزش کلیدی را ارسال کنید، بنابراین در
459
00:17:49,360 –> 00:17:50,880
امضای قبلی که
460
00:17:50,880 –> 00:17:54,160
در جهان گذشته پیادهسازی کردهایم، اگر
461
00:17:54,160 –> 00:17:57,280
بگوییم b و c و سپس اگر
462
00:17:57,280 –> 00:18:00,640
ستاره b را بگویم و d e f
463
00:18:00,640 –> 00:18:03,440
یا هر چیز دیگری را مشخص نکنم اگر d و e را مشخص نکنیم
464
00:18:03,440 –> 00:18:06,320
و سعی کنیم این را اجرا کنیم، می گوید
465
00:18:06,320 –> 00:18:09,039
که آرگومان کلمه کلیدی غیرمنتظره d دریافت کرده است، بنابراین حتی
466
00:18:09,039 –> 00:18:11,120
اگر ما هستیم ارسال مقادیر اضافی
467
00:18:11,120 –> 00:18:13,679
برای 40 و 50 که
468
00:18:13,679 –> 00:18:16,400
توسط p پذیرفته نمی شوند، دلیل آن این است
469
00:18:16,400 –> 00:18:18,880
که این مقادیر در نماد کلمه کلیدی تجزیه می شوند و
470
00:18:18,880 –> 00:18:20,480
امضای تابع به
471
00:18:20,480 –> 00:18:22,880
اندازه کافی انعطاف پذیر نیست که دارای جفت مقادیر کلیدی باشد
472
00:18:22,880 –> 00:18:25,679
که در آن کلیدها حتی اگر
473
00:18:25,679 –> 00:18:27,280
به عنوان بخشی از آن تعریف نشده باشند. امضای تابع
474
00:18:27,280 –> 00:18:29,520
را می توان در این مورد پذیرفت
475
00:18:29,520 –> 00:18:31,280
، فقط کلیدهایی را می پذیریم
476
00:18:31,280 –> 00:18:34,640
که مقادیر a b c یا p d e f دارند
477
00:18:34,640 –> 00:18:37,120
در این مورد قابل قبول نیستند، بنابراین چگونه می
478
00:18:37,120 –> 00:18:39,200
توانیم به چنین امضایی برسیم اگر
479
00:18:39,200 –> 00:18:42,000
یک آرگومان دیگر بگوییم که می تواند بگوید.
480
00:18:42,000 –> 00:18:44,720
هر نامی به آن بدهید معمولاً kw x
481
00:18:44,720 –> 00:18:47,039
نام ترجیحی برای چنین آرگومان هایی در
482
00:18:47,039 –> 00:18:49,200
امضای تابع است که می تواند هر
483
00:18:49,200 –> 00:18:52,080
جفت مقدار کلیدی را بگیرد، بنابراین اگر b و c را
484
00:18:52,080 –> 00:18:54,160
با مقادیر وارد کنید، این
485
00:18:54,160 –> 00:18:56,320
پارامترها از قبل تعیین شده را لغو می کنند،
486
00:18:56,320 –> 00:18:58,080
اما اگر p هر جفت مقدار کلید دیگری
487
00:18:58,080 –> 00:19:00,080
که در آن کلیدها بخشی از
488
00:19:00,080 –> 00:19:02,640
امضای تابع نیستند، همه آنها
489
00:19:02,640 –> 00:19:05,840
به متغیر kwr نگاشت می شوند و اگر آن را چاپ
490
00:19:05,840 –> 00:19:08,320
کنیم تمام آن جزئیات را به ما نشان می دهد،
491
00:19:08,320 –> 00:19:11,360
بنابراین در این مورد 10 20 30 مقدار abc را چاپ می کند
492
00:19:11,360 –> 00:19:14,880
و ما با ارسال c b d و e
493
00:19:14,880 –> 00:19:18,559
d و e به kw x نگاشت میشود و آنها را نشان
494
00:19:18,559 –> 00:19:20,559
میدهد زیرا ما هیچ
495
00:19:20,559 –> 00:19:22,400
مقداری را که در غیر این صورت میتوانست
496
00:19:22,400 –> 00:19:24,960
با p
497
00:19:24,960 –> 00:19:26,559
مرتبط باشد ارسال نکردهایم، هیچ مقدار مربوط به b را نمیبینیم در واقع ما
498
00:19:26,559 –> 00:19:29,200
حتی p را چاپ نمیکنیم. اگر p را چاپ کنیم
499
00:19:29,200 –> 00:19:31,440
، می بینید که اکنون هیچ مقداری ندارد،
500
00:19:31,440 –> 00:19:34,080
چگونه مقادیری را در چنین توابعی
501
00:19:34,080 –> 00:19:36,080
که ترکیبی از همه این نوع
502
00:19:36,080 –> 00:19:38,080
پارامترها هستند، ارسال کنیم، بنابراین پارامترهای غیر پیش فرض
503
00:19:38,080 –> 00:19:40,720
داشته باشیم،
504
00:19:40,720 –> 00:19:43,120
سپس پارامتر پیش فرض را داریم، سپس یک پارامتر داریم.
505
00:19:43,120 –> 00:19:45,440
پارامتری برای گرفتن هر تعداد از مقادیر
506
00:19:45,440 –> 00:19:48,160
و در نهایت پارامتری برای گرفتن هر شکلی
507
00:19:48,160 –> 00:19:50,960
از جفتهای مقادیر کلیدی، ما در
508
00:19:50,960 –> 00:19:52,880
اینجا یک مثال داریم، بنابراین پارامتر غیر پیشفرض
509
00:19:52,880 –> 00:19:55,120
یک و دو پارامتر پیشفرض
510
00:19:55,120 –> 00:19:57,200
یک و دو پارامتر برای گرفتن هر
511
00:19:57,200 –> 00:19:59,440
تعداد مقادیر داریم و سپس پارامتر ter برای گرفتن هر
512
00:19:59,440 –> 00:20:01,440
تعداد جفت مقادیر کلید، بنابراین من
513
00:20:01,440 –> 00:20:04,000
تابع نام فرمت را
514
00:20:04,000 –> 00:20:06,799
در اینجا نظر خواهم داد و ما master را با تمام
515
00:20:06,799 –> 00:20:09,120
516
00:20:09,120 –> 00:20:12,080
این مقادیر فراخوانی میکنیم
517
00:20:12,080 –> 00:20:15,120
. ببینید
518
00:20:15,120 –> 00:20:19,120
در این مورد چه اتفاقی میافتد، بنابراین 10 20 50 90
519
00:20:19,120 –> 00:20:20,880
به آرگومانهای غیرپیشفرض نگاشت میشوند و
520
00:20:20,880 –> 00:20:24,240
هر چیزی بعد از 90
521
00:20:24,240 –> 00:20:27,440
که 30 60 70 است به آرگومانهای غیر پیشفرض نگاشت میشوند، زیرا اینها مقادیر ساده هستند
522
00:20:27,440 –> 00:20:29,520
و هیچ جای نگهداری برای گرفتن
523
00:20:29,520 –> 00:20:31,919
این مقادیر وجود ندارد، همه اینها به آرگومان args نگاشت میشوند.
524
00:20:31,919 –> 00:20:34,159
زیرا میتواند هر
525
00:20:34,159 –> 00:20:37,120
تعداد از آرگومان فهرست دلخواه
526
00:20:37,120 –> 00:20:38,960
و سپس آرگومان جفتهای ارزش کلید دلخواه
527
00:20:38,960 –> 00:20:40,720
را بگیرد، بنابراین این نامی است که
528
00:20:40,720 –> 00:20:43,440
اغلب برای آنها استفاده میکنیم، بنابراین 30 60 70
529
00:20:43,440 –> 00:20:45,840
به آرگها نگاشت میشوند و تایید میشود،
530
00:20:45,840 –> 00:20:47,760
زیرا در دومین اسپرینت آخر
531
00:20:47,760 –> 00:20:51,120
ما آرگ 30 داریم. 60 70 و هر چیزی بعد از
532
00:20:51,120 –> 00:20:53,440
آن همه جفتهای ارزش کلیدی که
533
00:20:53,440 –> 00:20:56,400
به kwrs نگاشت میشوند، حالا اگر یکی
534
00:20:56,400 –> 00:20:58,799
از جفتهای مقدار کلید را تغییر دهیم به d برابر
535
00:20:58,799 –> 00:21:01,120
با 3 است و d را به 30 پاس میدهیم، بیایید
536
00:21:01,120 –> 00:21:03,760
تأثیر را ببینیم، بنابراین میگوید master got
537
00:21:03,760 –> 00:21:05,919
مو مقادیر ltiple برای آرگومان d
538
00:21:05,919 –> 00:21:08,080
دلیل اولین علامت گذاری است
539
00:21:08,080 –> 00:21:09,760
که دنبال می شود و نگاشت مقادیر به
540
00:21:09,760 –> 00:21:11,919
آرگومان ها نماد موقعیتی است بنابراین
541
00:21:11,919 –> 00:21:14,400
از چپ شروع می شود و می گویند 10 20
542
00:21:14,400 –> 00:21:16,000
قطعاً به آرگومان های غیر پیش فرض نگاشت شده
543
00:21:16,000 –> 00:21:18,960
است 50 map به df1 و 90 به
544
00:21:18,960 –> 00:21:21,520
نگاشت می شوند. d اما وقتی
545
00:21:21,520 –> 00:21:23,520
آرگومانها را در انتهای fag ارسال میکرد، همچنین
546
00:21:23,520 –> 00:21:25,679
مشاهده کرد که d بهعنوان یک جفت مقدار کلیدی نیز مشخص شده است،
547
00:21:25,679 –> 00:21:27,919
بنابراین در این مورد
548
00:21:27,919 –> 00:21:30,080
این را بهعنوان یک خطا نشان میدهد، بنابراین اگر
549
00:21:30,080 –> 00:21:32,720
باید هر یک از جفتهای مقادیر کلیدی
550
00:21:32,720 –> 00:21:35,360
را ارسال کنید برای شروع در نقطه ای که
551
00:21:35,360 –> 00:21:38,400
چندین مقدار برای ارسال ندارید،
552
00:21:38,400 –> 00:21:40,559
بنابراین در این مورد بعد از آرگومان های غیر پیش فرض
553
00:21:40,559 –> 00:21:42,559
می توانید نماد کلمه کلیدی را
554
00:21:42,559 –> 00:21:45,280
در اینجا دنبال کنید و بگویید df 1 برابر با
555
00:21:45,280 –> 00:21:48,240
30 است و d قبلاً مشخص شده است، بنابراین اکنون
556
00:21:48,240 –> 00:21:50,880
که این را اجرا می کنیم df2 در حال چاپ است
557
00:21:50,880 –> 00:21:53,919
و ما df2 را مشخص نکردهایم که
558
00:21:53,919 –> 00:21:56,400
باید مقدار پیشفرض خود را بگیرد، بنابراین در این
559
00:21:56,400 –> 00:22:00,159
مورد 10 20 33 3 به عنوان مقدار پیشفرض برای
560
00:22:00,159 –> 00:22:02,640
df2 است و در این حالت شکایتی نمیبینیم که
561
00:22:02,640 –> 00:22:05,280
t برابر با 3 است.
562
00:22:05,280 –> 00:22:07,200
هیچ شکایتی نمی بینم زیرا تاپل این کار را می کند
563
00:22:07,200 –> 00:22:09,360
564
00:22:09,360 –> 00:22:11,600
565
00:22:11,600 –> 00:22:14,000
تا زمانی که
566
00:22:14,000 –> 00:22:16,159
کلیدها بخشی از امضای تابع نباشند، همه
567
00:22:16,159 –> 00:22:18,240
568
00:22:18,240 –> 00:22:20,240
569
00:22:20,240 –> 00:22:22,080
جفتهای مقادیر کلیدی را با آرگومانهای چند مقداری خالی کنید. تابع را
570
00:22:22,080 –> 00:22:23,840
امضا می کند، بنابراین از نمادهای تابعی پیروی
571
00:22:23,840 –> 00:22:26,640
می کند و به دنبال آن مقادیر متعددی
572
00:22:26,640 –> 00:22:29,120
برای تخصیص به آرگومان فهرست دلخواه
573
00:22:29,120 –> 00:22:31,120
و سپس جفت مقادیر کلید دنبال می شود
574
00:22:31,120 –> 00:22:32,720
که در آن هر یک از کلیدهایی که
575
00:22:32