python_函数参数问题

  • 位置参数

    位置参数就是普通的参数变量按一定顺序排列,在定义的时候只给变量名,在调用函数时,输入的参数值也要按照这个顺序输入:
    • 定义:
    def get_reduce(x,y):
              return x-y
    
    • 调用:
    >>> get_reduce(98,88)
    10
    
    注意:调用时位置参数为必填参数
  • 默认参数

    默认参数就是在定义函数的时候给该参数一个默认值,当调用给函数时不给该参数的值,默认使用默认值:
    • 定义:
    >>> def get_lifang(x,n=3):
    ...             sum=1
    ...             while n>0:
    ...                     n-=1
    ...                     sum*=x
    ...             return sum
    
    • 调用:
    >>> get_lifang(3)
    27
    
    注意:默认参数尽量不要用list,因为它是可变对象,当多次调用时,这次会调用上次产生的值,如果需要可以将可变对象的默认值定义为None
  • 可变参数

    参数数量可以变化的参数,在定义时用*标识:
    • 定义:
    >>> def get_sum(*n):
    ...     sum=0
    ...     for i in n:
    ...             sum+=i
    ...     return sum
    ...
    
    • 一般参数调用:
    >>> get_sum(55,77,88)
    220
    
    • 特殊参数调用:(当参数为多个元素的集合时,用*标注,如下:)
    >>> l=[99,34,66,44]
    >>> get_sum(*l)
    243
    
    实质上,参数在函数内部是以一个tuple的元素存在
  • 关键字参数

    关键字参数针对的是dict,定义的时候用**标识
    • 定义:
    >>> def get_info(**kw):
    ...             if 'body' in kw:
    ...                     print('system is bad')
    ...             elif 'peter' in kw:
    ...                     print(kw['peter'])
    ...
    
    • 调用:
    >>> d={'peter':88,'ami':77,'baby':99}
    >>> get_info(**d)
    88
    
  • 命名关键字参数

    命名关键字参数是在关键字参数的基础上,硬性要求关键字的名字,定义时用*作为参数将其他关键字隔开
    • 定义:
    >>> def to_info(p,c,*,course,age):
    ...     print(p,c,course,age)
    ...
    
    • 调用:
    >>> to_info('peter',99,course='English',age=22)
    peter 99 English 22
    
    注意:当命名关键字前有可变参数时,*分隔不需要
  • 参数排列顺序

([ 位置参数],[默认参数],[可变参数],[命名关键字参数],[关键字参数])
需要说明的是:它们可以组合使用,例如即是默认参数,又是命名关键字参数

你可能感兴趣的:(python_函数参数问题)