# \*args and\*\*kwargs

### args

\
The special syntax \*args in function definitions in python is used to pass a variable number of arguments to a function. It is used to pass a non-keyworded, variable-length argument list.

* The syntax is to use the symbol \* to take in a variable number of arguments; by convention, it is often used with the word args.
* What _args allows you to do is take in more arguments than the number of formal arguments that you previously defined. With_ args, any number of extra arguments can be tacked on to your current formal parameters (including zero extra arguments).
* For example : we want to make a multiply function that takes any number of arguments and able to multiply them all together. It can be done using \*args.
* Using the _, the variable that we associate with the_ becomes an iterable meaning you can do things like iterate over it, run some higher order functions such as map and filter, etc.

> Example&#x20;

```python
def myFun(*argv):  
    for arg in argv:  
        print(arg,end=',') 
    
myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')

Out: Hello,Welcome,to,GeeksforGeeks

=========================================================
def myFun(arg1, *argv): 
    print ("First argument :", arg1) 
    for arg in argv: 
        print("Next argument through *argv :", arg) 
        
myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')


Out: First argument : Hello
     Next argument through *argv : Welcome
     Next argument through *argv : to
     Next argument through *argv : GeeksforGeeks
==========================================================     
     
 def myFun(arg1, arg2, arg3): 
    print("arg1:", arg1) 
    print("arg2:", arg2) 
    print("arg3:", arg3) 
      
# Now we can use *args or **kwargs to 
# pass arguments to this function :  
args = ("Geeks", "for", "Geeks") 
myFun(*args)

Out: arg1: Geeks
     arg2: for
     arg3: Geeks
```

### kwargs

\
The special syntax \*\*kwargs in function definitions in python is used to pass a keyworded, variable-length argument list. We use the name kwargs with the double star. The reason is because the double star allows us to pass through keyword arguments (and any number of them).

* A keyword argument is where you provide a name to the variable as you pass it into the function.
* One can think of the kwargs as being a dictionary that maps each keyword to the value that we pass alongside it.
* That is why when we iterate over the kwargs there doesn’t seem to be any order in which they were printed out.

**kwargs 允许你将不定长度的键值对, 作为参数传递给一个函数。 如果你想要在一个函数里处理带名字的参数, 你应该使用kwargs**

```python
def greet_me(**kwargs):
    for key, value in kwargs.items():
        print("{0}:{1}".format(key, value))

greet_me(name='Hello',age='25',residence='France')


Out:name:Hello
    age:25
    residence:France

===================================================
def myFun(arg1, **kwargs):  
    for key, value in kwargs.items(): 
        print ("%s == %s" %(key, value)) 
myFun("Hi", first ='Geeks', mid ='for', last='Geeks')

Out:
    first == Geeks
    mid == for
    last == Geeks
====================================================



```



