这篇文章主要讲解了“django中的* args与* * kwargs用法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“django中的* args与* * kwargs用法是什么”吧!
这是Python函数可变参数参数及kwargs
* args表示任何多个无名参数,它是一个元组
* * kwargs表示关键字参数,它是一个dict
测试代码如下:
def foo (* args, * * kwargs):, print & # 39; args=& # 39; args print & # 39; kwargs=& # 39; kwargs print & # 39; * * * * * * * * * * * * * * * * * * * * * * & # 39;, if __name__==& # 39; __main__ # 39;:, foo (1、2、3), foo (a=1, b=2, c=3), foo (1、2、3, a=1, b=2, c=3), foo (1 & # 39; b # 39;, & # 39; c # 39;, a=1, b=& # 39; b # 39;, c=& # 39; c # 39;)
执行结果如下:
参数=,(1,,2,,3),kwargs=, {}, * * * * * * * * * * * * * * * * * * * * * * args=, (), kwargs=,{& # 39;一个# 39;,,1,,& # 39;c # 39;:, 3, & # 39; b # 39;:, 2}, * * * * * * * * * * * * * * * * * * * * * * args=, (1,, 2,, 3), kwargs=,{& # 39;一个# 39;,,1,,& # 39;c # 39;:, 3, & # 39; b # 39;:, 2}, * * * * * * * * * * * * * * * * * * * * * * args=, (1, & # 39; b # 39;,, & # 39; c # 39;), kwargs=,{& # 39;一个# 39;,,1,,& # 39;c # 39;:, & # 39; c # 39;,, & # 39; b # 39;:, & # 39; b # 39;}, * * * * * * * * * * * * * * * * * * * * * *
<强>补充:Python中的* * kwargs和* args这么理解强>
Python中经常看到* * kwargs和* args这么两个参数,例如下面groupby的参数。
到底是什么意思呢?
怎么使用?
DataFrame.groupby(=没有,,轴=0,,=没有水平,,as_index=,真的,,=True,, group_keys=True,,挤压=False,,观察=False,, * * kwargs)
* * kwargs和* args意思
* args和* * kwargs一般是用在函数定义的时候。二者的意义是允许定义的函数接受任意数目的参数。也就是说我们在函数被调用前并不知道也不限制将来函数可以接收的参数数量。在这种情况下我们可以使用* args和* * kwargs。
* args的使用
* args用来表示函数接收可变长度的非关键字参数列表作为函数的输入。我们可以通过以下这个例子来进一步理解* args。
def test_args (normal_arg,, * args): ,打印(“first  normal 参数:“,+,normal_arg) ,for arg 拷贝参数: 打印才能(“another  arg through * args :“, +, arg) test_args(“中性”,。,“python",,“java",,“c#“)
上面代码的执行结果如下:
first normal 参数:正常 another arg  through * args : python another arg  through * args : java another arg  through * args : c#
* * kwargs的使用
* * kwargs表示函数接收可变长度的关键字参数字典作为函数的输入。当我们需要函数接收带关键字的参数作为输入的时候,应当使用* * kwargs。我们可以通过以下这个例子来进一步理解* * kwargs。
def test_kwargs (* * kwargs): ,if kwargs  is not 没有: for 键,才能,value 拷贝kwargs.iteritems (): ,才能打印(“{},=,{}“.format(键,值)) #才能,或是你还要visit kwargs like a dict()对象 #,才能for key 拷贝kwargs: #,才能打印(“{},=,{}“.format(钥匙,,kwargs[主要])) test_kwargs (name=皃ython", value=https://www.yisu.com/zixun/?”)
以上代码的执行结果如下:
name =python value =, 5
以上例子只是* args和* * kwargs的基本的使用例子。下面再给出一个用* args和* * kwargs来定义能够接收列表输入和字典输入的函数的例子。
使用* args和* * kwargs来调用函数
比如我们有如下接收普通输入参数的函数:
def normal_func (__arg1、时间最长,大敌;;长度): ,打印(“__arg1:,“, +, __arg1) ,打印(“最长:,“,+,最长) ,打印(“长度:,“,+,长度) normal_func (“python",, 1,, 3)
使用* args和* * kwargs来调用这个函数的代码如下:
#,使用*参数 args_list =, (“python",, 1,, 3) normal_func (* args_list) #,使用* * kwargs kwargs_dict =, {“arg3": 3,“arg1":,“python",,“arg2":, 1} normal_func (* * kwargs_dict)
以上三段代码的输出均为:
__arg1: python 最长:1 长度:3django中的* args与* * kwargs用法是什么