1.函数参数的两大分类(形参、实参)
形式参数 函数在定义阶段括号中定义的变量名就是形式参数,简称'形参'
def index(a, b):
pass
# a,b 就是形参
实际参数 函数在调用阶段括号中写的变量值就是实际参数,简称'实参'
def index(a, b):
pass
index(1, 2)
# 1, 2就是函数的实参
形参和实参的关系 简单理解为把形参名=实参值-----------》变量名=变量值的形式来看
形参和实参是在函数调用阶段临时绑定,函数调用结束的时候,两者断开 """ 函数传参形参其实只有一种情况:变量名 但是,实参就好几种形式:变量值、变量名、函数的返回值等,本质:变量值
2.位置参数
位置参数:函数在括号中从左往右依次写入的参数就是位置参数
位置形参:在函数定义阶段括号中从左往右依次写入的变量名就是位置形参
位置实参:在函数调用阶段括号中从左往右依次传入的变量值就是位置实参
位置参数的特点:形参和实参是一一对应的
3.默认参数(默认形参,没有默认实参)
定义:
在函数定义阶段已经给形参赋予了变量值
1. 如果你在函数定义的时候,给形参赋予值之后,调用函数的时候,实参如果你没有给,就使用默认的
2. 如果你在函数调用的时候,给了值,就使用你给的值,不在使用默认的
4.可变长参数
*号在形参中的使用:它会接收多余的位置参数,然后组装成元组的形式赋值给*号后面的变量名
def index(x, y, m, n, *a):
print(x, y, m, n, a) # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
index(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
**号在形参中得使用:会接收多余的关键字参数,并且组装成字典的形式赋值给**号后面的变量名
def index(x, y, q, z, **a):
# print(a) # {'x': 1, 'y': 2, 'm': 3, 'n': 4, 'z': 5, 'p': 6, 'q': 7}
print(x, y, a) # {'m': 3, 'n': 4, 'z': 5, 'p': 6, 'q': 7}
print(x, y, q, a) # {'m': 3, 'n': 4, 'z': 5, 'p': 6}
index(x=1, y=2, m=3, n=4, z=5, p=6, q=7)
args:arguments 位置参数
kwargs: keywords arguments 关键字参数