函数

函数的参数

1, 位置参数

 比如:

Powe (x)函数,参数 x 位一个位置参数。

当我们调用 power 的时候,必须传入有且仅有的一个参数 x:

>>> power(5)

25

如果需要x3、x5、我们不可能定义无限多个函数

我们可以这样做 


def power(x,n)

     s = 1

   while n > 0

            n = n -1 

           S = s * x

    return = s

对于修改过的 power (x, n)函数,可以任意次n方:

>>>  power(5,2)

25


修改后的的函数有两个位置参数;x 和 n ,这两个参数都是位置参数,调用参数时,传入两个值按照位置顺序一次赋予给 参数 x 和 n

2, 默认参数

当 新的 power(x,n) 函数定义没有问题,但是, 旧的代码失败了,原因是我们增加了一个函数,所以导致旧的代码无法正常调用

因为少了以一个位置参数


如何解决?

由于我们可以将经常使用的 x2, 所以可以完全把第二个参数 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 比如 power(5,4)


默认参数可以简化函数的调用, 设置默认函数需要注意的问题:

1, 必选参数在前,默认参数在后 否则 python 解释器会报错

2, 如何设置 默认参数?

当函数有多个参数时, 把变化大的函数放在前面, 变化小的函数放在后面。变化小的函数就可以作为默认 参数默认参数的好处:可以降低调用函数的难度。

3,可变参数

指传入的参数 可以是一个也可以任意个,也可以是零个

 比如:一组数字a b c d….计算 a2 + b2 + c2 + …

需要定义这个参数必须输入参数。由于参数个数不确定, 我们首先可以想到吧 这些数字 作为一个 list 或者 tuple 传进来 如下:


Der calc(number):

sum=0

for n in numbers:

sum=sum+n*n

return sum


但是在调用之前必须组装一个 list 或者 tuple


>>> calc(1,2,3,)

14

>>> calc(1,3,5,7)

84


所以我们可以将参数改为可变参数


Der calc(*number):

sum=0

for n in numbers:

sum=sum+n*n

return sum


定义可变参数定义的一个 llist 或者 tuple 参数相仅仅在参数前面加了一个 * 符号。在函数内部,参数 number s接收到的是一个 tuple 因此,函数代码完全不变。但是调用该函数时,可以闯入任意个参数,包括零个参数

如果已经有一个 list 或者 tuple ,要调用一个可变的参数怎么办?可以这样:


>>>nuns=[1,2,3]

>>>calc(nums[0],nums[1],nums[2])

14


这样的方法可行但是 太繁琐,所以 python 允许你在 list 或者 tuple 前面几一个 *, 将list 或者 tuple 的元素 变 可变参数穿进去:

>>>nums=[1,2,3]

>> calc(*nums)

14


4, 关键字参数

可变参数允许你传入 0 个或者 任意和参数, 这些参数在函数用时自动组位一个 tuple , 而关键字参数允许你传入 0 个或者任意个含参数名的参数, 这些关键字参数在函数内部自动组装位一个 dict。


def person(name,age,**kw)

print(‘name:’,name,‘age:’age,‘other:’,kw)


函数 person 处除了必选参数 name 和 age 之外,还接受关键字参数 kw。 在调用必选参数,也可以传只入必选参数;也可以只传入任意个数的关键字参数;

关键字的作用:

可以拓展函数的功能。比如在 person 函数中, 我们可以确保接收到 name 和 age 的两个参数, 但是, 如果调用者愿意提供更多的参数信息我们也可以收到。

5,命名关键字参数

对于 关键字参数,函数的调用者可以传入任意不受限制的关键字参数。 至于到底传入了多少 需要用 kw 来检查。

命名关键字参数可以有缺省值,从而简化调用

而有默认值的参数 调用是不可以再次传入。

注:使用命名关键参数时, 要特别注意, 如果没有可变参数, 就必须加一个 * 作为特殊分隔符。如果缺少 * ,python 解释器将无法识别位置参数 和 命名关键字参数。

参数的组合

在 pytho 中定义函数, 可以用必选参数, 默认参数, 可变参数, 关键字参数 和命名关键字参数,者五种参数都可以组合使用。

注:参数定义的的顺序必须是: 必选参数、默认参数、 可变参数、 命名关键字参数和关键字参数

注: 虽然可以组合多达五种参数, 但是不要同时使用太多的组合, 否则函数的借口可理解性 很差。

小结:

默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑性错误

定义可变参数的关键字参数的语法:

**args 是可变参数, args 接受的是一个 tuple

**kw是关键字参数, kw接受的是一个 dict

你可能感兴趣的:(函数)