Python args kwargs and partial

LORY
1 min readJan 2, 2021

--

It’s simple to pass dynamic number of (key-value) parameters when calling function , or “reduce” number of parameters by pre-pass in a fixed value to make it another function

pass N parameters

def args1(first, *mid, last):
print(f'first={first}')
for m in mid:
print(f'mid parameter: {m}')
print(f'last={last}')
def args2(first, *rest):
print(f'first={first}')
for m in rest:
print(f'other parameter: {m}')
if __name__ == "__main__":
args1('a',2,3,4,5,last='b')
args2('a',2,'3',4,'5')
Output:
first=a
mid parameter: 2
mid parameter: 3
mid parameter: 4
mid parameter: 5
last=b
first=a
other parameter: 2
other parameter: 3
other parameter: 4
other parameter: 5

enforcing caller pass named parameter

def enforce_arg(*, first, last):
print(f'first={first}, last={last}')
if __name__ == "__main__":
#enforce_arg(1,2) # error
#enforce_arg(1,last=2) # error
#enforce_arg(first=1,last=2)

use kwargs pass N key-value parameters

def kwargs1(*args, **kwargs):
print(f'{args}')
print(f'{kwargs}')
if __name__ == "__main__":
kwargs1(1,2,3,a=4,b=5)
# (1, 2, 3)
# {'a': 4, 'b': 5}

using partial to “reduce” the number of parameters need pass in and reuse existing function create another function

def add(a,b):
return a+b
if __name__ == "__main__":
print(add(1,2))
add_1 = partial(add, 1)
print(add_1(2))
3
3

--

--

LORY
LORY

Written by LORY

A channel which focusing on developer growth and self improvement

No responses yet