函数的参数

来源:互联网 发布:ubuntu磁盘一直不足 编辑:程序博客网 时间:2024/05/01 08:10

python的函数定义简单,灵活度大,除了正常定义的函数外,还可以使用默认参数、可变参数和关键字参数,使得定义出来的接口,不但能处理复杂的函数,还能简化调用者的代码。

默认参数

默认参数就是编写参数值的时候,给参数设定一个默认值,以例子做说明,定义一个计算x^2的函数:

 def power(x):

  retern x*x

当调用power函数时,需要传递一个参数power(4)

如果计算x^3怎么办?可以再定义一个power3函数,如果还要计算x^4,x^5.....x^n 这就不可能要定义无限多个函数

那么可以把power(x)改写为power(x,n),用来计算x^n,于是如下

def power(x,n):

  s=1

while n>0:

 n=n-1

s=s*x

return s

可以计算任意幂的。但是这是引发新问题,以前旧的代码调用失败,原因是我们增加了一个参数,旧代码无法调用,涉及到还要修改旧的代码。如果不修改旧代码,这时候默认参数就有用场了,由于经常计算x^2,所以,完全可以把第二个参数n的默认值设定为2

def power(x,n=2):

 s=1

while n>0:

n=n-1

s=s*x

return s

这样,当调用power(5)时,相当于调用power(5,2).对于其他n>2的,必须明确传入n。设置默认参数,有几点要注意:

1必选参数在前,默认参数在后,否则pthon报错。

2变化大的参数放前面,变化小的参数放后面,变化小的参数就可以作为默认参数。使用默认参数,可以降低调用函数的难度。

3 默认参数有坑需要注意,默认参数必须指向不变对象NOne、str就是不变对象

二可变参数

可变参数,就是传入的参数是可变的,可以传入1个,两个任意个。已数学题为例 a^2+b^2+c^2.........要定义这个函数,我们必须确定输入的参数。由于本计算题参数个数不确定,我们可以把a,b,c......作为一个tuple或list传进来,这样函数可定义如下:

def calc(number):

sum=0

for n in number:

      sum=sum+n*n

return  sum

调用 calc([1,2,3])。改为可变参数就是如下:

def calc(*number):

 sum=0

 for n in number:

    sum=sum+n*n

 return sum

调用 calc(1,2,3).定义可变参数与list或tuple参数相比,仅仅在参数前加一个*号。在函数内部,参数number接受的是tuple,代码完全不变。


学习于http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738281887b88350bd21544e6095d55eaf54cac23f000



0 0