函数
一、函数的定义
函数就是执行特定任何用来完成特定功能的一段代码。
复用代码
隐藏实现细节
提高可维护性
提高可读性便于调试
格式:
def 函数名(【输入参数】):
函数体
【return XXX】
def calc(a, b): #a,b 为形参 c = a + b return c result = calc(10, 20) print(result)
代码实现过程:代码运行从第一行开始(即def处时),发现为函数,跳转到函数定义处(即result),将参数10,20 传递到函数中,开始执行c = a+b,将执行结果赋值给result,打印输出。
形参 实参 与C语言同样
位置实参:根据形参对应的位置进行实参传递
关键字实参:根据形参名称进行实参传递 calc(b=20,a=10,等号左边的名称称为关键字)
二、函数参数传递的内存分析
形式参数和实际参数的名称可以不同
def fun(arg1,arg2): print('arg1',arg1) print('arg2',arg2) arg1=100 arg2.append(10) print('arg1',arg1) print('arg2',arg2) n1 = 11 n2 = [22,33,44] fun(n1,n2) #将位置传参,arg1,arg2,是函数定义处的形参,n1,n2是函数调用处的实参。
在函数调用过程中,进行参数的传递,如果是不可变对象,在函数体的修改不会影响实参的值,arg1的修改为100,不会影响n1的值
如果是可变对象,在函数体的修改会影响到实参的值,arg2的修改,append(10)会影响到n2 的值
#判断奇偶数
def fun(num): odd=[]#存奇数 even =[] #存偶数 for i in num: if i%2: odd.append(i) else: even.append(i) return odd,even #函数调用 lst=[10,29,32,43,53] print(fun(lst))
结果:
([29, 43, 53], [10, 32])
函数的返回值
(1)如果函数没有返回值,则return可以省略不写
(2)如果函数的返回值是一个,则直接返回类型
(3)如果函数的返回值是多个,返回的结果为元组
def fun1(): print('nice!') fun1() def fun2(): return 'hello','world' print(fun2()) def fun3(): return 'hello' res = fun3() print(res)
函数在定义时,是否需要返回值,视情况而定。
三、函数的参数定义
函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参。
个数可变的位置参数:结果是元组
个数可变的关键字形参:结果是字典
可变的参数只能有一个
四、变量的作用域
程序代码能够访问该变量的区域
局部变量:在函数内定义并使用的变量,只在函数内部有效
全局变量:函数体外定义的变量,可作用于函数内外
局部变量使用global声明,这个变量实际上就变成了全局变量
五、递归函数
在函数的函数体内调用了它自己本身,就称为递归函数(没错,就是俄罗斯套娃)
优缺点
(1)缺点:占用内存多,效率低下
(2)优点:思路和代码简单
#递归求和
def fun(n): if n==1: return 1 else: return n*fun(n-1) print(fun(6))
#斐波那契数列 def fun(n): if n==1: return 1 elif n==2: return 1 else: return fun(n-1)+fun(n-2) print(fun(6))

浙公网安备 33010602011771号