混合传递
位置参数,默认参数。*args。关键字-only参数。**kwargs
仅关键字参数
定义优先级
def func(a,b=2,*args,c,**kwargs):
print(a,b,args,c,kwargs)
错误调用1:缺少必要关键字参数
错误调用2:重复传参
错误调用3: 位置参数在关键字参数后
返回值
return 语句
def add_student(name, age, grade, student_id =None, students=None):
if student_id is None:
student_id = len(students) + 1001
student = {
"name":name,
"age":age,
"grade":grade,
"id":student_id
}
students.append(student)
print(f"成功添加学生:{name}(id:{student_id})")
add_student("xiaoming",25,25)
print(students)
print(c)
def move(x,y,step):
nx = x + step
ny = y - step
return nx,ny
# 一个变量接收两个返回值
result = move(100,100,60)
print(result)
print("----------------两个变量接收一个返回值-----------------")
a,b, = move(100,100,60)
print(f"a={a},b={b}")
变量作用域
# 变量不能再程序任何位置进行访问
print("--------------变量作用域--------------")
# -----------------局部变量--------------------
# 1.函数内部定义变量,内部能访问,外部不行
def test_one():
number = 10 #局部变量
print(number) #内部可以访问局部变量
test_one()
#print(number) #外部无法访问局部变量
# 2.函数间的局部变量相互独立、互不影响
def test_two():
number = 20
print(number)
tese_two()
全局变量
# 1,全局变量可以在整个程序进行访问
number = 10
def test_one():
print(number) # 内部可以访问全局变量
test_one()
print(number)
# 2.全局变量再函数内部只能访问,不能修改
number = number+10
def test_two():
print(number)
number = number + 1
test_two()
print(number)