1 00:00:00,790 --> 00:00:04,570 Let's talk about something called arguments and keyword arguments. 2 00:00:04,570 --> 00:00:11,250 I mean we've already seen that before right with a function we actually have this special characters 3 00:00:11,250 --> 00:00:18,530 that we can use called ARGs and star star key word args. 4 00:00:18,580 --> 00:00:21,380 How can we use these. 5 00:00:21,390 --> 00:00:23,240 Well let's have a look. 6 00:00:23,400 --> 00:00:31,070 Let's try and have a function let's say define and we'll call this a super func for a super function 7 00:00:31,670 --> 00:00:38,140 that receives some sort of arguments and these arguments that we're going to receive. 8 00:00:38,150 --> 00:00:44,900 And remember although I'm calling these args this itself is a parameter remember. 9 00:00:44,900 --> 00:00:53,480 But let's say that we want to just return some of the arguments and you might be wondering where. 10 00:00:53,540 --> 00:00:59,080 Some don't we have to define that function well some actually exists in Python as you can see over here. 11 00:00:59,510 --> 00:01:02,770 So we can just return the sum of the arguments. 12 00:01:03,110 --> 00:01:04,610 So let's try this. 13 00:01:04,610 --> 00:01:08,890 Let's say super func and give it arguments. 14 00:01:08,880 --> 00:01:11,540 One two three four five. 15 00:01:11,560 --> 00:01:12,520 If I click Run 16 00:01:16,930 --> 00:01:17,780 I get an error. 17 00:01:18,100 --> 00:01:22,590 Super func takes 1 positional argument but 5 where. 18 00:01:22,590 --> 00:01:25,150 Give it and that makes sense right. 19 00:01:25,150 --> 00:01:32,990 Like I only have one parameter here which is a positional argument that it accepts and I'm trying to 20 00:01:32,990 --> 00:01:34,260 sum this. 21 00:01:34,310 --> 00:01:40,550 So it only receives one but I'm giving it to all these things that it doesn't know but and this is where 22 00:01:40,550 --> 00:01:51,500 we can use something like this by adding a star to here we're saying hey this can accept any number 23 00:01:51,680 --> 00:01:56,610 of positional arguments like this as many as I want. 24 00:01:56,810 --> 00:01:58,840 As a matter of fact let's print this out. 25 00:01:58,880 --> 00:02:12,700 If I do print star ARGs and we run this function we see that the print star args gives us 1 2 3 4 5. 26 00:02:12,790 --> 00:02:17,560 These are all the parameters or the arguments that we get. 27 00:02:17,560 --> 00:02:26,290 And if I actually remove the star here and click Run look at that I actually get this as a couple. 28 00:02:26,390 --> 00:02:33,260 So args inside of this function is a topple of arguments that I give it. 29 00:02:33,290 --> 00:02:34,770 One two three four five. 30 00:02:34,790 --> 00:02:36,730 So some of the topple. 31 00:02:36,740 --> 00:02:40,670 One two three four five is going to give us the right answer. 32 00:02:40,670 --> 00:02:42,890 It's going to print for us 33 00:02:46,380 --> 00:02:51,650 the answer 15 very very cool. 34 00:02:51,700 --> 00:03:00,490 So this way we can extend and use our star args to have enough a function that can accept any number 35 00:03:00,790 --> 00:03:03,390 of arguments. 36 00:03:03,400 --> 00:03:12,590 So what is this one now well this one allows us to use keyword arguments for example let's say I have 37 00:03:13,010 --> 00:03:17,990 the star star key word args like this. 38 00:03:17,990 --> 00:03:20,810 And by the way this can technically be anything. 39 00:03:20,810 --> 00:03:26,370 So this is a variable that we're creating so I can name it who if I wanted to. 40 00:03:26,450 --> 00:03:34,520 But the standard is to name it ARGs and keyword args because other developers are using it this way 41 00:03:34,530 --> 00:03:39,830 and it's just the way it's done in the Python community now with the keyword arcs as you might have 42 00:03:39,830 --> 00:03:40,600 guessed. 43 00:03:40,670 --> 00:03:55,440 I can add keywords like num 1 equals 5 and then num two equals 10 so that if I print the key word ARGs 44 00:03:55,620 --> 00:04:05,180 and I click Run I get a dictionary of num one equals 2 Five and num two equals to 10. 45 00:04:05,390 --> 00:04:19,700 So I can actually do something like some plus sum of items in the keyword ARGs and grab the values right. 46 00:04:19,740 --> 00:04:30,220 We've seen that before and let's actually grab this and do a for loop and say items in keyword arcs 47 00:04:30,850 --> 00:04:31,990 dot values. 48 00:04:31,990 --> 00:04:38,840 Remember to grab the values over here and in here just add up the totals. 49 00:04:38,900 --> 00:04:52,150 So let's say that in here total equals or plus equals items and will add a total in here. 50 00:04:52,200 --> 00:04:55,010 That is initially zero. 51 00:04:55,620 --> 00:05:12,120 So that sum will be some args plus total if I run this I get 30 which looks about right now. 52 00:05:12,170 --> 00:05:14,150 This does look a little confusing. 53 00:05:14,240 --> 00:05:15,960 So let's go over it. 54 00:05:16,040 --> 00:05:23,840 We have the star args which allow us to grab these positional arguments and just some everything. 55 00:05:23,840 --> 00:05:31,730 And we also have keyword arcs which allow us to grab any number of keyword arguments and get a dictionary 56 00:05:32,150 --> 00:05:38,060 which comes as keyword arcs and then use them however we want in our case we're looping over all the 57 00:05:38,060 --> 00:05:46,880 values so items in keyword arc values and then I'm just going to total all those items have a total 58 00:05:46,970 --> 00:05:50,390 and just return the sum. 59 00:05:50,440 --> 00:05:58,120 Now this is again extremely useful because our super fund can now take as many arguments as many positional 60 00:05:58,300 --> 00:06:02,310 and keyword arguments as we want now. 61 00:06:02,320 --> 00:06:03,700 One final thing. 62 00:06:03,700 --> 00:06:09,590 There is a rule of the ordering that we can do of our parameters here. 63 00:06:09,700 --> 00:06:10,940 Right. 64 00:06:10,960 --> 00:06:12,020 So the order. 65 00:06:12,050 --> 00:06:24,690 The rule is this first in our parameters we have well our actual programs then we can do star arcs then 66 00:06:25,290 --> 00:06:35,400 default parameters then star star keyword parks. 67 00:06:35,570 --> 00:06:36,890 Let me show you what I mean. 68 00:06:37,160 --> 00:06:43,280 If we want to define this function we want to make sure that if we give it a parameter of let's say 69 00:06:43,730 --> 00:06:54,340 name that should come before Star arcs and if we have default parameters that should usually come after 70 00:06:54,460 --> 00:06:54,810 arcs. 71 00:06:54,820 --> 00:06:56,320 But before keyword arcs. 72 00:06:56,320 --> 00:07:07,090 So if I do let's say i equals high and make sure we add a comma here we now have following the rule. 73 00:07:07,090 --> 00:07:12,310 And by the way you would never actually write a function like this because well frankly you look super 74 00:07:12,310 --> 00:07:12,960 confusing. 75 00:07:12,970 --> 00:07:18,850 Usually you're only using two of these or maybe just one of these. 76 00:07:19,060 --> 00:07:24,190 But this way I can call this function with name Andy. 77 00:07:24,640 --> 00:07:26,270 Then my args. 78 00:07:26,530 --> 00:07:34,150 Then my default parameter which will be I equals to high which lets say we don't even pass in and then 79 00:07:34,150 --> 00:07:41,990 we have this so if we run here this still works we are just not using name. 80 00:07:42,050 --> 00:07:50,460 And I bet you see that I'm following the rule of Paramus args default parameters and then keyword arcs. 81 00:07:50,690 --> 00:07:51,140 All right. 82 00:07:51,150 --> 00:07:53,440 Hopefully your head doesn't hurt too much after this one. 83 00:07:53,580 --> 00:07:55,810 Take a break and I'll see you in the next one. 84 00:07:55,830 --> 00:07:56,040 Bobby.