函数的参数

一、函数参数的两大类

    形式参数:

          函数定义阶段括号内所填写的参数叫做形式参数,简称为‘形参’

          形参的表现形式只有一种变量名

          

    实际参数:

          函数调用阶段括号内所填写的参数叫做实际参数,简称为‘实参’

          实参的表现形式有多种方式,核心就是数据值

    形式参数与实际参数的关系:

          两者在函数调用时将实际参数临时绑定给形式参数,在调用结束后解除绑定。

 

二、位置参数与关键实参

  位置参数又分为位置形参和位置实参

    位置形参:

        在函数定义过程中,按照从左到右的顺序依次填入的变量名

    位置实参:

        在函数调用过程中,按照从左到右的顺序依次填入的数据值

      ps: 在函数定义与调用的过程中,位置参数按照位置一一对应绑定,多一个不行少一个也不行

    关键实参:

        在函数调用过程中,使用 key=value的形式为指定的参数值,可以打破顺序的限制。

      ps:可以混用位置实参与关键字实参,但必须位置实参在关键字实参前面

        '格式越简单的越往前,格式越复杂的越靠后' 

 

 

 

三、默认参数

   默认参数的定义:

      在函数定义阶段就可以给形参赋值了成为默认参数

      如果在调用阶段不输入数据值,那么便使用默认形参,如果输入数据值,便会使用输入的数据值

    PS:

      在函数定义时位置形参必须放在默认形参前面,否则语法会报错

      ‘格式越简单的越往前,格式越复杂的越靠后’

         默认参数的值在函数定义阶段赋值的时候就已经固定死了,后面再换也不会改变了

四、可变长参数

      可变长参数指的是在函数调用过程中,可以传入的参数数量不固定,而传入的参数无非为位置实参和关键字实参,

      所以在形参中分别用*对应位置实参,**对应关键字实参

    1.函数无论传入多少位置参数都可以运行

      def func(a, b, *c):

        print(a,b,c)

      func(1,2,3,4,5,6)  # 1 2 (3, 4, 5, 6)

      *号用于接收多余的位置参数,并组织成元组的形式赋值给后面的变量名

    2.函数无论传入多少关键字参数都可以运行

      def func(a,b,**c):

        print(a,b,c)

      func(a = 1, b = 2, c = 3, d = 4, e = 5, f = 6)  # 1 2 {'c' : 3, 'd' : 4,  'e' : 5, 'f' : 6}

      **号用于接收多余的关键字参数,并组织成字典的形式赋值给后面的变量名

    3.函数无论传入多少位置参数和关键字参数都可以运行

      def func(*a, **b)

        print(a,b)

      func(1, 2, 3, a = 4, b = 5 , c = 6)  # (1, 2, 3) {'a' : 4, 'b' : 5, 'c' :6}

      ps:在传入参数时必须遵守位置参数必须写在关键字参数之前的原则

        *号后面的变量名推荐写args

        **号后面的变量名推荐些kwargs  

    4.*号在实参中的使用

      def func(*a)

        print(a)

      new_list = [1,2,3,4,5,6,7,8,9] 

      func(*new_list)  # (1,2,3,4,5,6,7,8,9)

      *号在实参中会将列表或者元组中的元素打散,一一传值给函数变量名

    5.**号在实参中的使用

      def func(**a)

        print(a)

       new_dict ={'name' :'mike', 'age' = 25}

      func(**new_dict}  # {'name' : 'mike', 'age' =25}

 

      **号在实参中会将字典的键值对打散成关键字参数的形式一一传入  

 

posted @ 2021-11-15 16:50  椰子皮0oo0  阅读(182)  评论(0)    收藏  举报
1