python函数基础知识
目录
前言
什么是函数?函数就是执行特定任务和以完成特定功能的一段代码,那为什么要用到函数呢?是为了复用代码,隐藏实现细节,提高可维护性,提高可读性便于调试等等。那接下来介绍下函数的常见基础知识吧。
一、函数的定义
Ⅰ、函数的创建
函数的创建是通过def关键字来创建的。
这就是一个最简单的函数表示方式
函数的调用也很简单,就是直接:函数名(参数)例如:最后得出c等于3。
def main(a,b):
return a+b
c = main(10,20)
print(c)
Ⅱ、函数的参数
知道了函数是怎么创建的,那么接下来了解下什么是函数的参数和是怎么传递的吧。
函数的参数分为实参和形参。函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参。
def main(a,b = 10):
print(a + b)
main(20)
main(20,30)
运行结果
位置实参:根据形参对应的位置进行实参传递 参数一对一进行传递。
关键字实参:根据形参名称进行实参传递参数根据名字进行传递。
实参名称和形参名称可以不一致。
在函数使用过程中,进行参数的传递,如果是不可变对象,在函数体的修改不会影响实参的值。
如果是个数可变的位置参数:①定义函数时,无法确定传递的位置实参的个数,使用可变的位置参数。②使用*定义个数可变的位置形参。③结果为一个元组且可变的位置参数,只能是一个。
def main(a,b,c):
print(a + b +c)
main(1,2,3) #函数调用的参数传递,叫做位置传参
lis = [2,3,4]
main(*lis) #现在调用,将列表中的每个元素转换成位置实参传入
如果是个数可变的关键字形参: ①定义函数时,无法确定传递的关键字实参的个数时,使用可变的关键字形参。②使用**定义个数可变的关键字形参。③结果为一个字典且个数可变的关键字参数,只能是一个。
def main(a,b,c):
print(a + b +c)
main(a = 1,b = 2,c = 3) #关键字实参
lis = {'a':2,'b':3,'c':4}
main(**lis) #现在调用,将列表中的每个元素转换成关键字实参传入
注意:在一个函数定义过程中,既有个数可变的关键字形参,也有位置参数,位置参数必须放在关键字形参前面
二、函数的变量
变量的作用域:程序代码能访问该变量的区域。
根据变量的有效范围范围可分:局部变量:在函数内定义并使用的变量,只在函数内部有效,局部变量使用global声明,这个变量就会成全局变量。全局变量:函数体外定义的变量,可作用于函数内外。
a = 10 # 先定义一个全局变量
print(a) # 输出全局变量
def main():
global a # 利用global重新定义变量a
a = 100
print(a)
main()
print(a) #输出的是100,说明变量a已经被重新定义了,变成了全局变量
运行结果
三、递归函数(递推,回归)
如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数,递归组成部分:递归调用与递归终止条件
递归地调用过程:每递归调用一次函数,都会在栈内分配一个栈帧;每执行完一次函数,都会释放相应的空间
占用内存多,效率低;思路和代码简单
def mian(a):
if a == 1:
return 1
return a * mian(a - 1)
a = mian(3)
print(a) #输出6