python3-函数的参数

系列文章目录

一、形参和实参

  • 形参(形式参数):指的是函数定义中定义的参数,它没有实际的值,相当于一个空的变量,等着值(实参)传入。

  • 实参(实际参数):指的是函数调用阶段传入的参数,可以是一个值,也可以是一个定义好的变量,甚至是函数调用(前提是该函数有返回值)。

    执行函数的时候,会将实参的内存地址绑定给形参。执行完毕,就立即解除绑定关系。

    def foo(a, b):  # 括号内为形参,执行函数时会绑定为实参
        result = a + b  # 函数体内也是形参,执行函数时会绑定为实参
        return result
    
    x = 2
    foo(1, x)  # 括号内为实参
    

二、位置参数和关键字参数

  • 位置参数:

    函数调用时,按照形参的顺序传入实参,使形参与实参一 一对应:

    def foo(a, b, c):
        pass
    
    foo(1, 2, 3)  # 这里1绑定给a,2绑定给b,3绑定给c。
    foo(3, 1, 2)  # 这里3绑定给a,1绑定给b,2绑定给c,全靠位置顺序来相互对应。
    
  • 关键字参数:

    函数调用时,直接按照 形参=实参 的形式,将实参绑定给形参,不需要按照位置顺序对应:

    def foo(a, b, c):
        pass
    
    foo(c=1, a=2, b=3)  # 直接绑定,形参与实参的位置对应关系就不重要了。
    
  • 混合使用的注意事项:

    1. 位置参数必须放在关键字参数之前
    2. 关键字参数后面不能再有位置参数
    3. 不能对同一个形参多次传值

三、默认参数

  • 一个参数在函数定义时,就已经赋值给它一个默认值,则称之为默认参数。

  • 在调用时,不给默认参数传参,则他会使用默认值;如果给默认参数传参,则使用传入的值。

    def foo(a, b=1):  # 给了b一个默认值:1
        pass
    
    foo(a=1)  # 没有给b传值,使用默认值:1
    

    注意:默认参数必须在所有位置参数的最右边!

  • 默认参数的默认值,是在函数定义阶段完成赋值的:

    a = '默认值'
    def foo(x=a):  # 定义时进行赋值
        print(x)
    
    a = '新的值'  # x已经赋值了:默认值,所以a的改变不影响x的值
    foo()  # 这里还是会打印:默认值
    

四、可变长参数

  • 定义:

    可变长参数可以接收若干实参。当我们不确定函数会接收到几个参数的时候,就可以使用可变参数。

    当调用时,传入的实参数量超过了形参的数量,多余的实参就会被可变长参数接收。

  • 格式:

    重点在于变量名前面的 * 符号,变量名可以随便取。

    def foo(a, *args, **kwargs): 
        pass
    
    • *接收若干位置参数,被打包成元组保存到变量args中。

    • **接收若干关键字参数,被打包成字典保存到变量kwargs中。

  • 实参解包:

    在调用时,可以用*将容器类型解包,直接以位置参数的形式赋值给形参:

    def foo(a, b, c):
        print(a, b, c)
    
    t = (1, 2, 3)
    foo(*t)  # 打印:1 2 3
    

    使用**可将字典 解包,以关键字参数的形式赋值给形参,但字典的键必须是形参的名字

    def foo(a, b, c):
        print(a, b, c)
    
    d = {'a': 1, 'b': 2, 'c': 3}
    foo(**d)  # 打印:1 2 3
    

下一篇

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花_城

你的鼓励就是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值