zoukankan      html  css  js  c++  java
  • 第三篇:函数之参数

    函数的参数

    1、函数的参数分为两大类:形参与实参
    形参:指的是在定义函数时,括号指定的参数,本质就是变量名;
    实参:指的是在调用函数时,括号内传入的值,本质就是值。

    两者关系:只有在调用函数时才会在函数体内发生实参(值)与形参(变量名)的绑定关系,该绑定关系只有在调用函数时临时生效,调用函数结束后就解除绑定。

    1 def foo(x, y):  # x=1,y=2
    2     print(x)
    3     print(y)
    4 foo(1, 2)

     2、位置参数

          2.1 位置形参:在定义函数时,按照从左到右的顺序依次定义的的形参称为位置形参,定义位置形参,调用的时候必须传值,必须一一对应,多,少都不行。

          2.2 位置实参:在调用函数时,按照从左到右的顺序依次传入的值,在传值的按照顺序与形参一一对应。

    3.关键字实参:在调用函数时,按照key=value的格式定义的实参,1.传值的时候,顺序可以完全打乱,并且可以混合使用关键字实参与位置实参,但是位置实参必须在关键字实参的左边,且不能为一个形参重复传值。

     3、默认参数

                    在定义函数的时候,就已经为某些参数绑值,称之为默认参数。

                   注意: 1.定义阶段已经有值,调用阶段可以不用传值

                               2.默认形参必须放到位置形参的后面;

                               3.默认形参的值只在定义阶段生效一次,在函数定义后发生的改动无效;

                               4.默认参数值通常为不可变类型。

    1 def register(name,age,sex='female'):
    2     print(name,sex,age)
    3 
    4 register('wxx',38) #wxx female 38
    5 register('alex',73,'male') #alex male 73

     

     4.可变长度的参数

                      指的是在调用函数时,函数的参数个数不固定,然而实参终究是以形参传值的,针对两种形式参数个数不固定,对应着形参必须有两种解决方案:*、**

                      来处理溢出位置实参与溢出的关键字实参。

         4.1  * 会将溢出的位置实参存成元组,然后赋值给紧跟其他的变量名

                4.1.1形参中带*

                 

                4.1.2  形参中带*,实参中带*,窍门:但凡碰到实参中带*,都将其打散成位置实参,然后考虑传值。

                      

                   4.1.3 实参中带*,窍门:但凡碰到实参中带*,都将其打散成位置参数,然后考虑传值

                         

          4.2. ** 会将溢出的关键字实参存成字典,然后赋值给紧跟其后的变量名

                  4.2.1  形参中带**

                            

                    4.2.2  形参中带**,实参中带**, 窍门:但凡碰到实参中带**,都先将其打散成关键字实参,然后考虑传值

                                   

                       4.2.3 实参中带**           

    1 # def foo(x,y,z):
    2 #     print(x,y,z)
    3 #
    4 # # foo(1,**{'a':1,'b':2,'y':111,'z':222}) #foo(1,b=2,a=1,y=111,z=222)
    5 # # foo(1,**{'y':111,'z':222}) #foo(1,y=111,z=222)
    6 # foo(**{'z':1,'y':2,'x':3}) #foo(y=2,z=1,x=3)

     case:

  • 相关阅读:
    Oracle11g 修改内存配置
    七.从按键输入到GPIO通用驱动
    三.C语言版本的LED驱动试验
    五.NXP恩智浦官方SDK使用
    前期准备——1.Makefile的使用及基本语法
    八.主频及时钟配置
    四.指针形式对寄存器进行操作(类似STM32效果)
    二.I.MX6U的启动方式
    六.蜂鸣器驱动
    六.项目的BSP工程管理
  • 原文地址:https://www.cnblogs.com/yspass/p/9325294.html
Copyright © 2011-2022 走看看