不定参数的写法需要注意一下

python中 函数不定参数的定义形式如下

1、

 func(*args)  

传入的参数为以元组形式存在args中,如:

 

[python]  view plain  copy
 
  1. def func(*args):  
  2.     print args  
  3.   
  4. >>> func(1,2,3)  
  5. (1, 2, 3)  
  6.   
  7. >>> func(*[1,2,3])   #这个方式可以直接将一个列表的所有元素当作不定参数  
  8. 传入(1, 2, 3)  


2、

 

func( **kwargs)

传入的参数为以字典形式存在args中,如:

 

[python]  view plain  copy
 
  1. def func(**kwargs):  
  2.     print kwargs  
  3.   
  4. >>> func(a = 1,b = 2, c = 3)  
  5. {'a': 1, 'c': 3, 'b': 2}  
  6.   
  7. >>> func(**{'a':1, 'b':2, 'c':3})     #这个方式可以直接将一个字典的所有键值对当作关键字参数传入  
  8. {'a': 1, 'c': 3, 'b': 2}  


3、

 

也可以两者混用----注意,*args是一定要写在**kwargs前面的,顺序不可以对调。

func(*args, **kwargs)

传入的顺序必须和定义顺序相同,这里是先不定参数列表,再是关键字参数字典,如:

 

[python]  view plain  copy
 
    1. def func(*args, **kwargs):  
    2.     print args  
    3.     print kwargs  
    4.   
    5.   
    6. >>> func(1,2,3)  
    7. (1, 2, 3)  
    8. {}  
    9.   
    10. >>> func(*[1,2,3])  
    11. (1, 2, 3)  
    12. {}  
    13.   
    14. >>> func(a = 1, b = 2, c = 3)  
    15. ()  
    16. {'a': 1, 'c': 3, 'b': 2}  
    17.   
    18. >>> func(**{'a':1, 'b':2, 'c':3})  
    19. ()  
    20. {'a': 1, 'c': 3, 'b': 2}  
    21.   
    22.   
    23. >>> func(1,2,3, a = 4, b=5, c=6)  
    24. (1, 2, 3)  
    25. {'a': 4, 'c': 6, 'b': 5}  
    26.   
    27.   
    28.   
    29.   
    30. #这样跳跃传递是不行的  
    31. >>> func(1,2,3, a=4, b=5, c=6, 7)  
    32. SyntaxError: non-keyword arg after keyword arg  

转载于:https://www.cnblogs.com/marcoTian/p/8508677.html

你可能感兴趣的:(不定参数的写法需要注意一下)