代码:

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. Socket通讯实例-基本Socket

    转自:http://www.cnblogs.com/mahaisong/archive/2011/07/25/2116475.html (讲的很好,很细) 参考:http://blog.sina.co ...

  2. 马克飞象 Markdown 使用和学习

    第三方学习网站 http://sspai.com/25137https://maxiang.io/ 使用工具:有道云笔记 https://note.youdao.com/ 新建时使用Mardown类型 ...

  3. Struts2_ValueStack,OGNL详解(转)

    原文地址:http://blog.csdn.net/wyply115/article/details/8257140 一.OGNL表达式 1.ognl是struts2中使用的一种表达式语言,可用于js ...

  4. 【整理】强化学习与MDP

    [入门,来自wiki] 强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益.其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的 ...

  5. Java字符串常量池

    JVM为了减少字符串对象的重复创建,维护了一个特殊的内存,这段内存被称为字符串常量池. Java中字符串对象的创建有两种形式:一种是字面量形式,String str = "a":一 ...

  6. ecmall源码中的 function _config_view()-关于重写

    ecmall中类库的继承过程: defaultAPP->MallbaseApp->FrontendApp->EcBaseApp->BaseApp->Object 在bas ...

  7. Server-Sent Events(HTML5 服务器发送事件)

    Server-Sent Events简介 Server-Sent Events(SSE)用于网页自动获取服务器上更新的数据,它是一个实时性的机制. 实时性获取数据的解决方案 对于某些需要实时更新的数据 ...

  8. svn中第一次check out working copy项目下来出现 ld: library not found for -lcrypto clang: error: linker command failed with exit code 1 (use -v to see invocation)

    这个问题主要是.a文件的忽略删除,需要更改设置,并且把文件重新添加

  9. js获取当前时间戳 不需毫秒数

    var timestamp = Date.parse(new Date())/1000;

  10. kafka总结

    近期在做kafka metrics. 参考了几个开源的项目,诸如kafka manager, Burrow, kafkaOffsetMonitor,东西都很不错,可惜没有一个是用java编写的,最终自 ...