python *args 与 **kwargs

描述:

  *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成*args 和**kwargs。  *(星号)才是必须的. 你也可以写成*ar 和**k. 而写成*args 和**kwargs只是一个通俗的命名约定。

python函数传递参数的方式有两种:

  • *args表示任何多个无名参数,它本质是一个tuple;
  • **kwargs表示关键字参数,它本质上是一个dict;

如果同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。

实例1:

 1 def fun(*args,**kwargs):
 2
 3     print(‘args=‘, args)
 4
 5     print(‘kwargs=‘,kwargs)
 6
 7 fun(1,2,3,4,A=‘a‘,B=‘b‘,C=‘c‘,D=‘d‘)
 8
 9 #输出结果:
10
11 #args= (1, 2, 3, 4)
12
13 #kwargs= {‘A‘: ‘a‘, ‘B‘: ‘b‘, ‘C‘: ‘c‘, ‘D‘: ‘d‘}

实例2:

 1 def mutil(name,*ar):
 2     print(name,"主人,你好")
 3     for item in ar:
 4         print("我的名字叫:",item)
 5
 6 mutil("liuhu","xiaoyun","liuwei")
 7
 8 输出结果:
 9 # liuhu 主人,你好
10 # 我的名字叫: xiaoyun
11 # 我的名字叫: liuwei

实例3:

1 def love(**kwargs):
2     for key,value in kwargs.items():
3         print("{0}爱着{1}".format(key,value))
4 love(name="liuhu",age=18)
5
6 #输出结果:
7 # name爱着liuhu
8 # age爱着18

实例4:

 1 def test(arg1, arg2, arg3):
 2     print("arg1:", arg1)
 3     print("arg2:", arg2)
 4     print("arg3:", arg3)
 5
 6 args = ("two", 3, 5)
 7 test(*args)
 8 kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
 9 test(**kwargs)
10
11 #输出结果:
12 # arg1: two
13 # arg2: 3
14 # arg3: 5
15
16 # arg1: 5
17 # arg2: two
18 # arg3: 3

原文地址:https://www.cnblogs.com/helloTerry1987/p/10992209.html

时间: 2024-11-09 00:59:29

python *args 与 **kwargs的相关文章

Python * args 和 ** kwargs那点事

1,前言:一般出现*args 和 **kwargs,首先给我想到的是C语言的指针,真的.估计这是用C编写Python没有有阉割干净的缘故. 2,正题: 什么时候用这两个参数呢,我们通常见得最多的时候是作为函数的参数,当函数的参数不确定时,可以使用*args和 **kwargs,*args 没有key值,**kwargs 有key值. 3,例子 def args_test(param1,*args): print "first param is:",param1 index = 1 fo

python/*args和**kwargs

*args和**kwargs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #coding=utf8 __author__ = 'Administrator' # 当函数的参数不确定时,

day04 python *args和**kwargs

# arg1+*args 函数调用的时候,会把第一个参数给arg1,其余的参数以元组(tuple)都给args def function1(arg1,*args): print('arg1=', arg1) print('args=',args) function1(1,2,3) ''' 上述调用结果是: arg1= 1 args= (2, 3) ''' # arg1+**kaargs 函数调用的时候,参数必须使用 "arg1="shabi1",arg2="shab

python *args,**kwargs参数

实际上,关键的是*和** 我们以三个例子来解释: 普通的使用参数: def test1(arg): print(arg) test1("a") 输出: a *是将剩下的参数用元祖表示 def test1(arg1,arg2,*args): print(arg1) print(arg2) print(args) test1(1,2,3,"a","b") 输出: 1 2 (3, 'a', 'b') **是将参数转换成字典进行表示 def test2(

python 中*args 和 **kwargs

简单的可以理解为python 中给函数传递的可变参数,args 是 列表的形式.kwargs 是 key,value的形式,也就是python 中的字典. *args 必须出现在**kwargs 的前边,否则会抛异常. 1 def test(*args, **kwargs): 2 print args 3 print kwargs 1 if __name__ == '__main__': 2 print '---test 1---' 3 test(1, 2, 3) 4 print '---tes

(转)Python中的*args和**kwargs

本文转自:http://kodango.com/variable-arguments-in-python 作者:团子的小窝 Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one print 'Optional argument: ', two test_defargs(1) # result: # Required argument: 1 # Opti

python args & kwargs

Today,We will talk some about the argument and arguments ... #!/usr/bin/python def fun(*args): for value in args: print value if __name__ == '__main__': fun(11,22,33,44,55) What is type of (*args) ? Do you really want to know ,just keep read ... #!/u

Python中*args 和**kwargs的用法

from:http://blog.csdn.net/chenjinyu_tang/article/details/8136841 好久没有学习python了,应为工作的需要,再次拾起python,唤起记忆. 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. 还是直接来代码吧,废话少说 [python] view plaincopyprint? def fun_var_args(farg, *args): print "arg:&

理解 Python 中的 *args 和 **kwargs

Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one print 'Optional argument: ', two test_defargs(1) # result: # Required argument: 1 # Optional argument: 2 test_defargs(1, 3) # result: # Required argum