Python学习之*args和**kwargs

来源:互联网 发布:阿里云虚拟机价 价格 编辑:程序博客网 时间:2024/05/16 07:43
本文和大家分享的主要是python中*args和**kwargs相关内容,一起来看看吧,希望对大家学习python有所帮助。
  函数定义
  在Python的函数定义中使用*args和**kwargs可传递可变参数。*args用作传递非命名键值可变长参数列表(位置参数),**kwargs用作传递键值可变长参数列表。
  当你不确定你的函数里将要传递多少参数时你可以用*args.例如,它可以传递任意数量的参数,*args 示例:
  deftest_var_args(farg, *args):
  print "formal arg:", farg
  for argin args:
  print "another arg:", arg
  test_var_args(1, "two", 3)
  结果:
  formalarg: 1anotherarg: twoanotherarg: 3
  相似的,**kwargs允许你使用没有事先定义的参数名,**kwargs示例:
  deftest_var_kwargs(farg, **kwargs):
  print "formal arg:", farg
  for keyin kwargs:
  print "another keyword arg: %s: %s" % (key, kwargs[key])
  test_var_kwargs(farg=1, myarg2="two", myarg3=3)
  结果:
  formalarg: 1anotherkeywordarg: myarg2: twoanotherkeywordarg: myarg3: 3
  *args和**kwargs也可以混合使用,需要注意的是,*args需要放在**kwargs前面:
  deftest_kwargs(first, *args, **kwargs):
  print 'Required argument: ', first
  for v in args:
  print 'Optional argument (*args): ', v
  for k, v in kwargs.items():
  print 'Optional argument %s (*kwargs): %s' % (k, v)
  test_kwargs(1, 2, 3, 4, k1=5, k2=6)
  结果:
  Requiredargument:  1
  Optionalargument (*args):  2
  Optionalargument (*args):  3
  Optionalargument (*args):  4
  Optionalargumentk2 (*kwargs): 6
  Optionalargumentk1 (*kwargs): 5
  函数调用
  这种语法不仅在函数定义中可以使用,在调用函数是也会出现(相当于extract package的效果)
  *args 示例:
  deftest_var_args_call(arg1, arg2, arg3):
  print "arg1:", arg1
  print "arg2:", arg2
  print "arg3:", arg3
  args = ("two", 3)
  test_var_args_call(1, *args)
  结果:
  arg1: 1arg2: twoarg3: 3
  **kwargs示例:
  deftest_var_args_call(arg1, arg2, arg3):
  print "arg1:", arg1
  print "arg2:", arg2
  print "arg3:", arg3
  kwargs = {"arg3": 3, "arg2": "two"}
  test_var_args_call(1, **kwargs)
  结果:
arg1: 1
arg2: two
arg3: 3

来源:标点符
0 0
原创粉丝点击