maroph icon

Python3: usage of *args and **kwargs

maroph | PRO | 12/05/20 11:51:49 AM UTC (Edited) | 0 ⭐ | 318 👁️ | Never ⏰ | []
Python |

3.36 KB

|

None

|

0 👍

/

0 👎

#
# This script is inspired by the following post:
# *args and **kwargs in Python explained
# https://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/
#
# The names args and kwargs are arbitrary but usually used.
# Important are the * and ** syntax.
#
# *args is used to send a non-keyworded variable length argument list to the function
#     The arguments are passed as a list.
# **kwargs is used to pass keyworded variable length of arguments to a function.
#     The arguments are passed as a dictionary
def func_arg_args_kwargs(arg=None, *args, **kwargs):
    print('arg    :', arg)
    #
    if args is None:
        print('args   : None - SHOULD NEVER HAPPEN')
    else:
        if len(args) == 0:
            print('args   : empty list')
        else:
            for a in args:
                print('args   :', a)
    #
    if kwargs is None:
        print('kwargs : None - SHOULD NEVER HAPPEN')
    else:
        if len(kwargs) == 0:
            print('kwargs : empty dictionary')
        else:
            for key, value in kwargs.items():
                print("kwargs : {0} == {1}".format(key, value))
 
 
def func_args(*args):
    if args is None:
        print('args   : None - SHOULD NEVER HAPPEN')
    else:
        if len(args) == 0:
            print('args   : empty list')
        else:
            for a in args:
                print('args   :', a)
 
 
def func_kwargs(**kwargs):
    if kwargs is None:
        print('kwargs : None - SHOULD NEVER HAPPEN')
    else:
        if len(kwargs) == 0:
            print('kwargs : empty dictionary')
        else:
            for key, value in kwargs.items():
                print("kwargs : {0} == {1}".format(key, value))
#
#
# Some sample calls to show the behavior
#
#
print('func_arg_args_kwargs(1)')
func_arg_args_kwargs(1)
print()
#
# first with *args
_args = ("two", 3, 5)
print('func_arg_args_kwargs(*_args)')
func_arg_args_kwargs(*_args)
print()
#
#
# now with **kwargs:
_kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
print('func_arg_args_kwargs(**_kwargs)')
func_arg_args_kwargs(**_kwargs)
print()
#
_fargs = 1
_args = (2, 4, 8)
_kwargs = {"arg3": 8, "arg2": 4, "arg1": 2}
print('func_arg_args_kwargs(_fargs, _args, _kwargs)')
func_arg_args_kwargs(_fargs, _args, _kwargs)
print()
print('func_arg_args_kwargs(_fargs, *_args, **_kwargs)')
func_arg_args_kwargs(_fargs, *_args, **_kwargs)
print()
print('func_arg_args_kwargs(_args, _kwargs)')
func_arg_args_kwargs(_args, _kwargs)
print()
print('func_arg_args_kwargs(*_args, **_kwargs)')
func_arg_args_kwargs(*_args, **_kwargs)
print()
print('func_arg_args_kwargs(_kwargs)')
func_arg_args_kwargs(_kwargs)
print()
print('func_arg_args_kwargs(**_kwargs)')
func_arg_args_kwargs(**_kwargs)
print()
print('func_arg_args_kwargs(kwargs=_kwargs)')
func_arg_args_kwargs(kwargs=_kwargs)
print()
print('func_arg_args_kwargs(_fargs, _args)')
func_arg_args_kwargs(_fargs, _args)
print()
print('func_arg_args_kwargs(_fargs)')
func_arg_args_kwargs(_fargs)
print()
print('func_arg_args_kwargs(1, 2, 3)')
func_arg_args_kwargs(1, 2, 3)
print()
print('func_args()')
func_args()
print()
_args = (1, 2, 3)
print('func_args(*args)')
func_args(*_args)
print()
print('func_args()')
func_args()
print()
_kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
print('func_kwargs(**_kwargs)')
func_kwargs(**_kwargs)
print()
 

Comments