Python基础(6)-函数基础
1.什么是函数
函数的本质就是功能的封装。
函数的作用:
- 提升代码的重复利用率,避免重复开发相同代码
- 提高程序开发效率
- 便于程序维护
2.函数的定义
1)形参:
声明函数时()中的参数是形参
形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。
形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
2)实参:
调用函数时()中的参数是实参,
实参可以是常量、变量、表达式、函数等
实参在函数调用时,必须有确定的值,以便把这些值传送给形参。

3.函数参数
1)默认参数:
def stu_register(name,age,country,course):
print("----注册学生信息------")
print("姓名:",name)
print("age:",age)
print("国籍:",country)
print("课程:",course)
stu_register("王山炮",22,"CN","python_devops")
stu_register("张叫春",21,"CN","linux")
stu_register("刘老根",25,"CN","linux")
country 这个参数 基本都 是”CN”, 就像我们在网站上注册用户,像国籍这种信息,默认就会是 中国, 这就是通过默认参数实现的。
2)关键参数:
正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可(指定了参数名的参数就叫关键参数),关键参数必须放在位置参数(以位置顺序确定对应关系的参数)之后
def stu_register(name, age, course='PY' ,country='CN'):
print("----注册学生信息------")
print("姓名:", name)
print("age:", age)
print("国籍:", country)
print("课程:", course)
# 正确调用示范
stu_register("王山炮",course='PY', age=22,country='JP' )
# 错误调用示范
stu_register("王山炮",course='PY',22,country='JP' )
stu_register("王山炮",22,age=25,country='JP' )
3)非固定参数:
若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数
# *args 会把多传入的参数变成一个元组形式
def stu_register(name,age,*args):
print(name,age,args)
stu_register("Alex",22)
>>>输出结果:
#Alex 22 () #后面这个()就是args,只是因为没传值,所以为空
stu_register("Jack",32,"CN","Python")
>>>输出结果:
# Jack 32 ('CN', 'Python')
-----------------------------------------------------------------------------------------
# *kwargs 会把多传入的参数变成一个dict形式
def stu_register(name,age,*args,**kwargs):
print(name,age,args,kwargs)
stu_register("Alex",22)
>>>输出结果:
#Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空
stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong")
>>>输出结果:
# Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'}
4.函数返回值
函数在执行过程中只要遇到return语句,就会停止执行并返回结果。
def stu_register(name, age, course='PY' ,country='CN'):
print("----注册学生信息------")
print("姓名:", name)
print("age:", age)
print("国籍:", country)
print("课程:", course)
if age > 22:
return False
else:
return True
registriation_status = stu_register("王山炮",22,course="PY全栈开发",country='JP')
if registriation_status:
print("注册成功")
else:
print("too old to be a student.")
多个返回值:
def add(*args):
p = a + b
q = c + d
return p,q
if __name__=="__main__":
x,y = add(1,2,3,4) # x,y分别等于p,q
5.全局变量与局部变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

浙公网安备 33010602011771号