第三篇:函数之参数

函数的参数

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:

 

posted @ 2018-07-17 19:05  zhang.ning  阅读(278)  评论(0编辑  收藏  举报