python之函数的参数

函数参数的两大分类

函数参数可形式参数(形参)和实际参数(实参)两大类
形参:
    在函数定义阶段括号内所填写的参数
    	def func(a,b):
            pass
        # a 和 b就是形参
实参:
    在函数调用阶段括号内所填写的参数
    	func(1,2)
        # 1和2就是实参
"""
形参与实参的关系
	我们可以将形参看成是变量名 实参看成是变量值
		两者在函数调用阶段临时绑定 函数运行结束断开	
	
形参的表现形式只有一种就是变量名
实参的表现形式有很多种(但是把握核心 就是 数据值)
"""             

在这里插入图片描述

位置参数

按照从左往右的顺序依次填入的参数
位置形参:
    在函数定义阶段括号内按照从左往右的循序依次填入的变量名
        def func(a, b):
            pass
位置实参:
    在函数调用阶段括号内按照从左往右的循序依次传入的数据值
    	func(1, 2)
"""
1.位置形参与位置实参在函数调用阶段 按照位置一一对应绑定
2.位置参数在绑定的时候多一个不行少一个也不行
"""

关键字参数

默认参数(默认形参)
	1.该形参在函数调用阶段如果不给值,贼使用默认的
    2.该形参在函数调用阶段可以继续给值 给值后使用给定的值
    def func(a,b=2):
        print(a,b)
    fun(1)  # 1,2
    func(2,3)  # 2, 3
关键字实参(可以打破位置顺序)
	在函数调用阶段通过形参名=数据值的方式指名道姓的传值 
"""
位置形参与默认值形参在定义的时候
	位置形参必须在默认值形参的前面
	位置实参必须在关键字实参的前面
"""  

在这里插入图片描述

可变长参数

可变长参数可以按照位置参数和关键字参数分为两种
1. 可变长位置参数
	函数无论传入多少位置参数都可以正常运行
2. 可变长关键字参数
	函数无论传入多少关键字参数都可以正常运行

可变长位置参数

1. 可变长位置形参
	def func(x,y,*args):
        print(x, y, arg)
    func()  # ()
    func(1)  # 1, ()
    func(1, 2, 3, 4, 5)  # 1, 2, (3, 4, 5)
"""
*号在形参中的使用
    用于接收多余的位置参数 并组织成元组的形式赋值给*号后面的变量名
"""	
2. 可变长位置实参(*在实参中的使用)
	def index(*args):
        print(arg)
    l1 = [11,22,33,44,55,66,77,88,99]
    index(*l1)  # index(11,22,33,44,55,66,77,88,99)
    # (11,22,33,44,55,66,77,88,99)
"""
	*号在实参中使用会将列表,元组内的元素打散成位置参数的形式一一传值
"""

在这里插入图片描述

可变长关键字参数

1. 可变长关键字形参
	def func(x, y, **kwargs):
        print(x, y, kwargs)
    func()  # {}
    func(x=1, y=2)  # 1, 2, {}
    func(x=1,y=2,c=3,z=4,b=5)  # 1, 2, {'c':3,'z':4,'b':5}    
"""
**号在形参中的使用
    用于接收多余的关键字参数 并组织成字典的形式赋值给**号后面的变量名
"""    
2. 可变长关键字实参
	def index(**kwargs):
        print(kwargs)
    d1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    index(**d1)  # index(a=1,b=2,c=3,d=4)
    # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
"""
	**号在实参中使用会将字典内的元素打散成关键字参数的形式一一传值
"""    

加强版可变长参数

1. 无论函数传入多少位置参数和关键字参数都可以正常运行
def func(*args, **kwargs):
    print(args, kwargs)

func()  # () {}
func(1,2,3,4)  # (1, 2, 3, 4) {}
func(a=1, b=2, c=3, d=4)  # () {'a': 1,'b': 2,'c': 3,'d':4}
func(1,2,3,a=4,b=5,c=6)  # (1, 2, 3) {'a': 4,'b': 5,'c': 6}
"""
墨守成规
    可变长形参 *与**后面的变量名其实是可以随便定义的
    但是python中推荐使用
        *args  
        **kwargs 
"""   

在这里插入图片描述

函数参数的补充(了解)

命名关键字参数
	def func(a,b,*,c,d):
        print(a, b, c, d)
   	func(1,2,3,4)  # 报错
    func(1,2,3,d=5,c=4)  # 1 2 4 5
"""
c, d在传值时必须以关键字参数的形式传入,不然就是报错,因为多出来位置参数都会被*号接收 
ps:基本不用,也基本见不着
"""

总结

函数参数可以从定义和调用阶段分为两个类型: 形参和实参
也可以从传入方式分为两个类型; 位置参数和关键字参数
使用时应当遵循以下原则:
    1.位置参数必须在关键字参数前面,*必须在**前面
    2.*** 后面可以时任意变量名 但是规范是 args 和 kwargs
即: ()
	def func(a,b,*args,c=1,d=2,**kwags):
        pass
    func(a,b,*args,c=1,d=2,**kwags) 
小窍门:
    '''格式越简单的越靠前 格式越复杂的越靠后'''

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

go&Python

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

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

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

打赏作者

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

抵扣说明:

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

余额充值