函数的参数

1. 函数参数的两大分类

1. 形式参数
	在'函数定义阶段'括号内依次写入的变量名就叫形式参数,简称"形参"
    	def index(a,b,c,d,e):
            pass
        # a,b就称之为是函数的形参

2. 实际参数
	在'函数调用阶段'括号内依次传入的变量值就叫实际参数,简称"实参"
    	index(1, 2, 3)
        # 1,2,3就称之为是函数的实参
"""
	形式参数和实际参数之间的关系
		把实际参数传递给形式参数,以形参=实参的形式传入----->以变量名=变量值的形式传入
		形参就相当于是变量名,实参相当于是变量值
	形参和实参在函数调用阶段临时绑定,当函数调用完毕,两者断开
"""

函数的形参形式其实只有一种,那就是变量名
函数的实参有很多中方式,但是抓住本质:就是数据值

2.位置参数和关键字参数(核心)

位置参数
	在函数括号内依次写入的参数就是位置参数
位置形参
	在函数'定义阶段'括号内从'左往右依次'写入的'变量名'就是位置形参
    def index(a,b,c,d):
        pass
    # a,b,c,d就是位置形参
位置实参
	在函数的'调用阶段'括号内从'左往右依次'写入的'数据值'就是位置实参
    index(1,2,3,4)
    # 1,2,3,4就是位置实参

关键字实参:
	# 可以打破原来的顺序传递,就是传递参数不在按照顺序传递了
# register(age=18, name='kevin', gender='female')
# register('kevin', age=18, 'female') # 不行,位置参数不能跟在关键字的后面
# register('kevin', age=18, gender='female') # 行
# register(age=18, 'kevin', gender='female') # 不行
# register('kevin', name=18, gender='female') # 不行
'''位置参数不能写在关键字的后面,越简单的参数越靠前'''

3. 默认参数

# 前提是默认的形参
	在函数定义阶段就可以给参数赋值了
    	1. 如果你在函数调用阶段,没有给形参传值,那就是要默认的
        2. 如果你在函数调用阶段,给形参传值了,就是要你传的值
eg:让你写一个注册学员的功能
"""
两个角度理解
    角度1:
        在函数定义阶段,参数的值就已经固定死了,不能修改
    角度2:
        根据变量名和变量值在内存中关系来判断
"""

4.可变长参数

1. 不管我在调用函数的时候,传入多少个位置参数,都能正常运行
def index(name, password, x, y, *a):
    print(name, password, a, x, y)
    # print(a[0])
    # print(a[1])
    # print(a[2])
2. 不管我们在调用函数的时候,传入多少个关键字参数,都能正常运行
"""
**号在形参中的使用:
    接收多余的关键字参数
"""
3. 不管我传入多少个位置参数和关键字参数,函数都能正常运行
def index(*a, **b):
    print(a, b)
"""
注意:
    *号和**号后面的变量可以任意起名,遵循变量的命名即可
    在python中,推荐使用
        *args: arguments  位置参数
        **kwargs: keyword arguments 关键字参数
    以后在定义函数的时候,如果我们不知道要传递多少个参数,我们就可以如下定义
        def index(*args, **kwargs):
            pass
"""
'''
*在实参中的使用,就是把列表、元组中的一个一个元素打散,然后以位置参数的形式传递

**号在实参中的使用:把字典打散成关键字的形式进行传递
'''

posted @ 2023-10-05 20:40  苙萨汗  阅读(112)  评论(0)    收藏  举报