码迷,mamicode.com
首页 > 编程语言 > 详细

python3进阶之*args与**kwargs用法

时间:2018-04-23 22:41:54      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:nal   参数传递   **kwargs   def   一个   mil   int   war   font   

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

 

  python函数传递参数的方式有两种: 
位置参数(positional argument) 
关键词参数(keyword argument)

 

*args与**kwargs的区别,两者都是python中的可变参数。 
    *args表示任何多个无名参数,它本质是一个tuple; 
    **kwargs表示关键字参数,它本质上是一个dict; 

 

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

 

示例1.

def fun(*args,**kwargs):

    print(‘args=‘, args)

    print(‘kwargs=‘,kwargs)

fun(1,2,3,4,A=‘a‘,B=‘b‘,C=‘c‘,D=‘d‘)

输出:

args= (1, 2, 3, 4)

kwargs= {‘A‘: ‘a‘, ‘B‘: ‘b‘, ‘C‘: ‘c‘, ‘D‘: ‘d‘}

 

示例2:

def mutil(name,*ar):
print(name,"主人,你好")
for item in ar:
print("我的名字叫:",item)

mutil("liuhu","xiaoyun","liuwei")
# liuhu 主人,你好
# 我的名字叫: xiaoyun
# 我的名字叫: liuwei

示例3:
def love(**kwargs):
for key,value in kwargs.items():
print("{0}爱着{1}".format(key,value))
love(name="liuhu",age=18)
# name爱着liuhu
# age爱着18


示例4:
def test(arg1, arg2, arg3):
print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3)

args = ("two", 3, 5)
test(*args)
kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
test(**kwargs)
# arg1: two
# arg2: 3
# arg3: 5

# arg1: 5
# arg2: two
# arg3: 3


python3进阶之*args与**kwargs用法

标签:nal   参数传递   **kwargs   def   一个   mil   int   war   font   

原文地址:https://www.cnblogs.com/max520liuhu/p/8921932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!