# Using **kwargs in Python

I am not sure if this question has been asked before, but I was unable to find the answer. My question focuses primarily on Python, but it might be applicable to other languages too.

Consider the following function which takes 5 arguments and prints them:

def f(a,b,c,d,e):
for i in a,b,c,d,e:print(i)          # 46 bytes


This function, if called as such:

f('1','2','3','4','5')


Outputs:

1
2
3
4
5



The same functionalty can also be achieved with a lower byte count:

def f(**x):
for i in 'abcde':print(x[i])         # 41 bytes


However, if I want to generate the same output, I must now call the function as follows:

f(a='1',b='2',c='3',d='4',e='5')


My question now: Is the requirement for keyworded arguments an appropriate way to reduce the byte count?

I am asking this, because it helped me to save some significant bytes in the challenge Hidden sentences in the license plates.