函数参数的传递和解包(Python入门二十二)

目录

函数的参数

实参的传递方式

不定长的参数(传递长度不固定的参数)

参数的解包(拆包)


函数的参数

    - 在定义函数时,可以在函数名后的()中定义数量不等的形参,
        多个形参之间使用,隔开
    - 形参(形式参数),定义形参就相当于在函数内部声明了变量,但是并不赋值
    - 实参(实际参数)
        - 如果函数定义时,指定了形参,那么在调用函数时也必须传递实参,
            实参将会赋值给对应的形参,简单来说,有几个形参就得传几个实参
    - 定义一个函数
       定义形参时,可以为形参指定默认值
       指定了默认值以后,如果用户传递了参数则默认值没有任何作用
       如果用户没有传递,则默认值就会生效

    - 函数在调用时,解析器不会检查实参的类型
      实参可以传递任意类型的对象

    - 在函数中对形参进行重新赋值,不会影响其他的变量
      如果形参执行的是一个对象,当我们通过形参去修改对象时会影响到所有指向该对象的变量

实参的传递方式

    - 位置参数
      位置参数就是将对应位置的实参复制给对应位置的形参
      第一个实参赋值给第一个形参,第二个实参赋值给第二个形参 。。。

    - 关键字参数
      关键字参数,可以不按照形参定义的顺序去传递,而直接根据参数名去传递参数
      位置参数和关键字参数可以混合使用
      混合使用关键字和位置参数时,必须将位置参数写到前面
      fn(1,c=30)

不定长的参数(传递长度不固定的参数)

     - 在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参
       它将会将所有的实参保存到一个元组中
       a,b,*c = (1,2,3,4,5,6)

     - *c会接受所有的位置实参,并且会将这些实参统一保存到一个元组中(装包)
       带星号的形参只能有一个
       带星号的参数,可以和其他参数配合使用
        第一个参数给a,第二个参数给b,剩下的都保存到c的元组中

    - 可变参数不是必须写在最后,但是注意,带*的参数后的所有参数,必须以关键字参数的形式传递

    - 如果在形参的开头直接写一个*,则要求我们的所有的参数必须以关键字参数的形式传递
      # def fn2(*,a,b,c):
            print('a =',a)
            print('b =',b)
            print('c =',c)
      # fn2(a=3,b=4,c=5)

    - *形参只能接收位置参数,而不能接收关键字参数

    - **形参可以接收其他的关键字参数,它会将这些参数统一保存到一个字典中
      字典的key就是参数的名字,字典的value就是参数的值
    - **形参只能有一个,并且必须写在所有参数的最后

参数的解包(拆包)

    - 创建一个元组
     t = (10,20,30)

    - 传递实参时,也可以在序列类型的参数前添加星号,这样他会自动将序列中的元素依次作为参数传递
      这里要求序列中元素的个数必须和形参的个数的一致
      fn4(*t)    

    - 创建一个字典
      d = {'a':100,'b':200,'c':300}
    - 通过 **来对一个字典进行解包操作
      fn4(**d)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小肝帝!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值