函数参数的两大分类
形式参数
函数定义阶段括号所写的参数
实际参数
函数调用阶段括号内传入的参数
形参与实参的关系
可以将形参看成是变量名,实参看成是变量值
函数调用阶段临时绑定,函数运行结束断开
形参的表现形式 变量名
实参的表现形式多种 (把握核心 数据值)
位置参数
位置参数
从左往右依次填入的参数
位置形参
函数定义阶段从左往右依次填入的变量名
位置实参
函数调用阶段从左往右依次填入的数据值
关键字实参(可以打破位置顺序)
函数调用阶段通过形参名=数据值的形式 传值
1.位置形参与位置实参在函数调用阶段,按照位置对应绑定
2.位置参数绑定的时候多一个不行少一个也不行
重点: 格式越简单越靠前,越复杂越靠后
可变长参数
1.函数无论传入多少位置参数都可以正常运行
可变长形参
def func(x,y,*a):
print(x,y,a)
func()
func(1)
func(1, 2, 3, 4, 5, 6, 7)
func(1,2)
func(1,2,3,4,5,6,7,8,9)
func(1,2)
*在形参中用于接收多余的位置参数 并组织成元组的行赋值给*后面的变量名
2.函数无论传入多少关键字都可以正常运行
def index(x, y, **b):
print(x, y, b)
index()
index(a=1,b=2,c=3,d=4)
index(y=2, x=1)
index(y=2, x=1, u=222, k=111, l=444)
**在形参中用于接收多余的关键字参数 并组织成字典的形式赋值给**后面的变量名
*使用
会将列表、元组内的数据打散
**使用
会将字典的键值对打散成关键字参数传入
名称空间
1.内置名称空间
print()
len()
2.全局名称空间
py文件中顶格编写的代码
name = 'jason'
def func():
pass
if 1:
a = 123
for i in range(10):
print(i)
while True:
a = 123
3.局部名称空间
函数体代码运行之后产生的都是局部名称空间
|