*args 和 **kwargs  可以将不定数量的参数传递给函数

*args 和 **kwargs,前者适用于 传入非键值对的可变数量的参数列表,后者适用于 传入不定长度的键值对, 作为参数传递给函数

**kwargs 就是在*args 的基础上,添加了变量名以及转变了格式

如下所示:

先定义一个函数:

def test(farg,arg1,arg2,arg3):
print("farg参数为:",farg)
print("arg1为",arg1)
print("arg2为",arg2)
print("arg3为",arg3)

调用函数时先用*args传参:

dic = (1,"你好","hello",9.0)
test(*dic)

以及 用**kwargs 传参:

dic ={"farg":1,"arg1":"你好","arg2":"hello","arg3":9.0}
test(**dic)

结果输出都为:

两种方式的传参方式的不同之处在于:

传入的参数格式 一个为字典,一个为元祖,一个要加一个 星号 *  ,一个要加两个星号  **

以上的例子是将*args 和 **kwargs应用在调用函数时,如果应用在定义函数的参数时会是怎样的呢?一起来看看呗

想要定义一个函数,但又不知道传入多少个参数的时候,就可以将*args  or  **kwargs 放在函数的参数定义中了

def test(*args):
for arg in args:
print("{}的值为:".format(arg),arg)
print(args[0])
print(args[1])
print(args[2])
print(args[3])
print(args[4])

结果为:

def test(**kwargs):
for key,value in kwargs.items():
print("{}的值为{}".format(key,value))

dic = {"1":"1","2":"2","3":3,"4":4,"5":5}
test(**dic)

结果为:

相比之下,因为**kwargs 传入的只能时键值对,字典类型,所以在处理传入的参数是也要相应地用字典的处理方式。

就看各位怎么用了,怎样顺手就那样用了。

我怀疑这博客园是不是没人了,我这博客是不是没人看了,既然你都看到这里,顺便给我点个赞呗!

多谢多谢!哈哈哈哈哈哈哈哈

教你函数如何传参更加方便 ----python 传参 *args **kwargs的更多相关文章

  1. 1.函数的结构,调用,传参,形参,实参,args,kwargs,名称空间,高阶函数

    1.函数的初识 初始函数 获取任意一个字符串的元素的个数 s1='dsjdkjkfefenga' count=0 for i in s1: count+=1 print(count) 获取列表的元素的 ...

  2. python的函数介绍 位置参数 关键字参数 默认参数 参数组 *args **kwargs

    1.数学意义的函数与python中的函数 数学意义的函数 y = 2*3+1 x =3 y =7 x是自变量,y是因变量 2.python中定义函数的方法 一个函数往往都是为了完成一个特定的功能而存在 ...

  3. python 全栈开发,Day9(函数的初始,返回值,传参,三元运算)

    一.函数的初始 比如python没有len()方法,如何求字符串的长度使用for循环 s = 'fdshfeigjoglfkldsja' count = 0 for i in s: count += ...

  4. python 全栈开发,Day9(函数的初始,返回值,传参,三元运算)

    一.函数的初始 比如python没有len()方法,如果求字符串的长度 使用for循环 s = 'asdfadsf' count = 0 for i in s: count += 1 print(co ...

  5. python传参

    写在前面 Python唯一支持的参数传递方式是『共享传参』(call by sharing) 多数面向对象语言都采用这一模式,包括Ruby.Smalltalk和Java(Java的引用类型是这样,基本 ...

  6. jQuery多图上传Uploadify插件使用及传参详解

    因为工作需要,这两天接触到了Uploadify插件,由于是第一次用,花了我近一天的时间.下面我把我在用这个插件过程详细的分享出来,也让自己巩固一下,也希望能帮助到你. 所需文件: jquery-1.8 ...

  7. 强大的支持多文件上传的jQuery文件上传插件Uploadify

    支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...

  8. 动态参数(*args,**kwargs),命名空间和作用域,global和nonlocal,函数的嵌套

    1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序: 位置,*args,默认值,**kwargs 在形参上*聚合, **聚合 在实参上*打散, **打散 ...

  9. 函数参数 f_arg, *args, **kwargs

    当需要给函数传参时,可以通过运用不同的形参来传递,达到参数不同的使用目的. 简单来说:f_arg就是传递的第一个参数,类似于C++中的普通参数: *args 传递的是一个参数的list: **kwar ...

随机推荐

  1. 201902<<百岁人生>>

    过年的那段时间,在家看到公司推荐的10本2019年必读书籍,里面有这本书,于是就开始了.... 第一次这么认真的看这类书籍,看完之后感触颇多,毕竟这个问题我从没思考过,很少站在这样的高度去看所有方方面 ...

  2. Django框架详细介绍---Form表单

    一.概述 在HTML页面中,利用form表单向后端提交数据时,需要编写input等输入标签并用form标签包裹起来,与此同时,在很多应用场景之下需要对用户输入的数据校验,例如注册登录页面中,校验用户注 ...

  3. sql server中的开窗函数over、视图、事物

    一.开窗函数over的作用有两个: 1.排序order by,row_number,翻页 2.划区partition by,结合聚合函数针对某部分数据进行汇总 翻页的sql server 语句: an ...

  4. spring里的事物设置

    有的人说事物在spring里设置有两种,其实事物设置在spring配置文件中共有五种方式:第一种方式:每个Bean都有一个代理第二种方式:所有Bean共享一个代理基类第三种方式:使用拦截器第四种方式: ...

  5. SynchronousQueue------TransferQueue源码分析

    不像ArrayBlockingQueue.LinkedBlockingDeque之类的阻塞队列依赖AQS实现并发操作,SynchronousQueue直接使用CAS实现线程的安全访问.由于源码中充斥着 ...

  6. java0425 wen IO

  7. 2019/4/17 wen 注解、垃圾回收、多线程

  8. ORA-28002密码失效问题解决

    问题:提示ORA-28002解决: 第1种方法:数据库级别,需要重启查看过期时间: sql>SELECT * FROM dba_profiles WHERE profile='DEFAULT' ...

  9. 如何在cisco官网上下载Cisco packet tracer模拟器

    这个是“思科网络技术学院”提供的一个软件,需要注册成为学员以后才能用,注册名字可以更改. 进入网站后,上面七个选项,cisco Networking Academy.课程(下边第七个选项“Packet ...

  10. Python3 tkinter基础 Radiobutton 设置相同的value值,产生连锁效果

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...