函数的定义
将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名即可
函数的特性
1.减少重复代码
2.使程序变得可扩展
3.使程序变得易维护
语言定义
def hello():
pass # 常用于占位,方便后续函数内部逻辑的编写
hello() # 直接调用这个函数
函数的参数(位置参数>默认参数/关键参数)
形参
函数的临时变量
def calc(x,y)
X,y就相当于这个函数的形参,只是在函数内部生效
实参
calc(10,20)
这里的10和20就是实参,我们去给x,y一个实际的参数
位置参数
函数中的形参其实就是位置参数,这里可以有多个,这里注意了,有几个形参就要有几个实参,哪怕你填了不去用它,不填函数就会报错!!!
当我们去填写实参时,会发现他们和形参是一一对应的关系,不会说是什么赋值毫无章法
默认参数
默认参数必须在位置参数的后面定义,否则程序会出错
Def calc(x,y,z=10)
关键参数
使用关键参数就无须考虑位置的问题,即使变量赋值位置交换也可以
Calc(y=10,x=20,z=30)
非固定参数
在做项目的过程中,你不知道这个函数会不会需要新的参数,这个时候就需要非固定参数了。
def cala(x,y,*args,**kwargs)
Print(args,kwargs)
Cala(2,30,55,77,z=99)
一般来说,多余的位置参数会到args(元组格式)里,关键参数会到kwargs(字典格式)里
函数的返回值与作用域
什么时候需要函数的返回值呢?当函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句把结果返回
def cala(x, y):
c = x ** y
return c
print(cala(10, 20))
在函数的执行过程中,遇到return后就会停止执行并返回结果,后面的代码就不会去执行了!!!
如果没有return,函数会默认返回一个None
如果是返回多个值,返回值会以元组的形式呈现
def cala(x, y):
c = x ** y
return c,10,30,50
print(cala(10, 20))
函数的全局变量global和局部local变量
函数中定义就是局部变量,程序中一开始定义的就是全局变量
局部变量的作用域就是定义该变量的函数,全局变量的作用域就是整个程序
变量的查找顺序是局部>全局
在函数内不能直接修改全局变量
如果一定要在函数内部修改全局变量呢?
z = 999
def cala(x, y):
global z # 声明一个全局变量
z = 1001
c = x ** y
print(globals()) # 打印所有的全局变量
print(locals()) # 打印所有的局部变量
print(z)
return c
print(cala(10, 20),z)