04-02、函数的参数

一、函数参数的两大分类

    形参和实参

    形参的表现形式就一种
    实参的表现形式有多种

  1、形式参数

    在函数定义阶段从左往右依次写入的变量名就叫形式参数,简称"形参"

 

  2、实际参数

    在函数调用阶段从左往右依次写入的变量值就叫实际参数,简称"实参"

二、位置参数

  1、位置参数

    从左往右依次写入的数据就是位置参数

    1、位置形参

      在定义函数的时候,从左往右依次写入的变量名就是位置形参

    2、位置实参

      在函数调用阶段,从左往右依次写入的变量值就是位置实参

    3、注意:

      对应关系:位置形参从左往右依次传递给位置形参,并且一一对应

      位置参数或多或少都会报错

 

 

  2、关键字参数

    1、定义

      通过 形参名 = 变量名 的形式传递的是关键字参数

    2、注意

      关键字参数必须放在位置参数后面,否则报错(语法错误)

 

三、默认参数

   1、定义

    在函数定义阶段,两种情况:

    1. 如果没有给形参传递值,就使用默认的

    2. 如果给形参传递了值,就使用已经传递的

  2、易错练习

    易错1

      默认参数一般是不可变类型

      但如果默认参数有可变类型(eg:列表类型),函数值会受其他数据影响

       解决方式

        定义参数为None类型

 

    习题2

      默认形参的值在定义阶段就已经赋值完毕
      所以默认形参的值不受接下来相同变量名赋值的影响

 

四、可变长参数

    可变长参数指的是在调用函数时,传入的实参个数不固定,对应着必须要有特殊形式的形参来接收溢出的实参

  1、*号和**号在形参中的使用

    1、*在形参中的使用

      形参中使用,用于接收多余的位置实参,把多余的实参赋给*号后面的变量名,并以元组形式保存下来

      保证无论在函数调用阶段传递多少个位置实参都可以

 

    2、**在形参中使用

      形参中使用,用于接收多余的关键字实参,把多余的实参赋给**号后面的变量名,并以字典形式保存下来

      保证无论在函数调用阶段传递多少个关键字实参都可以

 

    3、*args 和 **kwargs 组合在形参中使用

      形参中使用,用于接收多余的位置实参和关键字实参,把多余的实参赋给**号后面的变量名,并以元组或字典形式保存下来   

      保证无论在函数调用阶段传递多少个位置实参和关键字实参都可以   

      注意:

        1.默认参数只要不放在**后面都可以

        2.*号后面和**号后面的变量名可以任意命名,但是,在python中推荐使用

          *args => arguments参数

          **kwargs => keyword arguments关键字参数

        3、在*号和**号之间的为关键字形参

  2、*号和**号在实参中的使用

    1、*号在实参中的使用

      是一种打散行为,将紧跟其后的值打散为位置实参

 

    2、**号在实参中的使用

      是一种打散行为,将紧跟其后的值打散为关键字实参

 

posted @   三三得九86  阅读(308)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示