maroph

Python3: usage of *args and **kwargs

Mar 16th, 2017 (edited)
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.36 KB | None | 0 0
  1. #
  2. # This script is inspired by the following post:
  3. # *args and **kwargs in Python explained
  4. # https://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/
  5. #
  6. # The names args and kwargs are arbitrary but usually used.
  7. # Important are the * and ** syntax.
  8. #
  9. # *args is used to send a non-keyworded variable length argument list to the function
  10. #     The arguments are passed as a list.
  11. # **kwargs is used to pass keyworded variable length of arguments to a function.
  12. #     The arguments are passed as a dictionary
  13. def func_arg_args_kwargs(arg=None, *args, **kwargs):
  14.     print('arg    :', arg)
  15.     #
  16.     if args is None:
  17.         print('args   : None - SHOULD NEVER HAPPEN')
  18.     else:
  19.         if len(args) == 0:
  20.             print('args   : empty list')
  21.         else:
  22.             for a in args:
  23.                 print('args   :', a)
  24.     #
  25.     if kwargs is None:
  26.         print('kwargs : None - SHOULD NEVER HAPPEN')
  27.     else:
  28.         if len(kwargs) == 0:
  29.             print('kwargs : empty dictionary')
  30.         else:
  31.             for key, value in kwargs.items():
  32.                 print("kwargs : {0} == {1}".format(key, value))
  33.  
  34.  
  35. def func_args(*args):
  36.     if args is None:
  37.         print('args   : None - SHOULD NEVER HAPPEN')
  38.     else:
  39.         if len(args) == 0:
  40.             print('args   : empty list')
  41.         else:
  42.             for a in args:
  43.                 print('args   :', a)
  44.  
  45.  
  46. def func_kwargs(**kwargs):
  47.     if kwargs is None:
  48.         print('kwargs : None - SHOULD NEVER HAPPEN')
  49.     else:
  50.         if len(kwargs) == 0:
  51.             print('kwargs : empty dictionary')
  52.         else:
  53.             for key, value in kwargs.items():
  54.                 print("kwargs : {0} == {1}".format(key, value))
  55. #
  56. #
  57. # Some sample calls to show the behavior
  58. #
  59. #
  60. print('func_arg_args_kwargs(1)')
  61. func_arg_args_kwargs(1)
  62. print()
  63. #
  64. # first with *args
  65. _args = ("two", 3, 5)
  66. print('func_arg_args_kwargs(*_args)')
  67. func_arg_args_kwargs(*_args)
  68. print()
  69. #
  70. #
  71. # now with **kwargs:
  72. _kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
  73. print('func_arg_args_kwargs(**_kwargs)')
  74. func_arg_args_kwargs(**_kwargs)
  75. print()
  76. #
  77. _fargs = 1
  78. _args = (2, 4, 8)
  79. _kwargs = {"arg3": 8, "arg2": 4, "arg1": 2}
  80. print('func_arg_args_kwargs(_fargs, _args, _kwargs)')
  81. func_arg_args_kwargs(_fargs, _args, _kwargs)
  82. print()
  83. print('func_arg_args_kwargs(_fargs, *_args, **_kwargs)')
  84. func_arg_args_kwargs(_fargs, *_args, **_kwargs)
  85. print()
  86. print('func_arg_args_kwargs(_args, _kwargs)')
  87. func_arg_args_kwargs(_args, _kwargs)
  88. print()
  89. print('func_arg_args_kwargs(*_args, **_kwargs)')
  90. func_arg_args_kwargs(*_args, **_kwargs)
  91. print()
  92. print('func_arg_args_kwargs(_kwargs)')
  93. func_arg_args_kwargs(_kwargs)
  94. print()
  95. print('func_arg_args_kwargs(**_kwargs)')
  96. func_arg_args_kwargs(**_kwargs)
  97. print()
  98. print('func_arg_args_kwargs(kwargs=_kwargs)')
  99. func_arg_args_kwargs(kwargs=_kwargs)
  100. print()
  101. print('func_arg_args_kwargs(_fargs, _args)')
  102. func_arg_args_kwargs(_fargs, _args)
  103. print()
  104. print('func_arg_args_kwargs(_fargs)')
  105. func_arg_args_kwargs(_fargs)
  106. print()
  107. print('func_arg_args_kwargs(1, 2, 3)')
  108. func_arg_args_kwargs(1, 2, 3)
  109. print()
  110. print('func_args()')
  111. func_args()
  112. print()
  113. _args = (1, 2, 3)
  114. print('func_args(*args)')
  115. func_args(*_args)
  116. print()
  117. print('func_args()')
  118. func_args()
  119. print()
  120. _kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
  121. print('func_kwargs(**_kwargs)')
  122. func_kwargs(**_kwargs)
  123. print()
  124.  
Advertisement
Add Comment
Please, Sign In to add comment