 The next one is this two stars. It's also an unpacking operator, but this time we're accepting a key value pair, okay? So we insert data to the function call you must pass in the key value pair. And so let's do another one. I'll keep this here. We'll do another one below it. So we'll just put total here. This time we'll put the two stars and it's commonly used the word KWRX, okay? It's keyword arguments. That's what it means. So again, you can put it here. You can type in the keywords arguments. You can see what's like. Again, I'm not doing anything here yet. I'm just returned nothing. And so you can see what it looks like. So you can have an idea what to, how to proceed. So for example, if I save that, if I can run it now, and if I go total. So notice I did not pass anything to it. I passed nothing, it's blank. So you can see that it's a dictionary, right? Key value pairs always in dictionary. Whereas the other one is a tuple, okay? So dictionary has keys and values. So that means when I call my function, I pass in the key value, but not in the colon like A colon 10, not like that though. It'll be A equal 10. If it's A is 10, B is 20, okay? So those are my key value pair. And it will be converted to a dictionary. And the, this is your key and this is the value. We'll be separated with this colon instead. So you get a dictionary. And as you can see, you have to pass in this fashion. If I don't do that, however, if I just put like, you know, 10 and 20, you see it again error, okay? Because it doesn't have a key. So you must have a key value pair for that to work. So in this way, again, you can pass any size of key value pair you want. You're not limited to only two or three or zero. It's unlimited. As long as you meet that key value pair all the way. So then if you notice again, if I do this, I can access this KWRG as a dictionary. Then if you remember dictionary, you can extract the keys. You can also extract the values out of it too, right? So then down here, if you want to grab the key only, then you remember you can do something like for a key and the KWRGS. If I do that, I'm gonna get all the keys. Okay, so if I run it now, you're gonna see that I get all the keys in this case, it'll be A and B right here. Then if you want to get the values, you can also do that as well. So let me do a separate one here for the values. V and KWRGS, I want the values. So you call the values function and I'll return all the values instead of the keys. Right, again, just how dictionaries work. If you remember dictionary has these two options here. And you iterate through a dictionary. So I get my keys and my values, right? And then if you want to do the summation, then you really only care about the values. So you can print the sum of all these out, right? So again, if I do T is zero, I want just the values. Then you can say T plus equals value and return T. And that's my total. In this case, I'm doing numbers only, right? So I get my total, which is 30 here and so on. So if you pass more numbers, right, there it is. This one here, I guess it lets you do a list. I mean, a key value pair, unlimited number of elements. Okay, so how is this important and how can you use this in a class? It's a little bit tricky somehow, but I wanna show you one example how you can use this in a class. Okay, so let's see, let me turn this off. Control-1, turn that off. So let's say we go back to the class pet, right? We have a constructor itself and then here, output the KWA-RGS, right? And let's say that my pet class, I have maybe just two, right? Self underscore age. I will set default to zero. Self underscore name is equal to, I'll put a default name here again, Milo, okay? So my pet, yeah, just look at there. That's my class. So that means if I don't provide any arguments, then the age and the name will have those two values. If I provide something, right? Either the age or the name, you can check it. You can check to see if this has any arguments. I mean, any keys, right? The key should be the age and the name. If it matches those, then you can reassign the age two and the name to those numbers. So you can say something like this. So if there is a key arguments, right? I mean, if that is not empty, then you can check and you can look for the key. So for key and the KWA-RGS, you can check the key. We just did that, right? The key here. And if you say, if the key is equal to age, if that's the case, then I'm going to reassign self dot age is equal to the value of this key. How do you get the value? Well, this is the key, this is the arguments. So it's basically KWA-RGS of the key, right? And that will give you the value of that key, which is age. And if that's all it has, then it'll keep the name as default. If age is found in here, it's going to overwrite zero with whatever the age that passed to it, right? So if I save this and run this code so that my function is now exist, my class is there. If I say pet is equal to pet, right? I passed no arguments to it. You will see that pet has the default arguments or data zero for the age and name is Milo because I did not pass any arguments to it, right? If I do it again, and now if I pass only the age is 10, right? I passed only the age, I did not pass the name, but you'll see that now the age is set to 10 and the name is still kept Milo, okay? If I do both of them, name is Odis and then now both are replaced or overwritten, right? Oh, I didn't do the other one here. Yeah, I didn't match the other name. So it's still Milo. So what I should have done was I also need to check for the age, I mean the name. So you can do here if the key is name then this would be name as well. So now it should work, right? So if I go both of them and you'll see that both should be 10 and Odis. There you go, right? So that's one scenario where you can use the keyword arguments in your class. So you can instantiate objects using this pattern. But again, you have to either use it this way or the arguments way. If you use the argument method here like this, it's a little bit hard to do because this one doesn't have a key value pair. So because it's in this way, the order is still important. So if I pass only like the age and the name, I have to put in the correct order anyway and I have to extract that and then assign that to the correct name and age and so on. So that is a little bit tricky or not as useful as the key value pair. However, again, it depends how you use it in your class. You have to instruct users how to pass data to your functions, to your method, okay? So yeah, that's one way to do to write this constructor. Of course, you can pass more arguments if you want. I'm just put here for everything here. You could say, you know, breed, right? That's required, okay? And that's, of course, you can put here self-breed. It's still gonna be that. So because that is the first argument, that is required, right? You must put that in there first and then the rest will be just like that, okay? Otherwise you won't work either. So again, if I do like that, it's not gonna work because breed is not found. If I do, you know, poodle, then that's fine because I provided the argument for that breed and the rest here is again optional. So here we go and there it is.