函数中定义参数的四种方式
更新的时间是, 二零一四年十一月三十日, 二十二时十七分五十四秒, 投稿来自, mdxy-dxy。
某个部分时段, 瞅见函数在传递参数之际, 参数前边添加上一个星号*, 又或者是两个星号**, 这种情况所代表的含义是什么呢? 接下来对此予以归纳总结。
中函数参数的定义主要有四种方式:
- F(arg1,arg2,...)
这属于最为常见的定义样式, 存在这样一种情况, 一个函数能够去定义任意数量的参数, 当中的每个参数是依靠逗号来予以分割的, 借助这种方式进行定义的函数于进行调用的时刻, 同样是必须要在函数名后面的小括号里提供数量相等的参数的。
的值(实际所用到的参数), 并且其顺序是绝对不能有差错的, 也就是讲在这样的调用方式的时候, 形式参数跟实际参数的数量一定要是相同一样的数量, 而且是必须要一个一个地相互对应上的, 也就是说最初的那一个形式参数是对应紧跟其后的那第一个实际参数的。比如说:
def a(x,y):print x,y
使用该函数, 当a(1,2)之时, x选取1, y选取2, 形式参数与实际参数相互对应, 要是a(1)或者a(1,2,3)那样的情况, 就会出现报错。
- F(arg1,arg2=,...)

这种方式就是第一种的改进版,提供了默认值,例如:
def a(x,y=3):print x,y
调用那个函数, a(1,2)是同样如此的, 即x选取1并且y选取2, 然而要是a(1)的情况, 届时就不会出现报错的状况了, 在这个时候x依旧是1相应地y就成了默认的3。上面提及的这两种方式, 是能够去更换参数位置的哟, 就像a(y = 4,x = 3)以这种形式也是行得通的。
- F(*arg1)
位于上方的那两种方式, 是按照有多少个形式参数, 就传递进去多少个实际参数的规则来进行的, 然而, 有的情形下, 传递的参数数量是无法确认的, 那么, 在这种时候, 居于第三者位置的那种方式就显得颇为有用了, 它是基于一种以一个星号再加上形式参数名称的形式进而用来表示这个函数的形式进行的。
数的实际参数数量不固定, 有可能是0个, 也有可能是n个。需要留意的一点是, 不论存在多少个, 在函数内部都会被放置到以形参名字作为标识符的元组里面。
brush:py;
>>> a(1,2,3)
(1, 2, 3)
>>> a(x=1,y=2,z=3)
Traceback (most recent call last):
File "", line 1, in
TypeError: a() got an unexpected keyword argument 'x'", line 1, in
TypeError: a() got an unexpected keyword argument 'x'
- F(**arg1)
形参名前面加上两个星号来作出表示, 这表明参数在函数内部会被放置到以形式名为标识符的地方, 而此时调用函数所采用的方法就得是arg1=,arg2=这样的形式。
brush:py;
>>> a(x=1,y=2,z=3)
{'y': 2, 'x': 1, 'z': 3} #存放在字典中
>>> a(1,2,3) #这种调用则报错
Traceback (most recent call last):
File "", line 1, in
TypeError: a() takes exactly 0 arguments (3 given)", line 1, in
TypeError: a() takes exactly 0 arguments (3 given)