13 python-函数参数

1.  参数的可变类型和不可变类型

         可变类型:列表,字典,集合

         不可变类型:数值,字符串,元组,frozenset集合

      传递不可变类型参数

              

              执行结果是:

                    

              如果想要通过函数修改不可变变量时,可以通过return 语句将结果返回,重新赋值

                

             运行结果:

                   

   传递可变类型参数

               

              执行结果是:

              


2. 参数的分类:

      2.1必需参数(位置参数)

             必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样

               

                运行结果:

                        

            如果缺少必须的参数,运行将会报错

                

                  报错信息

                    


      2.2默认参数

                     函数声明时,参数设置了默认的表达式,函数调用时,则该参数可以不传值。

                         

                    运行结果:

                          

               默认参数的注意点:

                        1. 默认参数必须在所有必需参数之后

                        2. 默认参数要使用不可变变量(不可变变量一旦生成,则不能修改,因此函数内部无法对其进行修改,因此当函数再次被调用时,默认值没有被改变)


       2.3不定长参数

           有时,函数定义的时候不能确定参数的个数,因此可以通过不定长变变量来实现。不定长变量分为两种,

             *args:接收N个位置参数,转换成元组形式

                          

                因为函数会将多余的参数转换为元组,因此可以直接传递元组,元组之前添加 *

                     

                  运行结果:

                     

                  当通过变量传递元组时,需要在元组变量之前添加 *

                     

                        运行结果

                             

         2.4 关键字参数:

             关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

              **kwargs:接收N个关键字参数,转换成字典方式

                

          运行结果:

              

         因为关键字变量将传化成一个字典,因此,我们可以直接传递字典变量,字典之前添加 **,且字典键为字符串类型

              

             运行结果:
                     

                        

        通过字典变量传递参数,需要在变量之前添加**,并且字典的键只能是字符类型

              

             运行结果:

                 

                当字典中的键不是字符串时

 运行结果

 

关键字参数的另一个用法,可以打乱参数的传递顺序

           

     运行结果:

             可以通过指定关键字的名称,打乱原有的传递顺序,但是一定要注意,只有参数列表中定义的参数才可以打乱,其他参数,都传递给了**args变量


   2.5 命名关键字参数:

         关键参数可以接收任意(包括名称和个数)的包含参数名的参数,如果希望输入的关键字参数能够在我们指定的范围内,此时需要明确指出,这些参数则称为 命名关键字参数(命名关键字参数就是用来限制可以传递的关键字参数的范围)

       语法 

         2.5.1 def function(arg1, arg2, *, 命名关键字参数1, 命名关键字参数2...)

         示例

         

            运行结果

                  

        当不通过关键字传递参数时,系统则会报错

                    

          运行结果


 2.5.2 当关键字参数之前存在可变参数时:

       def function(arg1, arg2, *arg3, 关键字参数1,关键字参数2)

         

   运行结果

           

2.6 各种参数的传递顺序

  规则:def function(必须参数, 默认参数, 不定长参数, 命名关键字参数, 关键字参数)


     示例 1

  

运行结果

      

示例 2

      

    运行结果

         


2.7 通过关键字传递参数

      函数在定义的时候,大部分参数都有自己的名字,因此,在传递值的时候,我们可以使用“变量名=xx”的方式传递参数。

      示例

          示例通过变量名更改参数传递顺序

          

           运行结果

               

        

         复杂的示例

             

          运行结果:

               

              

         当函数参数中包含不定长参数时,通过变量名传递参数会提示错误

               

            

            如果没有可变参数的传入,是可以运行的

             

              运行结果

                  

            因此:通过变量名传递参数,要避免函数中包括不定长参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值