Python中*args和**kwargs的区别

(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正。)

中秋的夜,微凉,但却始终看不见月亮。

我想,它一定是害羞了,悄悄的躲到了乌云的后面。

嗯,就是这样,我真是太TM机智了。

正文:

注:《python核心编程第2版》的11.6可变长度的参数---章节中有详细介绍。

一、*args的使用方法

*args 用来将参数打包成tuple给函数体调用

例子一:

def function(*args):
    print(args, type(args))

function(1)

输出结果以元组的形式展示:

例子二:

def function(x, y, *args):
    print(x, y, args)

function(1, 2, 3, 4, 5)

输出结果:

二、**kwargs的使用方法

**kwargs 打包关键字参数成dict给函数体调用

例子一:

def function(**kwargs):
    print( kwargs, type(kwargs))

function(a=2)

输出结果以列表形式展示:

例子二:

def function(**kwargs):
    print(kwargs)

function(a=1, b=2, c=3)

输出结果:

注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。

def function(arg,*args,**kwargs):
    print(arg,args,kwargs)

function(6,7,8,9,a=1, b=2, c=3)

输出结果:

哎呀,写完了。

中秋节,多想,多想提一壶酒  约几个老朋友  驾一叶小船儿,

迷失在故乡江南水乡里。小舟荡清波,过万水千山。

原文地址:https://www.cnblogs.com/zhouzhou0/p/10366252.html

时间: 2024-10-12 08:29:18

Python中*args和**kwargs的区别的相关文章

FAQ:Python中*args和**agrs的区别

python提供了两种特别的方法来定义函数的参数: 1. 位置参数 *args,  把参数收集到一个元组中,作为变量args   >>>def show_args(*args):          #定义函数 print args >>>show_agrs("hello", "world")      #调用函数 输出:("hello","world") 2. 关键字参数 **kwargs,

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的使用

今天看到一个外国人写的一篇关于*args,与**kwargs如何使用的总结,非常有学习价值,尤其是他给出了一个继承之后重写父类方法的例子,可以很好的解决多重继承中参数传递的问题,看完之后,自己也实验了一下.原文链接http://agiliq.com/blog/2012/06/understanding-args-and-kwargs/. 原文如下: When i started learning Python, i was very confused regarding what args, k

python中*args和**kwargs学习

*args 和 **kwargs 经常看到,但是一脸懵逼 ,今天终于有收获了 """ python 函数的入参经常能看到这样一种情况 *args 或者是 **kwargs 但是它们到底是啥意思呢? 代码能说明一切 """ def hello(*args, **kwargs): print(args) # ('小明', 25, '男', '中国银行') print(kwargs) # {} hello('小明', 25, '男', '中国银行')

Python中*args和**kwargs 的简单使用

# 在函数定义中使用*args和kwargs传递可变长参数. *args用作传递非命名键值可变长参数列表(位置参数); kwargs用作传递键值可变长参数列表# *args表示任何多个无名参数,它是一个tuple# **kwargs表示关键字参数,它是一个dict # 注:同时使用*args和**kwargs时,*args参数列必须要在**kwargs前 # eg _v1 def func(f,*args): print ("formal arg:",f) for f in args:

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基础-python中*args和**kwargs的用法

当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值 *args 可以容纳多个变量组成的list 1 def test2(name,age,gender): 2 print(name) 3 print(age) 4 print(gender) 5 6 def test1(*args,**kwargs): 7 test2(*args,**kwargs) 8 9 test1('alex', 18, 'male') #这三个参数,全部传给了

python中*args和**kwargs的使用

一.介绍 1.*args和**kwargs这两个对于函数来说是可变参数 2.*args返回的是一个元祖 3.**kwargs返回的是一个字典 二.演示 说明:对于以下函数,*args可以识别非a=1这种关键字参数以外的所有参数:**kwargs只能识别a=1这种关键字参数,其他的都不识别 def add(*args, **kwargs): #*args和**kwargs是打包过程 print(args, kwargs) add(1, 2, 3, 4, a=1, b=2) add(1) add(a

【Python】*args和**kwargs的区别

1.*args表示将参数作为元组传给函数 通过一个函数的定义来理解’*args’的含义 修改函数的定义: >>> def fun(*args): ... print args ... 传一个位置参数调用此函数 >>> fun(13) (13,) 传多个参数调用此函数 >>> fun(11,93,43) (11, 93, 43) ‘*args’在函数定义中是做什么用的? 它接收元组作为位置参数,而非是常见的参数列表.在这里,”args”是个元组.在上个例