函数

作者: suss | 来源:发表于2018-10-01 15:25 被阅读0次

    函数的参数

    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

    相关文章

      网友评论

          本文标题:函数

          本文链接:https://www.haomeiwen.com/subject/rliuoftx.html