代码:

def fun(x):
return x print fun(10)

函数fun(x)接受参数是x,传入数字"10",打印函数的返回值结果 就是10,如果我传递多个参数时,程序就会出错,如下图:

def fun(x):
return x print(fun(10,20))
Traceback (most recent call last):
File "aa.py", line 7, in <module>
print(fun(10,20))
TypeError: fun() takes exactly 1 argument (2 given)

给出的结果是:给了2个参数。为了解决这个问题,引入*args把多余的参数放入到元组中,如下图:

def fun(x, *args):
print args
return x print(fun(10,20))

这样的话,x只接受第一个参数,其他的都存放到args这个元组中去,结果如下图:

(20,)
10

元组里面是不能存放字典类型的数据,如果我存放字典类型数据是否会报错?看下图:

def fun(x, *args):
print args
return x print(fun(10,20,y=2))
Traceback (most recent call last):
File "aa.py", line 8, in <module>
print(fun(10,20,y=2))
TypeError: fun() got an unexpected keyword argument 'y'

此时,给出报错:捕捉到一个未知的关键字参数 y,为了解决这个我们需要引入 **kw来解决传入参数是字典类型的数据,看下图:

def fun(x, *args, **kw):
print kw
print args
return x print(fun(10,20,y=2))

运行结果如下图:

{'y':20}
(20,
10

看下整个效果:

def fun(x, *args, **kw):
print kw
print args
return x print(fun(10,20,40,50.5,y=2,z=3,f=5.5))

运行结果:

{'y': 2, 'z': 3, 'f': 5.5}
(20, 40, 50.5)
10

主要注意的地方是:fun(x, *args, **kw) 在调用函数时,传入字典参数是不可以传入 x = * 这种类型,会出现错误,如下图:

Traceback (most recent call last):
File "aa.py", line 9, in <module>
print(fun(10,20,40,50.5,z=3,x=2,y=5.5))
TypeError: fun() got multiple values for keyword argument 'x'
  File "aa.py", line 9
print(fun(x=2,10,20,40,50.5,z=3,y=5.5))
SyntaxError: non-keyword arg after keyword arg

python中函数接收多余参数的更多相关文章

  1. python中函数的参数解析

    python中函数的各种参数梳理: 1.形参:函数定义时传入的参数 2.实参:函数调用时传入的参数 (有形参必传实参,形参里自身特点可不传的,可传可不传) 3.缺省参数:不传为默认值,传了会覆盖(下面 ...

  2. python中函数的参数

    函数参数(一) 思考一个问题,如下: 现在需要定义一个函数,这个函数能够完成2个数的加法运算,并且把结果打印出来,该怎样设计?下面的代码可以吗?有什么缺陷吗? def add2num(): a = 1 ...

  3. python中函数的初览

    资料参考来源:https://www.cnblogs.com/haifeima/p/9595449.html 现在听到函数这两个字时还会头疼一会,因为我想到的是数学中的函数,但python中的函数不会 ...

  4. python 中函数的参数

    一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...

  5. python 中函数参数传递形式

    python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要 ...

  6. (转)python中函数参数中如果带有默认参数list的特殊情况

    在python中函数参数中如果带有默认参数list遇到问题 先看一段代码 1 2 3 4 5 6 7 8 9 def f(x,l=[]):     for i in range(x):         ...

  7. 学以致用三十二-----python中函数的括号使用

    一直以来对python中函数括号的使用,有点分不清楚,到底什么时候用括号,什么时候不用括号,造成了很大看困惑. 今天来总结下. class aaa(): y = 'you' def __init__( ...

  8. python中函数的定义和详细的使用方法

    1. 函数的概念,函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集   2. 函数的作用,使用函数可以加强代码的复用性,提高程序编写的效率   3. 函数的使用,函数必须先创建才 ...

  9. Python中函数的参数传递与可变长参数

    转自旭东的博客原文 Python中函数的参数传递与可变长参数 Python中传递参数有以下几种类型: (1)像C++一样的默认缺省函数 (2)根据参数名传参数 (3)可变长度参数 示例如下: (1)默 ...

随机推荐

  1. Oracle 树操作(select…start with…connect by…prior)

    摘自:http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html oracle树查询的最重要的就是select…start with ...

  2. iTop Webservice列表

    { u'operations':[ { u'verb':u'core/create', u'description':u'Create an object', u'extension':u'CoreS ...

  3. 关于string.format() 转

    string.format()函数用来生成具有特定格式的字符串,这个函数有两个参数,第一个参数为格式化串:由指示符和控制格式的字符组成.第二个参数是对应格式中每个代号的各种数据. 格式字符串可能包含以 ...

  4. spring的IOC和AOP协同工作

    看网络上的spring资料,基本都是在讲解IOC和AOP,但是二者是如何协同工作的,说的很少. 粗略调试了下BeanFactory的创建过程,发现是如图所示的大概过程.其中BeanPostProces ...

  5. 阿里云服务器Linux CentOS安装配置(七)域名解析

    阿里云服务器Linux CentOS安装配置(七)域名解析 1.购买域名 登录阿里云,左侧菜单点击[域名],然后[域名注册],完成域名购买.(一般首年45元) 2.添加域名解析 在域名列表里点击你的域 ...

  6. ECMAScript Web APIs node.js

    https://hacks.mozilla.org/2015/04/es6-in-depth-an-introduction/ What falls under the scope of ECMASc ...

  7. Linux 升级修改libc gcc 文件名称,导致执行命令失效问题解决

    升级linux文件时,若不小心把文件名给重命名了,结果导致执行所有命令都不识别. 比如我们不小心执行了 mv /lib64/libc.so.6 /lib64/libc.so.6.bak 结果导致所有系 ...

  8. 在 Apache Ant中设置Proxy服务器

    <target name="proxy"> <property name="proxy.host" value="https://m ...

  9. Javascript ES6

    ES6: EMACScript 6 http://javascript.ruanyifeng.com/advanced/ecmascript6.html http://es6.ruanyifeng.c ...

  10. mac brew 安装php扩展报错:parent directory is world writable but not sticky

    $ brew install php70-mcrypt 报错: Error: parent directory is world writable but not sticky 搜索到github的答 ...